Gradle是使用Groovy语言构建,因此既然是语言,那么就有他的语法,而不是简单的配置项。关于Gradle有时间会出一系列的文章。android
本配置为Android studio3.0及以上的配置,3.0如下版本适用,下面的配置会将全部的Variants都输出。微信
// 便利全部的Variants,all是迭代遍历操做符,至关于for
applicationVariants.all { variant ->// 遍历得出全部的variant
variant.outputs.all {// 遍历全部的输出类型,通常是debug和replease
// 定义apk的名字,拼接variant的版本号
def apkName = "app_${variant.versionName}"
// 判断是否为空
if (!variant.flavorName.isEmpty()) {
apkName += "_${variant.flavorName}"
}
// 赋值属性
outputFileName = apkName + ".apk"
}
}
复制代码
配置到buildTypes的release和debug下面app
咱们在使用百度地图和微信相关的API的时候,是须要咱们填入相关的的app签名进行校验后才能进行操做,而默认咱们在调试模式下使用的是AS为咱们提供的android.keystore,所幸,Gradle为咱们提供了相关的方法,咱们能够为debug和release指定密钥文件和前面。咱们须要先在app.gradle的android节点作作相关的配置。gradle
android{
...
signingConfigs {
debug {
try {
storeFile file("../签名文件.jks")
storePassword "密码"
keyAlias "别名"
keyPassword "密码"
v1SigningEnabled true
v2SigningEnabled false
}
catch (ex) {
ex.printStackTrace()
throw new InvalidUserDataException("秘钥用户名或密码错误${ex.getMessage()}")
}
}
release {
try {
storeFile file("../签名文件.jks")
storePassword "密码"
keyAlias "别名"
keyPassword "密码"
v1SigningEnabled true
v2SigningEnabled false
}
catch (ex) {
throw new InvalidUserDataException("秘钥用户名或密码错误")
}
}
}
...
}
复制代码
buildTypes{
release{
signingConfig signingConfigs.release
...
}
debug{
signingConfig signingConfigs.debug
...
}
}
复制代码
虽然不指定这一步,咱们依然可以正常运行,可是为了出没必要要的幺蛾子,咱们仍是把它加上吧。ui
写程序就会要有log,有log咱们就须要在打release包的时候就须要手动的设置debug开关为false,可是在某些状况下咱们可能会忘记关闭的。因此能够选择在gradle中经过buildConfigField定义变量,而后再须要的时候直接进行引用。spa
buildTypes {
release {
...
buildConfigField "boolean", "isDebug", "false"
...
}
debug {
...
buildConfigField "boolean", "isDebug", "true"
...
}
}
复制代码
以上,咱们在两种模式中都建立了一个叫作isDebug的布尔值的变量,根据类型不一样设置值,而后须要从新编译一下。 编译完成后直接调用BuildConfig.isDebug做为开关设置便可debug
关于BuildConfig的内容,能够看下面的截图3d
既然有了全局debug开关的设置,那么就确定有这么一个需求:debug和release下使用不一样的API请求地址,其实也就是和前面一个套路,直接经过buildConfigField定义变量。调试
buildTypes {
release {
...
buildConfigField "boolean", "isDebug", "false"
buildConfigField "String", "API", "http://192.168.1.1/release"
...
}
debug {
...
buildConfigField "boolean", "isDebug", "true"
buildConfigField "String", "API", "\"http://192.168.1.1/debug\""
...
}
}
复制代码
String类型必定要记得加双引用转义。 String类型必定要记得加双引用转义。 String类型必定要记得加双引用转义。code
后续敬请期待! 免为其难的关注一下公众号吧!!