У меня есть проект Android, который использует Gradle для процесса сборки. Теперь я хочу добавить два дополнительных типа сборки и постановку, поэтому мой файл build.gradle содержит:
android {
buildTypes {
release {
runProguard false
proguardFile getDefaultProguardFile('proguard-android.txt')
}
staging {
signingConfig signingConfigs.staging
applicationVariants.all { variant ->
appendVersionNameVersionCode(variant, defaultConfig)
}
}
production {
signingConfig signingConfigs.production
}
}
}
и мой appndVersionNameVersionCode выглядит так:
def appendVersionNameVersionCode(variant, defaultConfig) {
if(variant.zipAlign) {
def file = variant.outputFile
def fileName = file.name.replace(".apk", "-" + defaultConfig.versionName + "-" + defaultConfig.versionCode + ".apk")
variant.outputFile = new File(file.parent, fileName)
}
def file = variant.packageApplication.outputFile
def fileName = file.name.replace(".apk", "-" + defaultConfig.versionName + "-" + defaultConfig.versionCode + ".apk")
variant.packageApplication.outputFile = new File(file.parent, fileName)
}
Если я выполняю задачу assembleStaging, тогда я получаю собственное имя apk, но когда я выполняю сборку, я получаю измененные имена моего apk (например, в стадии постановки). Например:
MyApp-defaultFlavor-production-9.9.9-999.apk
MyApp-defaultFlavor-production-9.9.9-999.apk
Похоже, что в производственной форме сборки выполняется appendVersionNameVersionCode. Как я могу избежать этого?