Donc, pour changer le nom de fichier APK généré dans gradle Android je pourrais faire quelque chose comme:
applicationVariants.output.all {
outputFileName = "the_file_name_that_i_want.apk"
}
Existe-t-il une chose similaire pour le fichier Bundle d'applications généré? Comment puis-je changer le nom de fichier du bundle d'applications généré?
Comme moyen plus générique de réponse de Martin Zeitlers ce qui suit écoutera les tâches ajoutées, puis insérera des tâches de renommage pour tout bundle*
tâche qui est ajoutée.
Ajoutez-le simplement au bas de votre build.gradle
fichier.
Remarque: il ajoutera plus de tâches que nécessaire, mais ces tâches seront ignorées car elles ne correspondent à aucun dossier. par exemple.
> 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)
}
}
Vous pouvez utiliser quelque chose comme ceci:
defaultConfig {
applicationId "com.test.app"
versionCode 1
versionName "1.0"
setProperty("archivesBaseName", applicationId + "-v" + versionCode + "(" + versionName + ")")
}
En attendant, j'ai trouvé une meilleure façon de le faire ...
// it sets task.finalizedBy for :bundle
tasks.whenTaskAdded { task ->
switch (task.name) {
case 'bundleDebug':
case 'bundleRelease':
task.finalizedBy renameBundle
break
}
}
en utilisant une tâche Exec
(se demandant encore comment la syntaxe d'un ant.move
la tâche se ressemblerait):
// 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()}"
}
}
}
Cela ne laisse rien de côté - et on peut déplacer le fichier où l'on veut.