如何在Gradle(Android Studio)中通过构建类型定义字符串并替换文件名
我想用指定的生成类型替换生成的APK的名称:如何在Gradle(Android Studio)中通过构建类型定义字符串并替换文件名,android,gradle,android-gradle-plugin,Android,Gradle,Android Gradle Plugin,我想用指定的生成类型替换生成的APK的名称: android { buildTypes { def String proguard release { minifyEnabled false zipAlignEnabled true proguard = "noproguard" } releaseProguard { minifyEnabled true
android {
buildTypes {
def String proguard
release {
minifyEnabled false
zipAlignEnabled true
proguard = "noproguard"
}
releaseProguard {
minifyEnabled true
proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.txt'
zipAlignEnabled true
proguard = "proguard"
}
}
// Replace the file names
android.applicationVariants.all { variant ->
variant.preBuild.doLast {
variant.outputs.each { output ->
output.outputFile = new File(
output.outputFile.parent,
output.outputFile.name.replace(".apk", "-${variant.versionName}-${variant.versionCode}-" + proguard +.apk"))
}
}
}
}
但是,如果我用“release”创建一个签名的APK,我不会在APK的文件名中得到“noprogragard”字符串,它会被上一个构建类型:releaseProguard覆盖
预期输出发布:
app-qa-release-1.3.1-noprguard.apk
预期输出releaseProguard:app-qa-release-1.3.1-proguard.apk它不完全是您想要的 您可以使用
build.gradle
设置此属性:
android {
//...
defaultConfig {
//...
project.ext.set("archivesBaseName", "XXXX_" + defaultConfig.versionCode);
}
}
分配archivesBaseName
您将获得如下结果:
xxxx_0.9.6-flavorName-buildType.apk
您可以在flavor块中使用此选项来指定特定值
此属性需要gradle插件
1.3.1
或更高版本。您的意思是可以为versionCode分配任意字符串值,并将其反映在apk名称中吗?@RaGe No。您可以为archivesBaseName分配任意值,该值将作为“-flavorName buildType.apk”之前名称的前缀。当然,您可以编写任务来重命名最终的apk,但这是android gradle插件中的内置功能。