Solo tengo que cambiar el nombre de la versión en un solo lugar. El código también es simple.
Los ejemplos a continuación crearán archivos apk llamados MyCompany-MyAppName-1.4.8-debug.apk o MyCompany-MyAppName-1.4.8-release.apk dependiendo de la variante de compilación seleccionada.
Tenga en cuenta que esta solución funciona tanto en APK como en paquetes de aplicaciones (archivos .aab) .
Ver también: Cómo cambiar el nombre del archivo de mapeo proguard en gradle para proyecto Android
Solución para el complemento Gradle reciente
android {
compileSdkVersion 22
buildToolsVersion "22.0.1"
defaultConfig {
applicationId "com.company.app"
minSdkVersion 13
targetSdkVersion 21
versionCode 14 // increment with every release
versionName '1.4.8' // change with every release
setProperty("archivesBaseName", "MyCompany-MyAppName-$versionName")
}
}
La solución anterior se ha probado con las siguientes versiones de Android Gradle Plugin:
- 3.5.2 (noviembre de 2019)
- 3.3.0 (enero de 2019)
- 3.1.0 (marzo de 2018)
- 3.0.1 (noviembre de 2017)
- 3.0.0 (octubre de 2017)
- 2.3.2 (mayo de 2017)
- 2.3.1 (abril de 2017)
- 2.3.0 (febrero de 2017)
- 2.2.3 (diciembre de 2016)
- 2.2.2
- 2.2.0 (septiembre de 2016)
- 2.1.3 (agosto de 2016)
- 2.1.2
- 2.0.0 (abril de 2016)
- 1.5.0 (2015/11/12)
- 1.4.0-beta6 (05/10/2015)
- 1.3.1 (2015/08/11)
Actualizaré esta publicación a medida que salgan nuevas versiones.
Solución probada solo en las versiones 1.1.3-1.3.0
La siguiente solución ha sido probada con las siguientes versiones de Android Gradle Plugin:
archivo gradle de la aplicación:
apply plugin: 'com.android.application'
android {
compileSdkVersion 21
buildToolsVersion "21.1.2"
defaultConfig {
applicationId "com.company.app"
minSdkVersion 13
targetSdkVersion 21
versionCode 14 // increment with every release
versionName '1.4.8' // change with every release
archivesBaseName = "MyCompany-MyAppName-$versionName"
}
}
variant.buildType.name
al nombre? Sé que esto no está realmente relacionado con la configuración predeterminada, pero estoy tratando de descubrir cómo eliminar lavariantOutput.getAssemble()
advertencia obsoletaEsto resolvió mi problema: usar en
applicationVariants.all
lugar deapplicationVariants.each
Actualizar:
Por lo tanto, parece que esto no funciona con las versiones 0.14+ de Android Studio Gradle Plugin.
Esto hace el truco (Referencia de esta pregunta ):
fuente
versionName
definida enAndroidManifest.xml
lugar de gradle? Me damyapp-release-null.apk
ahoraeach
aall
youtput.outputFile
haciaoutputFileName
. Si alguien confirma que esto funciona, puede editarlo en la respuesta :)Error:(34, 0) Cannot set the value of read-only property 'name'
(EDITADO para trabajar con Android Studio 3.0 y Gradle 4)
Estaba buscando una opción de cambio de nombre de archivo apk más compleja y escribí esta con la esperanza de que sea útil para cualquier otra persona. Cambia el nombre del apk con los siguientes datos:
Me tomó un poco de investigación en clases de gradle y un poco de copiar / pegar de otras respuestas. Estoy usando gradle 3.1.3 .
En el build.gradle:
Si compila hoy (13-10-2016) a las 10:47, obtendrá los siguientes nombres de archivos según el sabor y el tipo de compilación que haya elegido:
Nota: el nombre apk de la versión no alineada sigue siendo el predeterminado.
fuente
each
aall
youtput.outputFile
aoutputFileName
" - este post proporciona algunos detalles al respecto: stackoverflow.com/a/44265374/2162226En resumen, para aquellos que no saben cómo importar paquetes
build.gradle
(como yo), use lo siguientebuildTypes
,===== EDITAR =====
Si configura su
versionCode
yversionName
en subuild.gradle
archivo de esta manera:Deberías configurarlo así:
====== EDITAR con Android Studio 1.0 ======
Si está utilizando Android Studio 1.0, recibirá un error como este:
Debería cambiar la
build.Types
parte a esto:fuente
Si no especifica versionName en el bloque defaultConfig
defaultConfig.versionName
, el resultado seránull
para obtener versionName del manifiesto, puede escribir el siguiente código en build.gradle:
fuente
En mi caso, solo quería encontrar una manera de automatizar la generación de
apk
nombresrelease
ydebug
variantes diferentes. Logré hacer esto fácilmente poniendo este fragmento como hijo deandroid
:Para el nuevo complemento de Android Gradle 3.0.0 puede hacer algo así:
Esto produce algo como:
My_nice_name_3.2.31_dbg.apk
fuente
Otra alternativa es usar lo siguiente:
Esto establecerá "appname-1.0.0" en todas sus salidas apk.
fuente
No such property: archivesBaseName for class: org.gradle.api.internal.project.DefaultProject_Decorated
Gradle 6+
Ahora estoy usando lo siguiente en Android Studio 4.0 y Gradle 6.4:
Gradle 4
La sintaxis ha cambiado un poco en Gradle 4 (Android Studio 3+) (de
output.outputFile
aoutputFileName
, la idea de esta respuesta ahora es:fuente
La forma correcta de cambiar el nombre de apk, según @Jon answer
O de otra manera puede lograr los mismos resultados con
fuente
Hay muchas respuestas que son correctas, ya sea en su totalidad o después de algunas modificaciones. Pero de todos modos voy a agregar el mío ya que estaba teniendo el problema con todos ellos porque estaba usando scripts para generar VersionName y VersionCode dinámicamente al conectarme al
preBuild
tarea.Si está utilizando un enfoque similar, este es el código que funcionará:
Para explicar: como estoy anulando el código de versión y el nombre en la primera acción de
preBuild
, tengo que agregar el cambio de nombre del archivo al final de esta tarea. Entonces, lo que hará Gradle en este caso es:Inyecte el código / nombre de la versión-> realice acciones previas a la creación -> reemplace el nombre para apk
fuente
fuente
En mi caso resuelvo este error de esta manera
agregando un SUFIJO a la versión de depuración, en este caso agrego el texto "-DEBUG" a mi implementación de depuración
fuente
versionNameSuffix
basado en la rama GIT? Por ejemplo, si no está en "maestro", siempre tenga un sufijo, incluso si es una versión de lanzamientoPara las últimas versiones de gradle puede usar el siguiente fragmento:
Establezca primero la ubicación del manifiesto de la aplicación
Y luego en build.gradle
Ajuste si tiene manifiestos diferentes por tipo de compilación. pero como tengo el único, funciona perfectamente para mí.
fuente
A partir de Android Studio 1.1.0, encontré que esta combinación funcionaba en el cuerpo de Android del
build.gradle
archivo. Esto es si no puede averiguar cómo importar los datos del archivo xml manifiesto. Desearía que fuera más compatible con Android Studio, pero solo juega con los valores hasta que obtengas la salida del nombre apk deseado:fuente