Android 多模块开发时,BuildConfig配置在AAR被默认定义的问题
问题背景:
在Android 开发时,我们经常会配置BuildConfig在BuildType中,比如这样:
buildTypes {
release {
minifyEnabled false
signingConfig signingConfigs.releaseConfig
buildConfigField "boolean", "IS_TEST", "true"
}
debug {
minifyEnabled false
buildConfigField "boolean", "IS_TEST", "true"
}
}
方便我们使用一些配置在开发的时候,但是在多模块开发时,不需要当前开发的模块可以使用生成的AAR参与编译,这时就会有一个问题,如果我们使用BuildConfig.IS_TEST在我们的项目中,生成的AAR该值是固定的,会直接生成true或false,而不是BuildConfig.IS_TEST,因此很容易造成未打开编译的模块配置失效。
解决方案:
仿照Debug这个值的方式进行修改,看它的生成方式,
public static final boolean DEBUG = Boolean.parseBoolean("true");
所以可以这样修改:
buildTypes {
release {
minifyEnabled false
signingConfig signingConfigs.releaseConfig
buildConfigField "boolean", "IS_TEST", "Boolean.parseBoolean(\"true\")"
}
debug {
minifyEnabled false
buildConfigField "boolean", "IS_TEST", "Boolean.parseBoolean(\"true\")"
}
}
当然还有一些其他方案:
1.在底层模块实现一个方法来拿配置,其余模块使用这个方法而不是直接使用BuildConfig.IS_TEST。
2.全源码打包。
在Android多模块开发中,配置BuildConfig在BuildType里,方便开发使用。但多模块开发时,未开发模块用生成的AAR参与编译,AAR值固定,易造成未打开编译模块配置失效。文中给出仿照Debug值修改、底层模块实现方法获取配置、全源码打包等解决方案。
869

被折叠的 条评论
为什么被折叠?



