archiveBaseName применяется ко всем типам сборки
У меня есть следующее приложение build.gradle
android {
compileSdkVersion 23
buildToolsVersion "23.0.1"
defaultConfig {
applicationId "io.gresse.hugo.anecdote"
minSdkVersion 16
targetSdkVersion 23
versionCode 12
versionName "1.0.0"
}
buildTypes {
release {
archivesBaseName = "anecdote-" + defaultConfig.versionName
minifyEnabled true
proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
}
debug {
archivesBaseName = "anecdote-DEBUGDEBUGDEBUG-"
}
}
}
Когда я выполню ./gradlew assembleRelease assembleDebug
Выходные данные.apk:
- anecdote-DEBUGDEBUGDEBUG-debug-unaligned.apk
- anecdote-DEBUGDEBUGDEBUG-debug.apk
- anecdote-DEBUGDEBUGDEBUG-release-unaligned.apk
- anecdote-DEBUGDEBUGDEBUG-release.apk
Что я хотел:
- anecdote-DEBUGDEBUGDEBUG-debug-unaligned.apk
- anecdote-DEBUGDEBUGDEBUG-debug.apk
- anecdote-1.0.0-release-unaligned.apk
- anecdote-1.0.0-release.apk
Есть ли способ применить archiveBaseName для определенных типов сборки или это ошибка?
Спасибо,
2 ответа
Как вы можете заметить, этот вопрос - беспорядок вокруг SO.
Связанный ответ здесь и здесь.
Вот что сработало для меня. Я хотел сохранить простое archiveBaseName
но это кажется устаревшим и что это относится ко всем buildTypes.
android {
compileSdkVersion 23
buildToolsVersion "23.0.1"
defaultConfig {
applicationId "io.gresse.hugo.anecdote"
minSdkVersion 16
targetSdkVersion 23
versionCode 12
versionName "1.0.0"
}
project.ext.set("archivesBaseName", "Anecdote");
applicationVariants.all { variant ->
variant.outputs.each { output ->
if(variant.buildType.name == "release"){
output.outputFile = new File(
output.outputFile.parent,
output.outputFile.name.replace(".apk", "-"+variant.versionName + ".apk"))
}
}
}
buildTypes {
release {
minifyEnabled true
proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
}
}
}
Я знаю, что это очень старый, но несколькоarchivesBaseName
по-прежнему кажется, что они перезаписывают друг друга даже в последней версии Gradle (7.5).
Начиная с Gradle 3.0output
свойство, которое необходимо изменить, теперь называетсяoutputFileName
и больше не является абсолютным путем:
applicationVariants.all { variant ->
variant.outputs.each { output ->
if (variant.buildType.name == "release") {
output.outputFileName = 'your-release-name.apk'
}
}
}