Android 项目中有两种 build.gradle:
- 每个Module中的私有的build.gradle,用作私有配置
- 根目录中的build.gradle,用作全局配置
全局变量
在组件化模式中,每个业务部门都是一个独立的Module,在独自开发时,项目都是一个独立的APP,当需要整体打包测试的时候,将每个部门的项目变成library,通过以下两种方式可以轻易地用配置文件的方式进行环境切换。
当开发多Module工程时,我们需要为每个Module管理targetSdkVersion,新Module比旧Module的minSdkVersion低,“全局变量” 能够对全部Module的targertSdkVersion。
使用RootProject.ext
- 使用build.gradle 其中一种方法就是在project根目录下的build.gradle定义全局变量
ext {
minSdkVersion = 16
targetSdkVersion = 24
}
buildscript {
// ...
}
然后在各个Module的build.gradle中通过rootProject.ext引用这些变量
android {
defaultCofig {
minSdkVersion rootProject.ext.minSdkVersion
targetSdkVersion rootProject.ext.targetSdkVersion
}
注:利用rootProject.ext关键字是因为这些变量定义在根目录中,如果在私有的build.gradle文件中定义则不用添加
使用Gradle.properties
另一种方法就是在gradle.properties中定义
org.gradle.parallel = true
isFusion = false
如果定义bool变量,在使用的时候调用toBoolean()
if (!isFusion.toBoolean()) {
apply plugin: 'com.android.application'
} else {
apply plugin: 'com.android.library'
}
配置Lint选项
一个完善的Lint对于多人协作的项目相当重要 注⚠️:开发环境中,最好重视Lint的输出,出问题及时修复
Lint默认会做严格的检查,如果遇到报错会终止构建过程,在JenKins环境中,如果开启了严格的检查,那么在构建项目的时候经常会由于Lint错误而终止。
很多时候是因为第三方库的错误,且不能立即修复,那么就会影响到打包的流程,可以通过如下关闭严格检查:
android {
lintOptions {
disable 'InvalidPackage'
checkReleaseBuilds false
// Or, if you prefer, you can continue to check for errrs in release builds,
//but continue the build even when errors are found:
abortOnError false
}
}
如果是多Module的项目,则可以添加一个全局的过滤配置
task lintCheck() {
getAlltasks(true).each {
def lintTask = it.value.findAll {it.name.contains("lint")}
lintTask.each {
it.enabled = false
}
}
}