Gradle实现 Apk包名设置 项目内versions name 设置
我是需要让包名上带上时间戳,这样每次打出的包都是比较好区分,防止装错。
首先我们这些打包的各种配置都是要在Gradle中完成的。
Gradle基于Groovy语言,面向Android应用为主,它抛弃了基于XML的各种繁琐的配置,取而代之的是一种基于Grovvy的内部领域特定语言(DSL)。(网上copy的)
1.我们需要一个获取时间的方法:
def getTime(){
return new Date().format("yyyyMMdd HHmm",TimeZone.getDefault());
}
2.下面就介绍一下打包的设置:
gradle打包配置是在buildTypes方法内的主要分为两个部分,一个是debug一个是release,实例如下:
buildTypes {
debug {
buildConfigField "boolean", "LOG_DEBUG", "true"
//这里是给versionName添加后缀
versionNameSuffix "_debug_${getTime()}"
signingConfig signingConfigs.release
minifyEnabled false
zipAlignEnabled false
//是否去除无用的资源文件
shrinkResources false
}
release {
buildConfigField "boolean", "LOG_DEBUG", "false"
signingConfig signingConfigs.release
zipAlignEnabled true
minifyEnabled false
shrinkResources false
//这里是混淆了,如果你正在做混淆,可以参考我的另外一篇文章。
proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
}
//这里是构建apk包的地方了,fileName就是我们构建的apk的名字了。
applicationVariants.all { variant ->
variant.outputs.each { output ->
def outputFile = output.outputFile
if (outputFile != null && outputFile.name.endsWith('.apk')) {
def fileName = "a_${defaultConfig.versionName}_${variant.productFlavors[0].name}_${getTime()}.apk"
output.outputFile = new File(outputFile.parent, fileName)
}
}
}
}
上面构建完成apk就是:
a_2.0.3_xxxx_201705121200.apk
在应用内读取到的versionName就是:
V2.0.3_debug_201705121200
结尾:
gradle的配置很丰富,如果有时间可以搜集一些资料看看,会有意想不到的发现。
补充问题:
1.如果发现添加该配置后经常运行不起来的话,请如下暂时解决:
注销掉fileName的生成的方法。
2.如发现不能gradle构建不成功的问题:
报错指向那一行尝试把那行所有的空格都删掉。
引起的原因是由于复制 粘贴引起的乱码导致的问题。