国产 无码 综合区,色欲AV无码国产永久播放,无码天堂亚洲国产AV,国产日韩欧美女同一区二区

如何查看Android 包依賴關(guān)系&gradle依賴管理

這篇具有很好參考價(jià)值的文章主要介紹了如何查看Android 包依賴關(guān)系&gradle依賴管理。希望對大家有所幫助。如果存在錯(cuò)誤或未考慮完全的地方,請大家不吝賜教,您也可以點(diǎn)擊"舉報(bào)違法"按鈕提交疑問。

關(guān)于作者:CSDN內(nèi)容合伙人、技術(shù)專家, 從零開始做日活千萬級APP。
專注于分享各領(lǐng)域原創(chuàng)系列文章 ,擅長java后端、移動(dòng)開發(fā)、商業(yè)變現(xiàn)、人工智能等,希望大家多多支持。

java 安卓依賴,工具-效率,Android基礎(chǔ),android,依賴

一、導(dǎo)讀

我們繼續(xù)總結(jié)學(xué)習(xí),溫故知新。

二、概覽

本文講述如何查看 android 依賴庫關(guān)系。

三、查看依賴關(guān)系

3.1 方式一

Tasks->help->dependencies
可以看項(xiàng)目中的依賴庫以及依賴庫的導(dǎo)入關(guān)系
java 安卓依賴,工具-效率,Android基礎(chǔ),android,依賴

3.2 方式二

Tasks->android->androidDependencies
可以看項(xiàng)目中的依賴庫以及依賴庫的導(dǎo)入關(guān)系
java 安卓依賴,工具-效率,Android基礎(chǔ),android,依賴

以上兩種方式會輸出如下日志:

_internal-unified-test-platform-android-device-provider-gradle - A configuration to resolve the Unified Test Platform dependencies.
\--- com.android.tools.utp:android-device-provider-gradle:30.2.0
     +--- com.android.tools:common:30.2.0
     |    +--- com.android.tools:annotations:30.2.0
     |    +--- com.google.guava:guava:30.1-jre
     |    |    +--- com.google.guava:failureaccess:1.0.1
     |    |    +--- com.google.guava:listenablefuture:9999.0-empty-to-avoid-conflict-with-guava
     |    |    +--- com.google.code.findbugs:jsr305:3.0.2
     |    |    +--- org.checkerframework:checker-qual:3.5.0
     |    |    +--- com.google.errorprone:error_prone_annotations:2.3.4
     |    |    \--- com.google.j2objc:j2objc-annotations:1.3
     |    +--- net.java.dev.jna:jna-platform:5.6.0
     |    |    \--- net.java.dev.jna:jna:5.6.0
     |    \--- org.jetbrains.kotlin:kotlin-stdlib-jdk8:1.5.31
     |         +--- org.jetbrains.kotlin:kotlin-stdlib:1.5.31
     |         |    +--- org.jetbrains:annotations:13.0
     |         |    \--- org.jetbrains.kotlin:kotlin-stdlib-common:1.5.31
     |         \--- org.jetbrains.kotlin:kotlin-stdlib-jdk7:1.5.31
     |              \--- org.jetbrains.kotlin:kotlin-stdlib:1.5.31 (*)
     +--- org.jetbrains.kotlin:kotlin-stdlib-jdk8:1.5.31 (*)
     +--- com.google.protobuf:protobuf-java:3.10.0
     +--- com.android.tools.utp:android-device-provider-gradle-proto:30.2.0
     |    \--- com.google.protobuf:protobuf-java:3.10.0
     \--- com.google.testing.platform:android-device-provider-local:0.0.8-alpha07

3.3 方式三

./gradlew :app:dependencies >log.txt
通過命令行,將輸入保存到日志,更方便查看。

四、移除重復(fù)依賴

項(xiàng)目中使用了很多第三方庫,很容易引入同名不同版本的庫,針對于這種情況,我們需要使用exclude語句在gradle文件里移除指定的依賴庫。

    implementation("com.kuaishou.koom:koom-java-leak:2.1.0") {
        exclude group: "com.google.android.material"
    }
    
    
    compileOnly ("com.xx:yy:$er_version") {
        exclude group:"com.xx", module: "common-x"
    }

當(dāng)我們移除之后,就要檢查代碼是否生效,
可在android studio的project項(xiàng)目查看方式下,找到External Libraries目錄。在這個(gè)目錄下查看多余的依賴庫是否已經(jīng)被移除。
如下圖:
java 安卓依賴,工具-效率,Android基礎(chǔ),android,依賴

強(qiáng)制指定整個(gè)項(xiàng)目依賴固定版本的第三方庫

當(dāng)然上面的寫法可能會比較麻煩,因?yàn)槊總€(gè)相關(guān)的三方庫都要寫一下,所以我們可以強(qiáng)制指定整個(gè)項(xiàng)目依賴固定版本的第三方庫,避免重復(fù)依賴不同版本相同庫。
方法如下:項(xiàng)目build文件下
java 安卓依賴,工具-效率,Android基礎(chǔ),android,依賴

configurations.all {
    resolutionStrategy {
        force "com.kuaishou.koom:koom-java-leak:2.2.2"
    }
}

另外,直接通過混淆可以使不使用的文件不打包進(jìn)去。

通過 ModuleDependency#transitive 依賴傳遞設(shè)置

在 dependencies 中配置依賴時(shí) , implementation 依賴配置 后 , 可以 在閉包中 使用 transitive 函數(shù) 設(shè)置依賴是否傳遞 ,

如果為 transitive 函數(shù)設(shè)置 true 參數(shù) , 則 包含傳遞依賴 ;
如果為 transitive 函數(shù)設(shè)置 false 參數(shù) , 則 排除傳遞依賴 ;

dependencies {

    implementation ('com.kuaishou.koom:koom-java-leak:2.2.2') {
        transitive true // 包括傳遞依賴, 如果設(shè)置為 false 則排除傳遞依賴
    }
}

五、查找Gradle依賴中不再使用的組件(無用的庫)

隨著android工程的不斷迭代,gradle配置變得越發(fā)臃腫,dependencies中可能存在很多已經(jīng)不使用的公共庫,嚴(yán)重時(shí)可能拖慢編譯速度。

給大家推薦一個(gè)工具,可以幫助我們發(fā)現(xiàn)這些不再使用的組件
工具庫 github

使用方式 1

root build.gradle

plugins {
  id 'com.autonomousapps.dependency-analysis' version "${latest_version}"
}

settings.gradle

pluginManagement {
  repositories {
    mavenCentral()
    
    maven { url "https://oss.sonatype.org/content/repositories/snapshots/" }
    
    gradlePluginPortal()
  }
}

使用方式 2

root build.gradle

buildscript {
  repositories {
    mavenCentral()
    
    maven { url "https://oss.sonatype.org/content/repositories/snapshots/" }
  }
  
  dependencies {
    classpath "com.autonomousapps:dependency-analysis-gradle-plugin:${latest_version}"
  }
}

apply plugin: "com.autonomousapps.dependency-analysis"

添加完依賴后,進(jìn)行同步,會出現(xiàn)如下所示的任務(wù):
java 安卓依賴,工具-效率,Android基礎(chǔ),android,依賴

使用

執(zhí)行buildHealth 或者其他子task,幫助我們從不同維度生成對gradle配置的檢查結(jié)果,包括但不限于:

  • 發(fā)現(xiàn)所有依賴的組件,包括直接依賴和傳遞依賴
  • 發(fā)現(xiàn)所以不使用的直接依賴組件
  • 發(fā)現(xiàn)所有的二進(jìn)制依賴(ABI)
  • gradle的優(yōu)化建議,例如依賴方式的修改建議等

假設(shè)我們點(diǎn)擊了 buildHealth任務(wù),在命令行中會有結(jié)果輸出


> Task :buildHealth
There were dependency violations. See report at E:\jnitest1\build\reports\dependency-analysis\build-health-report.txt 

內(nèi)容如下:

Advice for :app
Unused dependencies which should be removed:
  androidTestImplementation 'androidx.test.espresso:espresso-core:3.4.0'
  implementation 'com.google.code.gson:gson:2.8.9'

These transitive dependencies should be declared directly:
  androidTestImplementation 'androidx.test:monitor:1.4.0'

Existing dependencies which should be modified to be as indicated:
  androidTestImplementation 'junit:junit:4.12' (was testImplementation)

同時(shí)在每個(gè)module的build目錄下,也會有reports目錄
jnitest1\app\build\reports
如下圖:
java 安卓依賴,工具-效率,Android基礎(chǔ),android,依賴

原理:
想要查找沒有依賴的組件,自然要從代碼上進(jìn)行靜態(tài)掃描。
插件工具借助ANTLR對編譯后的字節(jié)碼進(jìn)行分析:收集項(xiàng)目中使用到的class以及組件實(shí)際提供的class,通過對比就可以找到不再使用的組件(沒有class被工程使用)
https://dev.to/autonomousapps/dependency-analysis-gradle-plugin-using-bytecode-analysis-to-find-unused-dependencies-509n

參考如何查找Gradle依賴中不再使用的組件

也可以使用lint來檢查,
通過依次選擇 code > Analyze Code > Run Inspection By Name
然后在對話框中輸入 unused library

六、 推薦閱讀

Java 專欄

SQL 專欄

數(shù)據(jù)結(jié)構(gòu)與算法

Android學(xué)習(xí)專欄

java 安卓依賴,工具-效率,Android基礎(chǔ),android,依賴

未經(jīng)允許不得轉(zhuǎn)載文章來源地址http://www.zghlxwxcb.cn/news/detail-801288.html

到了這里,關(guān)于如何查看Android 包依賴關(guān)系&gradle依賴管理的文章就介紹完了。如果您還想了解更多內(nèi)容,請?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!

本文來自互聯(lián)網(wǎng)用戶投稿,該文觀點(diǎn)僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務(wù),不擁有所有權(quán),不承擔(dān)相關(guān)法律責(zé)任。如若轉(zhuǎn)載,請注明出處: 如若內(nèi)容造成侵權(quán)/違法違規(guī)/事實(shí)不符,請點(diǎn)擊違法舉報(bào)進(jìn)行投訴反饋,一經(jīng)查實(shí),立即刪除!

領(lǐng)支付寶紅包贊助服務(wù)器費(fèi)用

相關(guān)文章

  • 如何在IDEA中查看依賴關(guān)系

    如何在IDEA中查看依賴關(guān)系

    Maven提供了mvn dependency:tree來查看依賴關(guān)系,而IDE往往提供了更加便利的方式,比如Eclipse或者IDEA都有類似的功能,這篇文章簡單說明一下如何在IDEA中查看依賴關(guān)系。 點(diǎn)擊Maven Project視圖,如果此視圖沒有打開,請使用View菜單將其打開。 選中相應(yīng)的項(xiàng)目,在右鍵菜單中選擇 然

    2024年02月12日
    瀏覽(15)
  • 【Android Gradle 插件】Android 依賴管理 ④ ( 常用依賴配置分析 | implementation 依賴作用 | api 依賴作用 | compileOnly 依賴作用 )

    在本篇博客中逐一分析以下依賴配置 : implementation api compileOnly runtimeOnly annotationProcessor lintChecks lintPublish apk ( 已廢棄 ) compile ( 已廢棄 ) provided ( 已廢棄 ) Android 依賴參考文檔 : https://developer.android.google.cn/studio/build/dependencies compile 依賴作用: 編譯打包 : 為 自己的項(xiàng)目模塊 添加依

    2024年02月02日
    瀏覽(25)
  • 在android開發(fā)環(huán)境中,gradle 版本和 java 版本的對應(yīng)關(guān)系

    在android開發(fā)環(huán)境中,gradle 版本和 java 版本的對應(yīng)關(guān)系 Gradle 版本 所支持的 JDK 版本 6.x JDK 8、JDK 11(僅限 Gradle 6.7 及更高版本) 5.x JDK 7、JDK 8 4.x JDK 6、JDK 7、JDK 8 3.x JDK 6、JDK 7、JDK 8 2.x JDK 6、JDK 7、JDK 8 1.x JDK 6、JDK 7

    2024年02月09日
    瀏覽(22)
  • Mac查看Gradle安裝位置和依賴包存放路徑

    Mac查看Gradle安裝位置和依賴包存放路徑 Gradle是一個(gè)功能強(qiáng)大的構(gòu)建工具,廣泛用于Java和Android項(xiàng)目的構(gòu)建和管理。在Mac操作系統(tǒng)上,我們可以通過以下步驟來查看Gradle的安裝位置以及依賴包的存放路徑。 Gradle安裝位置 打開終端:你可以通過在Launchpad中找到“終端”應(yīng)用程序

    2024年02月03日
    瀏覽(29)
  • Android Gradle Plugin、Gradle、Android Studio版本關(guān)系

    參考鏈接 插件版本 所需的最低 Gradle 版本 8.3 8.4 8.2 8.2 8.1 8.0 8.0 8.0 7.4 7.5 7.3 7.4 7.2 7.3.3 7.1 7.2 7.0 7.0 4.2.0+ 6.7.1 4.1.0+ 6.5+ 4.0.0+ 6.1.1+ 3.6.0 - 3.6.4 5.6.4+ 3.5.0 - 3.5.4 5.4.1+ 3.4.0 - 3.4.3 5.1.1+ 3.3.0 - 3.3.3 4.10.1+ 3.2.0 - 3.2.1 4.6+ 3.1.0+ 4.4+ 3.0.0+ 4.1+ 2.3.0+ 3.3+ 2.1.3 - 2.2.3 2.14.1 - 3.5 2.0.0 - 2.1.2 2.10 - 2.1

    2024年02月20日
    瀏覽(22)
  • IDEA 查看 Maven 依賴關(guān)系圖

    IDEA 查看 Maven 依賴關(guān)系圖

    Maven提供了 mvn dependency:tree 來查看依賴關(guān)系,而IDE往往提供了更加便利的方式,比如Eclipse或者IDEA都有類似的功能,這篇文章簡單說明一下如何在IDEA中查看依賴關(guān)系。 點(diǎn)擊 Maven Project 視圖,如果此視圖沒有打開,請使用View菜單將其打開。 選中相應(yīng)的項(xiàng)目,在右鍵菜單中選擇

    2024年02月16日
    瀏覽(17)
  • vscode 查看某個(gè)組件的引用和依賴關(guān)系

    vscode 查看某個(gè)組件的引用和依賴關(guān)系

    安裝vscode插件 Dependency Cruiser Extension 安裝完成后,在任何一個(gè)文件處右鍵,選擇view dependencies,即可查看依賴關(guān)系。 如,我們查看了AppMain.vue這個(gè)文件的引用和被引用文件。如下圖: 其實(shí)這個(gè)插件只能查看所選文件的位置、以及它內(nèi)部所引用的文件和內(nèi)容;而沒有體現(xiàn)它被哪

    2024年02月02日
    瀏覽(19)
  • Android、Android Studio 和 Gradle 是如何使用 Java 的

    Android、Android Studio 和 Gradle 是如何使用 Java 的

    可以肯定地說,每個(gè)人都知道 Android 使用 Java。然而,“使用 Java ”的含義范圍相當(dāng)大。因此,在本文中,我將介紹 Android 設(shè)備和我們用于 Android 開發(fā)的各種工具是如何使用 Java 平臺的。 讓我們從結(jié)論開始——下圖顯示了 Java 在 Android 生態(tài)系統(tǒng)中的作用: 使用 Java 編程語言編

    2024年02月10日
    瀏覽(26)
  • APP安卓開發(fā)之Android Studio從安裝到創(chuàng)建項(xiàng)目(一鍵解決gradle下載緩慢以及寫代碼沒提示問題,包含如何創(chuàng)建手機(jī)模擬器)教程

    APP安卓開發(fā)之Android Studio從安裝到創(chuàng)建項(xiàng)目(一鍵解決gradle下載緩慢以及寫代碼沒提示問題,包含如何創(chuàng)建手機(jī)模擬器)教程

    選擇NEXT 選擇NEXT 選擇要安裝的地址,然后選擇NEXT 選擇Install 先啟動(dòng)剛安裝好的Android Studio 選擇Do not import settings,然后選擇OK 選擇Cancel 先選擇D\\\'ont send,然后選擇NEXT 這里選擇Custom,然后NEXT 選擇Android Studio自帶JDK的安裝位置,然后NEXT 選擇一個(gè)自己喜歡的主題顏色,然后NEXT 選

    2024年04月29日
    瀏覽(37)
  • Android Gradle Plugin與Gradle版本、JDK版本對應(yīng)關(guān)系

    Android Gradle Plugin版本 Gradle版本 SDK Build Tools JDK版本 備注 8.2 8.1 17 8.1 8.0 17 8.0 8.0 30.0.3 17 7.4 7.5 30.0.3 11 7.3 7.4 30.0.3 11 7.2 7.3.3 30.0.3 11 7.1 7.2 30.0.3 11 7.0 7.0 30.0.2 11 4.2.0+ 6.7.1 30.0.2 8+ 4.1.0+ 6.5+ 29.0.2 8+ 4.0.0+ 6.1.1+ 29.0.2 8+ 3.6.0 - 3.6.4 5.6.4+ 28.0.3 8+ 3.5.0 - 3.5.4 5.4.1+ 28.0.3 8+ 3.4.0 - 3.4.3 5.1.1+ 28

    2024年02月08日
    瀏覽(22)

覺得文章有用就打賞一下文章作者

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

請作者喝杯咖啡吧~博客贊助

支付寶掃一掃領(lǐng)取紅包,優(yōu)惠每天領(lǐng)

二維碼1

領(lǐng)取紅包

二維碼2

領(lǐng)紅包