gradle加入不同的代码
2020-04-19 本文已影响0人
普通的程序员
现在假设有两个版本 debug,release
debug版本需要使用某个第三方库,且需要在java代码里进行设置(这就涉及到import的操作了),因此常规的debugImplemention 脚本语法无法满足我们的需求。
需要sourceSet的帮助
假设我们的release包是不需要在application里对LC进行设置的,
那么我们指定release的application为 normalApplication.class
需要对LC进行配置的debug版本的 application为 TestApplication
1.先对清单文件做配置,占位符
image.png
2.gradle文件进行配置
android {
defaultConfig {
...
manifestPlaceholders = [applicationClassName: "NormalApplication"]
}
buildTypes {
release {
...
}
debug {
...
manifestPlaceholders = [applicationClassName: "TestApplication"]
}
}
sourceSets.debug {
java.srcDirs 'src/debugLC/java'
}
}
dependencies {
...
debugImplementation 'com.squareup.leakcanary:leakcanary-android:2.2'
}
这样就能在打包的时候,通过gradle脚本打包指定不同的application
然后通过sourceSet.debug来进行物理隔离
只有在debug版本的时候,才会把src/debugLC/java下的java资源编译进去。
项目结构
image.png image.png image.png
以上,完成了LC的物理隔离,也就不需要LC no-op包了