Как изменить сгенерированное имя файла для пакетов приложений с помощью Gradle?
Поэтому, чтобы сменить сгенерированное имя файла APK внутри андроида градиента, я мог бы сделать что-то вроде:
applicationVariants.output.all {
outputFileName = "the_file_name_that_i_want.apk"
}
Есть ли аналогичная вещь для сгенерированного файла приложения Bundle? Как изменить сгенерированное имя файла приложения Bundle?
Ответы
Ответ 1
В качестве более общего способа ответа Мартина Цейтлера ниже будет прослушиваться добавленные задачи, а затем вставляться задачи переименования для любой добавляемой задачи bundle*
.
Просто добавьте его в конец файла build.gradle
.
Примечание. Это добавит больше задач, чем необходимо, но эти задачи будут пропущены, поскольку они не соответствуют ни одной папке. например > Task :app:renameBundleDevelopmentDebugResourcesAab NO-SOURCE
tasks.whenTaskAdded { task ->
if (task.name.startsWith("bundle")) {
def renameTaskName = "rename${task.name.capitalize()}Aab"
def flavor = task.name.substring("bundle".length()).uncapitalize()
tasks.create(renameTaskName, Copy) {
def path = "${buildDir}/outputs/bundle/${flavor}/"
from(path)
include "app.aab"
destinationDir file("${buildDir}/outputs/renamedBundle/")
rename "app.aab", "${flavor}.aab"
}
task.finalizedBy(renameTaskName)
}
}
Ответ 2
Вы можете использовать что-то вроде этого:
defaultConfig {
applicationId "com.test.app"
versionCode 1
versionName "1.0"
setProperty("archivesBaseName", applicationId + "-v" + versionCode + "(" + versionName + ")")
}
Ответ 3
Тем временем я нашел лучший способ сделать это...
// it sets task.finalizedBy for :bundle
tasks.whenTaskAdded { task ->
switch (task.name) {
case 'bundleDebug':
case 'bundleRelease':
task.finalizedBy renameBundle
break
}
}
используя задачу Exec
(все еще не знаете, как будет выглядеть синтаксис задачи ant.move
):
// it finalizes task :bundle
task renameBundle (type: Exec) {
description "it renames an Android App Bundle"
def bundlePath = rootProject.getProjectDir().getAbsolutePath() + "/${project.name}/build/outputs/bundle/release/"
def baseName = getProperty('archivesBaseName')
def srcFile = "${baseName}.aab"
def dstFile = "${baseName}_renamed.aab"
def stdout = new ByteArrayOutputStream()
def stderr = new ByteArrayOutputStream()
commandLine "mv", "-v", "${srcFile}", "${dstFile}"
workingDir = bundlePath
ignoreExitValue true
standardOutput stdout
errorOutput stderr
doLast {
if (execResult.getExitValue() == 0) {
println ":${project.name}:${name} > ${stdout.toString()}"
} else {
println ":${project.name}:${name} > ${stderr.toString()}"
}
}
}
Это ничего не оставляет - и вы можете переместить файл туда, куда захотите.
Ответ 4
Это простой, который работает для меня с помощью Android Studio 3
Изменить модуль (приложение) build.gradle
и добавить ниже:
android.applicationVariants.all { variant ->
variant.outputs.all {
def appName = "YourAPKName"
outputFileName = appName+"-${variant.versionName}.apk"
}
}
Этот код будет генерировать файл с именем: YourAPKName-1.0.apk