studio pro generate generar firmar configurar assembledebug android gradle apk android-gradle

android - pro - ¿Cómo generar apuntes firmados y sin firmar usando gradle?



generate release apk android studio (3)

Necesito generar apk de versión sin firmar y firmado utilizando la línea de comando de gradlew assembleRelease ( gradlew assembleRelease es el comando que estoy usando ahora)

Los apks deben estar alineados. Comprobé esto: compilar APK sin firmar con Gradle, pero parece ser una forma antigua de lograrlo, ahora no funciona y algo ha cambiado en las últimas versiones de la compilación de Android y Gradle. Y también necesito generar ambos apk al mismo tiempo, no solo modo de liberación o modo sin firmar


Sé que es una respuesta bastante antigua, pero aún podría ayudar a alguien a obtener su objetivo sin agregar sabor adicional (incluso en mi caso podría ser un desafío porque hay muchas dependencias en el proyecto).

android { signingConfigs { release { ... } } productFlavors { signed { signingConfig (checkUnsigned() ? null : signingConfigs.release) } } def checkUnsigned () { return project.hasProperty("unsigned") }

Para usarlo solo usa

gradle assembleRelease

o

gradle assembleRelease ''-Punsigned''

para crear unsigned (citas para CI, de lo contrario podría no ser necesario)

La desventaja de la solución es justamente cuando desea ensamblar varios sabores en una línea, es decir,

gradle assembleRelease assembleDebug assembleRelease ''-Punsigned''

assembleRelease comprueba todas las propiedades en la línea de comandos, por lo que primero assembleRelease será callse también con param ''-Punsigned'' Resolví este problema de CI mediante el uso de 2 comandos: uno para firmas firmadas, otro para versiones sin firmar

gradle assembleRelease assembleOtherFlavour ''-Punsigned'' gradle assembleDebug assembleRelease assembleOtherFlavour


Creo que buildTypes es un lugar más adecuado que productFlavors .
Puede ampliar su versión de lanzamiento reemplazando a signingConfig.

buildTypes { release { .... signingConfig signingConfigs.release } releaseUnsigned.initWith(buildTypes.release) releaseUnsigned { signingConfig null } }

Luego, para compilar ambos archivos APK:

./gradlew assemble

O si solo quieres compilaciones de versiones

./gradlew assembleRelease assembleReleaseUnsigned or ./gradlew assR assRU

Si realmente quieres usar solo la tarea assembleRelease, puedes hacer esta dependencia

assembleRelease.dependsOn assembleReleaseUnsigned

Y construir con solo

./gradlew assembleRelease


La respuesta a la que vinculó es correcta: si su variante elegida (es decir, el tipo de compilación + combinación de sabores) no utiliza una configuración de firma "firmada", gradle creará una APK sin firmar.

Entonces puedes definir una configuración como esta:

android { signingConfigs { release { ... } } productFlavors { signed { signingConfig signingConfigs.release // defined above } unsigned {} // use the default options } }

Luego ejecutando ./gradlew :app:assembleRelease creará sus APK:

app/build/outputs/apk ├── app-signed-release.apk ├── app-signed-release-unaligned.apk └── app-unsigned-release-unsigned.apk