当需要排查包依赖冲突、统一依赖版本的时候,我们第一步要做的就是了解目前整个项目的依赖情况,Android dependencies文件就是所有模块在所有任务下的依赖情况综合(就是一个文件),比如App有编译时候的依赖图,也有执行时候的依赖图,本文就如何生成以及查看这个文件进行讲解。

denpendencies文件生成

一、命令提示行执行:

gradlew app:dependencies > dpes   // 输出到根目录的deps文件中, 输出格式是一个文本文件  。

还可以通过正则表达式来过滤出特定模块/构建变体/Task的依赖,比如:

gradlew app:dependencies | grep com.android.support > dependencies.tx 

这个命令就是获取整个项目依赖后 ,进行正则匹配,找到跟com.android.support相关的依赖。其中 |: 这是管道操作符,它将一个命令的输出传递给另一个命令,以便进行进一步的处理。上述命令的结果如下:

二、在项目根build.gradle配置

apply plugin: 'project-report'
htmlDependencyReport {
    projects = project.allprojects
}

然后命令提示执行

gradlew htmlDependencyReport

如果想看执行过程可以

gradlew htmlDependencyReport  -d > findDeps.log

这种方式执行后会模块的build目录下生成一个网页版本的依赖报告:

denpendencies文件如何查看

一 、denpendencies描述了谁的依赖?

 这里我们说的库依赖 ,其实说的是为了完成某个任务的某个App或者库所依赖的库,这些依赖有的是对Android系统库的依赖,有的是对三方库的依赖,这些依赖文件放在一起就是就是denpendencies文件。

注意区分: 工程Gradle配置阶段的依赖图 是task和task之间的先后顺序依赖,比如只有执行编译 task,才能执行组装task 更多讲的是执行一个Task 做一件事 需要先做那些事; 而本文讲的依赖虽然也是为了完成某个任务的模块对其他模块的依赖,但是更重点关注的是 模块和模块 、库和库之间依赖 ,且不关注先后顺序。

二、 如何查看

这是两种方式打印的依赖图,可以看右边的 只要是缩进 都代表 子依赖 或者下一层依赖,跟是否以+ 或者\ 开头无关。

三、看哪个依赖
对于我们做应用开发来说,最重要的是一个个构建变体所对应的编译 or 运行的依赖,所以我们可以搜对应XXXCompileClasspath、 XXXRunTimeClasspath 。
其中: XXX是一个我们通过build.gradle定义的构建变体,XXXCompileClasspath 就是依赖列表中 ,XXX构建变体对应的编译任务所递归依赖的所有库。

最后

如果想要成为架构师或想突破20~30K薪资范畴,那就不要局限在编码,业务,要会选型、扩展,提升编程思维。此外,良好的职业规划也很重要,学习的习惯很重要,但是最重要的还是要能持之以恒,任何不能坚持落实的计划都是空谈。

如果你没有方向,这里给大家分享一套由阿里高级架构师编写的《Android八大模块进阶笔记》,帮大家将杂乱、零散、碎片化的知识进行体系化的整理,让大家系统而高效地掌握Android开发的各个知识点。
img
相对于我们平时看的碎片化内容,这份笔记的知识点更系统化,更容易理解和记忆,是严格按照知识体系编排的。

欢迎大家一键三连支持,若需要文中资料,直接扫描文末CSDN官方认证微信卡片免费领取↓↓↓(文末还有ChatGPT机器人小福利哦,大家千万不要错过)

PS:群里还设有ChatGPT机器人,可以解答大家在工作上或者是技术上的问题
图片

GitHub 加速计划 / de / Dependencies
8.6 K
704
下载
A rewrite of the old legacy software "depends.exe" in C# for Windows devs to troubleshoot dll load dependencies issues.
最近提交(Master分支:2 个月前 )
1997a400 - 2 年前
2f423539 - 2 年前
Logo

旨在为数千万中国开发者提供一个无缝且高效的云端环境,以支持学习、使用和贡献开源项目。

更多推荐