Android Gradle模块依赖替换使用技巧
背景
我们在多模块项目开发过程中,会遇到这样的场景,工程里依赖了一个自己的或者其他同事的 aar 模块,有时候为了开发调试方便,经常会把 aar 改为本地源码依赖,开发完毕并提交的时候,会再修改回 aar 依赖,这样就会很不方便,开发流程图示如下:

解决
一开始我们通过在 app 的 build.gradle 里的 dependency 判断如果是需要本地依赖的 aar,就替换为 implementation project 依赖,伪代码如下:
dependencies {
if(enablelocalmodule) {
implementation 'custom:test:0.0.1'
} else {
implementation project(path: ':test')
}
}
这样就可以不用每次提交代码还要修改回 aar 依赖,但是如果其他模块如果也依赖了该 aar 模块,就会出现问题,虽然可以继续修改其他模块里的依赖方式,但是这样就会有侵入性,而且不能彻底解决问题,仍然有可能出现本地依赖和 aar 依赖的代码不一致问题。
gradle 官方针对这种场景提供了更好的解决方式 dependencysubstitution,使用方式如下:
步骤1:
在 settting.gradle,添加如下代码:
// 加载本地 module
if (file("local.properties").exists()) {
def properties = new properties()
def inputstream = file("local.properties").newdatainputstream()
properties.load( inputstream )
def modulename = properties.getproperty("modulename")
def modulepath = properties.getproperty("modulepath")
if (modulename != null && modulepath != null) {
include modulename
project(modulename).projectdir = file(modulepath)
}
}
步骤2:
在 app 的 build.gradle 添加以下代码
configurations.all {
resolutionstrategy.dependencysubstitution.all { dependencysubstitution dependency ->
// use local module
if (dependency.requested instanceof modulecomponentselector && dependency.requested.group == "custom") {
def targetproject = findproject(":test")
if (targetproject != null) {
dependency.usetarget targetproject
}
}
}
}
步骤3:
在 local.properties 里
modulename=:test modulepath=../androidstudioprojects/testproject/testmodule
到这里就大功告成了,后续只需要在 local.properties 里开启和关闭,即可实现 aar 模块本地依赖调试,提交代码也不用去手动修改回 aar 依赖。
以上就是android gradle模块依赖替换使用技巧的详细内容,更多关于android gradle模块依赖替换的资料请关注萬仟网其它相关文章!
看完文章,还可以扫描下面的二维码下载快手极速版领4元红包
除了扫码领红包之外,大家还可以在快手极速版做签到,看视频,做任务,参与抽奖,邀请好友赚钱)。
邀请两个好友奖最高196元,如下图所示:







