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