如何查看Android 包依赖关系&gradle依赖管理

这篇具有很好参考价值的文章主要介绍了如何查看Android 包依赖关系&gradle依赖管理。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

关于作者:CSDN内容合伙人、技术专家, 从零开始做日活千万级APP。
专注于分享各领域原创系列文章 ,擅长java后端、移动开发、商业变现、人工智能等,希望大家多多支持。

java 安卓依赖,工具-效率,Android基础,android,依赖

一、导读

我们继续总结学习,温故知新。

二、概览

本文讲述如何查看 android 依赖库关系。

三、查看依赖关系

3.1 方式一

Tasks->help->dependencies
可以看项目中的依赖库以及依赖库的导入关系
java 安卓依赖,工具-效率,Android基础,android,依赖

3.2 方式二

Tasks->android->androidDependencies
可以看项目中的依赖库以及依赖库的导入关系
java 安卓依赖,工具-效率,Android基础,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
通过命令行,将输入保存到日志,更方便查看。

四、移除重复依赖

项目中使用了很多第三方库,很容易引入同名不同版本的库,针对于这种情况,我们需要使用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"
    }

当我们移除之后,就要检查代码是否生效,
可在android studio的project项目查看方式下,找到External Libraries目录。在这个目录下查看多余的依赖库是否已经被移除。
如下图:
java 安卓依赖,工具-效率,Android基础,android,依赖

强制指定整个项目依赖固定版本的第三方库

当然上面的写法可能会比较麻烦,因为每个相关的三方库都要写一下,所以我们可以强制指定整个项目依赖固定版本的第三方库,避免重复依赖不同版本相同库。
方法如下:项目build文件下
java 安卓依赖,工具-效率,Android基础,android,依赖

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

另外,直接通过混淆可以使不使用的文件不打包进去。

通过 ModuleDependency#transitive 依赖传递设置

在 dependencies 中配置依赖时 , implementation 依赖配置 后 , 可以 在闭包中 使用 transitive 函数 设置依赖是否传递 ,

如果为 transitive 函数设置 true 参数 , 则 包含传递依赖 ;
如果为 transitive 函数设置 false 参数 , 则 排除传递依赖 ;

dependencies {

    implementation ('com.kuaishou.koom:koom-java-leak:2.2.2') {
        transitive true // 包括传递依赖, 如果设置为 false 则排除传递依赖
    }
}

五、查找Gradle依赖中不再使用的组件(无用的库)

随着android工程的不断迭代,gradle配置变得越发臃肿,dependencies中可能存在很多已经不使用的公共库,严重时可能拖慢编译速度。

给大家推荐一个工具,可以帮助我们发现这些不再使用的组件
工具库 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"

添加完依赖后,进行同步,会出现如下所示的任务:
java 安卓依赖,工具-效率,Android基础,android,依赖

使用

执行buildHealth 或者其他子task,帮助我们从不同维度生成对gradle配置的检查结果,包括但不限于:

  • 发现所有依赖的组件,包括直接依赖和传递依赖
  • 发现所以不使用的直接依赖组件
  • 发现所有的二进制依赖(ABI)
  • gradle的优化建议,例如依赖方式的修改建议等

假设我们点击了 buildHealth任务,在命令行中会有结果输出


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

内容如下:

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)

同时在每个module的build目录下,也会有reports目录
jnitest1\app\build\reports
如下图:
java 安卓依赖,工具-效率,Android基础,android,依赖

原理:
想要查找没有依赖的组件,自然要从代码上进行静态扫描。
插件工具借助ANTLR对编译后的字节码进行分析:收集项目中使用到的class以及组件实际提供的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 专栏

数据结构与算法

Android学习专栏

java 安卓依赖,工具-效率,Android基础,android,依赖

未经允许不得转载文章来源地址https://www.toymoban.com/news/detail-801288.html

到了这里,关于如何查看Android 包依赖关系&gradle依赖管理的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 如何在IDEA中查看依赖关系

    Maven提供了mvn dependency:tree来查看依赖关系,而IDE往往提供了更加便利的方式,比如Eclipse或者IDEA都有类似的功能,这篇文章简单说明一下如何在IDEA中查看依赖关系。 点击Maven Project视图,如果此视图没有打开,请使用View菜单将其打开。 选中相应的项目,在右键菜单中选择 然

    2024年02月12日
    浏览(36)
  • 【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 依赖作用: 编译打包 : 为 自己的项目模块 添加依

    2024年02月02日
    浏览(37)
  • 在android开发环境中,gradle 版本和 java 版本的对应关系

    在android开发环境中,gradle 版本和 java 版本的对应关系 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日
    浏览(33)
  • Mac查看Gradle安装位置和依赖包存放路径

    Mac查看Gradle安装位置和依赖包存放路径 Gradle是一个功能强大的构建工具,广泛用于Java和Android项目的构建和管理。在Mac操作系统上,我们可以通过以下步骤来查看Gradle的安装位置以及依赖包的存放路径。 Gradle安装位置 打开终端:你可以通过在Launchpad中找到“终端”应用程序

    2024年02月03日
    浏览(27)
  • Android Gradle Plugin、Gradle、Android Studio版本关系

    参考链接 插件版本 所需的最低 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日
    浏览(35)
  • IDEA 查看 Maven 依赖关系图

    Maven提供了 mvn dependency:tree 来查看依赖关系,而IDE往往提供了更加便利的方式,比如Eclipse或者IDEA都有类似的功能,这篇文章简单说明一下如何在IDEA中查看依赖关系。 点击 Maven Project 视图,如果此视图没有打开,请使用View菜单将其打开。 选中相应的项目,在右键菜单中选择

    2024年02月16日
    浏览(36)
  • vscode 查看某个组件的引用和依赖关系

    安装vscode插件 Dependency Cruiser Extension 安装完成后,在任何一个文件处右键,选择view dependencies,即可查看依赖关系。 如,我们查看了AppMain.vue这个文件的引用和被引用文件。如下图: 其实这个插件只能查看所选文件的位置、以及它内部所引用的文件和内容;而没有体现它被哪

    2024年02月02日
    浏览(28)
  • Android、Android Studio 和 Gradle 是如何使用 Java 的

    可以肯定地说,每个人都知道 Android 使用 Java。然而,“使用 Java ”的含义范围相当大。因此,在本文中,我将介绍 Android 设备和我们用于 Android 开发的各种工具是如何使用 Java 平台的。 让我们从结论开始——下图显示了 Java 在 Android 生态系统中的作用: 使用 Java 编程语言编

    2024年02月10日
    浏览(30)
  • APP安卓开发之Android Studio从安装到创建项目(一键解决gradle下载缓慢以及写代码没提示问题,包含如何创建手机模拟器)教程

    选择NEXT 选择NEXT 选择要安装的地址,然后选择NEXT 选择Install 先启动刚安装好的Android Studio 选择Do not import settings,然后选择OK 选择Cancel 先选择D\\\'ont send,然后选择NEXT 这里选择Custom,然后NEXT 选择Android Studio自带JDK的安装位置,然后NEXT 选择一个自己喜欢的主题颜色,然后NEXT 选

    2024年04月29日
    浏览(49)
  • Android Gradle Plugin与Gradle版本、JDK版本对应关系

    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日
    浏览(33)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包