android cordova gradle

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