Android / gradle: incluye el nombre de la versión del sabor en el nombre de archivo apk
He encontrado preguntas similares, pero nada que funciona para lo que quiero hacer. Estoy desarrollando con Android Studio y gradle, y tengo varios sabores en mi archivo de construcción, cada uno de los cuales tiene un nombre de versión. ¿Hay alguna manera de incluir el nombre de la versión del sabor en el archivo APK?
- ¿Cuál es la diferencia entre compilar, testCompile y proporcionada en dependencia de gradle
- Error de Gradle "Atributo" xxx "ya se ha definido" en Android Studio
- Android Studio compilador en línea que muestra errores rojos, pero la compilación con gradle funciona bien
- "Los archivos de Gradle han cambiado desde la última sincronización del proyecto." Siempre aparece el mensaje
- Eclipse utiliza la variable PATH antigua para ejecutar el proceso de línea de comandos en la tarea Gradle?
- gradle 2.0.0 beta 7 missing
- Agrega error de dexdebug mientras construyes un proyecto de Android
- Error al configurar SDK: Error: Módulo 'app': plataforma 'Google Inc.: API de Google: 21' no encontrado
- Límite de 64 k superado en las API más antiguas que Lollipop, pero no más reciente
- ¿Cómo agregar ActiveManager ORM a Gradle?
- Gitlab CI caché dependencia gradle
- Android Studio: No se pueden encontrar referencias al complemento de Android Gradle en los archivos de build.gradle
- Twitter Tela no se instala en Android Studio debido a las dependencias que faltan
EDIT: Para versiones modernas de las herramientas de Gradle, use la variación de @ ptx (use output.outputFile
en lugar de variant.outputFile
:
android { applicationVariants.all { variant -> variant.outputs.each { output -> output.outputFile = new File(output.outputFile.parentFile, output.outputFile.name.replace(".apk", "${variant.versionName}.apk")); } } }
A partir de la versión 0.14 de las herramientas de Gradle, debes empezar a utilizar lo siguiente para soportar correctamente varios archivos de salida (por ejemplo, las divisiones APK):
android { applicationVariants.all { variant -> variant.outputs.each { output -> variant.outputFile = new File(variant.outputFile.parentFile, variant.outputFile.name.replace(".apk", "${variant.versionName}.apk")); } } }
Para versiones anteriores:
Sí, lo hacemos en nuestra aplicación. Simplemente añada lo siguiente en su etiqueta android en build.gradle:
android { applicationVariants.all { variant -> def oldFile = variant.outputFile def newPath = oldFile.name.replace(".apk", "${variant.versionName}.apk") variant.outputFile = new File(oldFile.parentFile, newPath) } }
La respuesta de kcoppock es correcta, pero hay un pequeño error tipográfico. Debería ser:
android { applicationVariants.all { variant -> variant.outputs.each { output -> output.outputFile = new File(output.outputFile.parentFile, output.outputFile.name.replace(".apk", "${variant.versionName}.apk")); } } }
(Escribí esto como una respuesta porque no tengo la reputación de hacer un comentario)