Especificar firma de configuración para Gradle y Cordova 5

En correspondencia con Cordova la versión de noticias 5.0.0 está lista. He intentado actualizar todos mis proyectos de Android como lo era por lo general.

Para actualizar el propio marco de Cordova:

npm update -g cordova 

Para actualizar la biblioteca en el proyecto de Android:

 cordova platform update android 

Después de construir la nueva versión usando la opción "–release":

 cordova build android --release 

Sólo tengo una versión sin firmar. Extraño…
Entonces, ¿cómo es posible reutilizar keystore existente (previamente generado por keytool y utilizado por Cordova 4.0.0) para obtener firmado APK?

6 Solutions collect form web for “Especificar firma de configuración para Gradle y Cordova 5”

Parece que Cordova 5.0.0 utiliza el sistema de automatización de generación de Gradle en lugar de Ant . Por lo tanto, los ajustes originales para keystore definidos en el archivo "/platforms/android/ant.properties" no se utilizarán durante la creación. Así que obtendremos APK sin firmar como resultado.

Para solucionar este problema necesitamos decirle a Gradle que use el almacén de claves existente también. Investigación de build.gradle nos da información útil que necesitamos proporcionar signingConfigs.

Pero es mala idea hacer eso en este archivo porque está etiquetado como auto-generado y debe estar libre de cualquier edición.

Así que finalmente he encontrado la manera de resolverlo. El objeto "signedConfigs" se construirá a partir del archivo con el nombre de archivo almacenado en cdvReleaseSigningPropertiesFile . En correspondencia con la documentación el valor por defecto de esta variable es " release-signing.properties ". Así que solo necesitamos crear un nuevo archivo con ese 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 caso de Linux necesitará usar barras simples (no doble barra invertida como en el ejemplo anterior).

Además, puede establecer su propia ruta para el archivo de configuración de firmas. Para leer más sobre ese cheque la versión de borde de la documentación de Córdoba .

De acuerdo con la documentación oficial (v5.1.1 +) Acabo de añadir un build.json

 { "android": { "release": { "keystore": "android.keystore", "storePassword": "storepassword", "alias": "mykey", "password" : "password", "keystoreType": "" } } } 

Y mi archivo existente de android.keystore en la carpeta del cordova de la raíz.

cordova build android --release hará el truco, no necesita ganchos, el apk-archivo singned entonces se puede encontrar en ./platform/android/build/outputs/apk como android-release.apk .

Para cordova 5.1.1+, refiérase a Ronny Elflein r11lein answer https://stackoverflow.com/a/30980293/2163398

La respuesta actual es buena (por @maxim), pero queremos mantener la carpeta específica de la plataforma sin tocar, por lo que podemos mantenerla fuera del control de versiones. Así que creé este gancho para copiar automáticamente el archivo "release-signing.properties" en la carpeta android.

Así que, primero, coloque su keystore en la raíz del proyecto. A continuación, cree el "release-signing.properties" en la carpeta config, en la raíz de su proyecto cordova. Contenido (storeFile ruta en el ejemplo se especifica para keystore guardado en el directorio raíz del proyecto .. Tiene el estilo de Windows … En caso de Linux necesitará usar barras individuales):

 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 

A continuación, 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 un comando promt en la raíz de la carpeta del proyecto y ejecute el comando (es posible que necesite crear un archivo packages.json en su raíz del proyecto):

 npm install ncp 

A continuación, puede ejecutar:

 cordova build android --release 

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) Copiar el archivo keystore generado y pegar en las plataformas cd \ android
  • 3) Especificar la configuración de firma para Gradle Crear archivo de propiedad de archivo – release-signing.properties (nombre de archivo) Escribir las teclas y los valores

    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 proyecto Córdoba

Cordova construir android –release

  • 5) Ejecutar proyecto cordova

Cordova ejecutar android –release

  • 6) Relese APK creado en la siguiente ruta –

Plataformas \ android \ build \ outputs \ apk

Para automatizar el proceso de creación de la versió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 keytore 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, simplemente ejecute el comando siguiente para conocer el contenido requerido

 keytool -list -keystore .keystore 

Entonces solo tienes que correr

 cordova build android --release 

En la versión gradle más reciente también es posible crear un archivo llamado "release-signing.properties" en la carpeta "\ platform \ 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.

  • ¿Es posible tener un módulo de biblioteca java simple dependiendo del androide SDK en Android Studio
  • Incrementar versión en la compilación del proyecto
  • TransformClassesAndResourcesWithProguardForRelease FALLA
  • Com.android.support:design:24.1.0 no se muestra correctamente en la barra de navegación
  • Android-Studio: Error: No se pudo crear la Máquina Virtual Java
  • Especificación de XML adicional para AndroidManifest generado por gradle
  • Android Studio No se pudo llamar a IncrementalTask.taskAction () en la tarea ': project: dexDebug'
  • Estudio Android con gradle experimental 0.2.0
  • 'No se encontró ningún identificador de recurso para el atributo', incluso después de usar el espacio de nombres http://schemas.android.com/apk/res-auto
  • Android Studio - Exportar la biblioteca de Android aar con gradle puro
  • Error: (3, 0) Causa: org / apache / commons / lang3 / StringUtils
  • FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.