android - cordova platform git
Especificar configuraciĆ³n de firma para Gradle y Cordova 5 (6)
De acuerdo con la documentación oficial (v5.1.1 +) Acabo de agregar un build.json
{
"android": {
"release": {
"keystore": "android.keystore",
"storePassword": "storepassword",
"alias": "mykey",
"password" : "password",
"keystoreType": ""
}
}
}
y mi archivo android.keystore existente en la carpeta raíz cordova.
cordova build android --release
hará el truco, no se necesitan ganchos, el archivo apk puede encontrarse en ./platform/android/build/outputs/apk como android-release.apk .
En correspondencia con Cordova news versión de news 5.0.0 está lista. Traté de actualizar todos mis proyectos de Android como solía hacerlo.
Para actualizar el framework Cordova en sí mismo:
npm update -g cordova
Para actualizar la biblioteca en el proyecto de Android:
cordova platform update android
Después de compilar una nueva versión con la opción "--release":
cordova build android --release
Solo obtuve la versión sin firmar. Extraño...
Entonces, ¿cómo es posible reutilizar keystore existente (generado previamente por keytool y utilizado por Cordova 4.0.0) para obtener APK firmado?
En la última versión gradle también es posible crear un archivo llamado "release-signing.properties" en la carpeta "/ platforms / android /". El contenido debe ser:
storeFile=<your key>.keystore
storeType=jks
keyAlias=<your_alias>
keyPassword=<your_passwd>
storePassword=<your_passwd>
El archivo ".keystore" debe estar en la misma carpeta.
Para automatizar el proceso de lanzamiento de compilación, debe crear "build.json" en la carpeta de su proyecto e incluir el siguiente contenido:
{
"android": {
"release": {
"keystore": "android.keystore",
"storePassword": "storepassword",
"alias": "mykey",
"password" : "password",
"keystoreType": ""
}
}
}
El almacén de claves se genera usando
keytool -genkey -v -keystore my-release-key.keystore -alias alias_name -keyalg RSA -keysize 2048 -validity 10000
Si ya tiene un archivo de almacén de claves, ejecute el siguiente comando para conocer el contenido requerido
keytool -list -keystore .keystore
Entonces solo tienes que correr
cordova build android --release
Parece que Cordova 5.0.0 utiliza el sistema de automatización de compilación Gradle en lugar de Ant . Por lo tanto, las configuraciones originales para el almacén de claves definidas en el archivo "/plataformas/android/ant.properties" no se usarán durante la construcción. Por lo tanto, obtendremos APK sin firmar como resultado.
Para resolver este problema, debemos decirle a Gradle que también use el almacén de claves existente. La investigación de build.gradle nos brinda información útil que necesitamos para proporcionar signingConfigs.
Pero no es buena idea hacerlo en este archivo porque está etiquetado como generado automáticamente y no debería tener ninguna edición.
Así que finalmente encontré la manera de resolverlo. El objeto "signingConfigs" se construirá a partir de un archivo con el nombre de archivo almacenado en cdvReleaseSigningPropertiesFile . En correspondencia con la documentación, el valor predeterminado de esta variable es " release-signing.properties ". Así que solo necesitamos crear un nuevo archivo con dicho nombre en la misma carpeta que el archivo " build.gradle " y ponerlo dentro del siguiente contenido:
storeFile=..//..//some-keystore.keystore
storeType=jks
keyAlias=some-key
// if you don''t want to enter the password at every build, you can store it with this
keyPassword=your-key-password
storePassword=your-store-password
La ruta en el ejemplo se especifica para el almacén de claves guardado en el directorio raíz del proyecto. Tiene estilo de Windows ... En el caso de Linux necesitarás usar barras simples (no barras diagonales inversas como en el ejemplo anterior).
Además, puede establecer su propia ruta para firmar archivos de configuración. Para leer más sobre eso, consulte la versión de borde de la documentación de cordova .
Pasos - 1) Generar certificado de almacén de claves
Syntax - keytool -genkey -v -keystore C:/DIR/APPNAME.keystore -alias APPNAME -keyalg RSA -keysize 2048 -validity 10000
- 2) Copie el archivo de almacén de claves generado y péguelo en plataformas cd / android
3) Especifique la configuración de firma para Gradle Cree el archivo de propiedad del archivo - releas-signing.properties (nombre de archivo) Escriba las claves y los valores de abajo
Sintaxis
storeFile=..//..//some-keystore.keystore storeType=jks (pkcs12 for p12,jks for keystore) keyAlias=some-key // if you don''t want to enter the password at every build, you can store it with this keyPassword=your-key-password storePassword=your-store-password
Ejemplo
storeFile= abc.keystore
storePassword=mypass
storeType=jks
keyAlias=abc
keyPassword=mypass
- 4) Construir el proyecto cordova
cordova build android --suelta
- 5) Ejecutar el proyecto cordova
cordova run android --suelta
- 6) APK Relese creado en la siguiente ruta -
plataformas / android / build / outputs / apk
Para cordova 5.1.1+, consulte la respuesta de Ronny Elflein r11lein https://.com/a/30980293/2163398
La respuesta actual es buena (por @maxim), pero queremos mantener intacta la carpeta específica de la plataforma, por lo que podemos mantenerla fuera del control de la versión. Así que creé este Hook para copiar automáticamente el archivo "release-signing.properties" en la carpeta de Android.
Entonces, primero, coloque su almacén de claves en la raíz de su proyecto. Luego crea el "release-signing.properties" en la configuración de la carpeta, en la raíz de tu proyecto cordova. Contenidos (la ruta de storeFile en el ejemplo se especifica para el almacén de claves guardado en el directorio raíz del proyecto. Tiene estilo de Windows ... En el caso de Linux, necesitará usar barras sueltas):
storeFile=..//..//some-keystore.keystore
storeType=jks
keyAlias=some-key
// if you don''t want to enter the password at every build, you can store it with this
keyPassword=your-key-password
storePassword=your-store-password
Luego, agregue si no existe la carpeta "after_prepare" dentro de la carpeta "hooks", y cree en ella un archivo llamado "copy_assets.js" .Contents:
#!/usr/bin/env node
// Files to be copied, with source and destination
var ncp = require(''ncp'').ncp,
transfers = [
{
''source'': ''./config/android/release-signing.properties'',
''destination'': ''./platforms/android/release-signing.properties''
}
];
ncp.limit = 16;
transfers.forEach(function(transfer) {
ncp(transfer.source, transfer.destination, function (err) {
if (err) {
return console.error(err);
}
console.log(''====== Assets moved from '' + transfer.source + '' to '' + transfer.destination + '' ======'');
});
});
Si no hace ncp en su proyecto, abra una instrucción de comando en la raíz de la carpeta del proyecto y ejecute el comando (es posible que necesite crear un archivo packages.json en la raíz del proyecto):
npm install ncp
Entonces, puedes ejecutar:
cordova build android --release