¿Cómo agrego un número de versión a mis archivos APK usando las versiones 0.14+ del complemento Android Gradle?
Quiero tener el nombre de versionName
incluido en el nombre de los archivos APK de salida de mi compilación de Android.
Hay otra respuesta que funciona con las versiones de plugins pre-0.14.x, pero cambiaron algunos de los modelos de datos para que ya no funcionen y no pude averiguar cómo solucionarlo. Por lo que puedo decir, el siguiente fragmento de código debería funcionar, pero esa última llamada set()
parece no tener ningún efecto. No se produce un error, pero tampoco se reemplaza el valor.
- Dependencia de la biblioteca de Android Gradle
- La sincronización de Gradle falla con el complemento Dexguard (Android Studio)
- Android Studio - tarea de gradle para ejecutar después de SYNC
- Android Studio, error de actualización de Gradle
- Proyecto de Android Studio con sabores, Directorio de fuentes no mostrado en color azul
buildTypes { applicationVariants.all { variant -> def oldFile = variant.outputs.outputFile.get(0) def newFile = new File( oldFile.parent, oldFile.name.replace(".apk", "-" + defaultConfig.versionName + ".apk")) variant.outputs.outputFile.set(0, newFile) }
¿Alguien me puede ayudar con esto?
- ¿Cómo excluir la carpeta res de los desarrolladores de gradle build?
- Confused sobre testCompile y androidTestCompile en Android Gradle
- Cómo utilizar opencv en android studio utilizando gradle build tool?
- Android: el prefijo "xmlns" no puede estar enlazado a ningún espacio de nombres explícitamente; Tampoco puede el espacio de nombres para "xmlns" estar vinculado a cualquier prefijo explícitamente
- Instalar crashlytics sin tela?
- Error del compilador JACK de Android después de la actualización a la última biblioteca de soporte
- Error: no se pudo encontrar el destino con la cadena de hash 'android-21'
- ¿Puede Android Studio convertir la secuencia de comandos de construcción de hormigas en la secuencia de comandos de gradle build?
Necesita un bucle más ahora que cada variante puede tener múltiples salidas:
android { applicationVariants.all { variant -> variant.outputs.each { output -> output.outputFile = new File( output.outputFile.parent, output.outputFile.name.replace(".apk", "-${variant.versionName}.apk")) } } }
Copié tu respuesta con alguna modificación:
applicationVariants.all { variant -> variant.outputs.each { output -> output.outputFile = new File( output.outputFile.parent, output.outputFile.name.replace("-assistant", "-assistant-${versionName}")) } }
La palabra "-assistant" está en mi nombre de archivo antes del nombre de la variante. Ejemplo Tengo 3 variantes
Axx bx cx
Los nombres de archivo estaban en mi ejemplo:
- The-assistant-ax-debug.apk
- El-asistente-bx-debug.apk
- El-asistente-cx-debug.apk
Quería que el número de versión antes de que el nombre de la variante. Por lo tanto, después de lo anterior se llaman ahora
- The-assistant-1.0-ax-debug.apk
- El-asistente-1.0-bx-debug.apk
- El-asistente-1.0-cx-debug.apk
Por lo tanto, gradle build es añadir el nombre de la variante en el nombre de archivo para nosotros.
El $ {versionName} es simplemente "1.0". Y me di cuenta de que si es $ {versionName} o $ {variant.versionName}, ambos produjeron el mismo resultado.
Es decir, si tenía defaultConfig {versionName "ab"} y productFlavors {ax {versionName "1.0"}} , el $ versionName o $ variant.versionName en el bucle de este código anterior contendrán el nombre de la versión variante "1.0"
Espero que esto ayude a alguien.