android领域中的可选配置
compileOptions
compileOptions就是配置编译的选项,类似于在最前面声明的compileSdkVersion。但这里是设置Java的编译选项,通常可以在这里指定Java的编译版本,示例代码如下:
compileOptions{
sourceCompatibility org.gradle.api.JavaVersion.VERSION_1_8
targetCompatibility org.gradle.api.JavaVersion.VERSION_1_8
}
指定编译版本,通常是为了使用某些版本中的一些语言新特性。
lintOptions
这个选项用于控制lint代码检查。因为在lint check的时候,编译会因为lint的error而终止,通过设置这个选项,可以在lint check发生error的时候继续编译,代码如下:
lintOptions{
abortOnError false
}
构建Proguard
Proguard配置是android的apk混淆文件配置,但它的作用绝对不仅仅是混淆代码。它同样可以精简代码、资源,优化代码结构。也正是这个原因,在新版的android studio中, google将runProguard的参数名改为minifyEnabled,更直白的显示他的作用。它的配置也非常简单,在构建类型中直接配置参数启用即可,代码如下:
buildTypes {
release {
minifyEnabled false
proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
}
}
这样在构建release版本时,系统就会自动进行混淆,而混淆文件的地址,则通过getDefaultProguardFile方法来获取,SDK默认的混淆文件配置模板,在SDK的tools/proguard目录下可以找到,如下图:
Gradle动态参数配置
在java程序中,通常会使用.properties文件来配置动态的设置参数,在gradle中也一样,gradle给开发者提供了gradle.properties文件来配置脚本中的动态参数。
System.properties方式
首先,打开gradle.properties文件,添加一下配置:
systemProp.keyAliasPassword=ct123456
systemProp.keyAlias=xys
systemProp.keyStorePassword=ct123456
systemProp.keyStore=demo.jks
这些配置实际上就是之前写死的配置参数,只不过这里把它们配置到了systemProp中。那么在build.gradle脚本中进行引用的时候,就可以通过System.properties[KEY]获取这些参数,代码如下所示:
signingConfigs{
xys {
storeFile file(System.properties['keyStore'])
storePassword System.properties['keyStorePassword']
keyAlias System.properties['keyAlias']
keyPassword System.properties['keyAliasPassword']
}
}
key\value方式
还可以使用key\value方式来定义。在gradle.properties文件添加以下配置:
xys.keyAlias=xys
xys.keyAliasPassword=ct123456
然后在build.gradle中进行引用时,代码如下所示:
signingConfigs{
xys {
storeFile file(System.properties['keyStore'])
storePassword System.properties['keyStorePassword']
keyAlias project.property('xys.keyAlias')
keyPassword project.property('xys.keyAliasPassword')
}
}
通过project.property(Key)方法,就可以取出对应的Value。这种方式与使用System.properties的方式基本一样,所以读者可以根据不同情况使用一种即可。
属性方式
前面两种方式,均可以在命令行中设置参数,从而设置给编译指令。如果不需要再命令行中设置参数,那么直接写属性名,同样可以进行引用,代码如下:
pKeyAlias=xys
pKeyAliasPassword=ct123456
这样在build.gradle脚本中就可以直接引用了,代码如下:
signingConfigs{
xys {
storeFile file(System.properties['keyStore'])
storePassword System.properties['keyStorePassword']
keyAlias pKeyAlias
keyPassword pKeyAliasPassword
}
}
这样设置的效果与前面两种的效果是一样的,区别在于是否支持命令行配置参数。