¿Cómo crear un archivo APK firmado utilizando la interfaz de línea de comandos de Cordova?

Hice una aplicación de muestra llamada checkStatus . Ahora quiero crear un archivo APK firmado. Entonces puedo instalarlo en diferentes dispositivos para mi prueba.

Para esto, busqué en Google y encontré esta documentación .

Según el documento, cambié a mi directorio de proyecto y ejecuté el siguiente comando:

 keytool -genkey -v -keystore key-name.keystore -alias alias-name -keyalg RSA -keysize 2048 -validity 10000 

Después de ejecutar el comando anterior, obtuve un archivo llamado key-name.keystore en projectRoot/key-name.keystore .

Y luego projectRoot/platforms/android/key-name.keystore ese archivo en projectRoot/platforms/android/key-name.keystore .

Después de eso, creé un archivo llamado ant.properties y lo projectRoot/platforms/android en projectRoot/platforms/android .

Escribí el siguiente código dentro del archivo:

 key.store=projectRoot/key-name.keystore key.alias=myApp 

Después de eso, ejecuté el siguiente comando para liberar

 Cordova builds android --release 

Lanza el siguiente error:

  /home/projectRoot/platforms/android/cordova/node_modules/q/q.js:126 throw e; ^ Error code 1 for command: ant with args: release,-f,/home/projectRoot/platforms/android/build.xml,-Dout.dir=ant-build,-Dgen.absolute.dir=ant-gen Error: /home/projectRoot/platforms/android/cordova/build: Command failed with exit code 8 at ChildProcess.whenDone (/usr/lib/node_modules/cordova/node_modules/cordova-lib/src/cordova/superspawn.js:135:23) at ChildProcess.EventEmitter.emit (events.js:98:17) at maybeClose (child_process.js:753:16) at Process.ChildProcess._handle.onexit (child_process.js:820:5) 

Así que esta vez modifiqué el valor de ant.properties en el archivo ant.properties de la siguiente manera.

  key.store=/home/projectRoot/platforms/android/key-name.keystore 

Una vez más, ejecuté el comando cordova build android --release . Lanza el mismo error.

¿Alguien puede decirme qué he hecho mal?

Paso 1:

 D:\projects\Phonegap\Example> cordova plugin rm org.apache.cordova.console --save 

agregue the --save para que elimine el complemento del archivo config.xml .

Paso 2:

Para generar una comstackción de lanzamiento para Android, primero debemos realizar un pequeño cambio en el archivo AndroidManifest.xml que se encuentra en las plataformas / android. Edite el archivo y cambie la línea:

  

y cambiar android:debuggable a false :

  

A partir de cordova 6.2.0, elimine completamente la etiqueta android: debuggable. Aquí está la explicación de cordova:

Explicación de problemas del tipo “HardcodedDebugMode”: es mejor omitir el atributo android: debuggable del manifiesto. Si lo hace, entonces las herramientas insertarán automáticamente android: debuggable = true cuando construya un APK para depurar en un emulador o dispositivo. Y cuando realiza una comstackción de lanzamiento, como Exportar APK, la configurará automáticamente en falso.

Si, por otro lado, especifica un valor específico en el archivo de manifiesto, entonces las herramientas siempre lo usarán. Esto puede provocar la publicación accidental de su aplicación con información de depuración.

Paso 3:

Ahora podemos decirle a cordova que genere nuestra versión de lanzamiento:

 D:\projects\Phonegap\Example> cordova build --release android 

Entonces, podemos encontrar nuestro archivo APK sin firmar en platforms/android/ant-build . En nuestro ejemplo, el archivo era platforms/android/ant-build/Example-release-unsigned.apk

Etapa 4:

Nota: Tenemos nuestro keystore keystoreNAME-mobileapps.keystore en este Git Repo, si desea crear otro, proceda con los siguientes pasos.

Generación clave:

Sintaxis:

 keytool -genkey -v -keystore .keystore -alias  -keyalg  -keysize  -validity  

Egs:

 keytool -genkey -v -keystore NAME-mobileapps.keystore -alias NAMEmobileapps -keyalg RSA -keysize 2048 -validity 10000 keystore password? : xxxxxxx What is your first and last name? : xxxxxx What is the name of your organizational unit? : xxxxxxxx What is the name of your organization? : xxxxxxxxx What is the name of your City or Locality? : xxxxxxx What is the name of your State or Province? : xxxxx What is the two-letter country code for this unit? : xxx 

Luego, el almacén de claves se ha generado con el nombre de NAME-mobileapps.keystore

Paso 5:

Coloque el almacén de claves generado en

versión antigua cordova

 D:\projects\Phonegap\Example\platforms\android\ant-build 

Nueva versión cordova

 D:\projects\Phonegap\Example\platforms\android\build\outputs\apk 

Para firmar el APK sin firmar, ejecute la herramienta jarsigner que también se incluye en el JDK:

Sintaxis:

 jarsigner -verbose -sigalg SHA1withRSA -digestalg SHA1 -keystore    

Egs:

 D:\projects\Phonegap\Example\platforms\android\ant-build> jarsigner -verbose -sigalg SHA1withRSA -digestalg SHA1 -keystore NAME-mobileapps.keystore Example-release-unsigned.apk xxxxxmobileapps 

O

 D:\projects\Phonegap\Example\platforms\android\build\outputs\apk> jarsigner -verbose -sigalg SHA1withRSA -digestalg SHA1 -keystore NAME-mobileapps.keystore Example-release-unsigned.apk xxxxxmobileapps Enter KeyPhrase as 'xxxxxxxx' 

Esto firma el apk en su lugar.

Paso 6:

Finalmente, necesitamos ejecutar la herramienta de alineación de zip para optimizar el APK:

 D:\projects\Phonegap\Example\platforms\android\ant-build> zipalign -v 4 Example-release-unsigned.apk Example.apk 

O

 D:\projects\Phonegap\Example\platforms\android\ant-build> C:\Phonegap\adt-bundle-windows-x86_64-20140624\sdk\build-tools\android-4.4W\zipalign -v 4 Example-release-unsigned.apk Example.apk 

O

 D:\projects\Phonegap\Example\platforms\android\build\outputs\apk> C:\Phonegap\adt-bundle-windows-x86_64-20140624\sdk\build-tools\android-4.4W\zipalign -v 4 Example-release-unsigned.apk Example.apk 

Ahora tenemos nuestro binario de lanzamiento final llamado example.apk y podemos lanzarlo en Google Play Store.

Una actualización de @malcubierre para Cordova 4 (y posterior) –

Cree un archivo llamado release-signing.properties y APPFOLDER\platforms\android en la APPFOLDER\platforms\android

Contenido del archivo: edit after = for all excepto 2nd line

 storeFile=C:/yourlocation/app.keystore storeType=jks keyAlias=aliasname keyPassword=aliaspass storePassword=password 

Entonces este comando debe construir una versión de lanzamiento:

 cordova build android --release 

En la documentación actual, podemos especificar un build.json con el almacén de claves:

 { "android": { "debug": { "keystore": "..\android.keystore", "storePassword": "android", "alias": "mykey1", "password" : "password", "keystoreType": "" }, "release": { "keystore": "..\android.keystore", "storePassword": "", "alias": "mykey2", "password" : "password", "keystoreType": "" } } } 

Y luego, ejecute el comando con –buildConfig argumente, de esta manera:

 cordova run android --buildConfig 

Paso 1:

Vaya a cordova\platforms\android create una fille llamada archivo ant.properties con la información del archivo de almacén de claves (este almacén de claves se puede generar desde su SDK de Android favorito, estudio …):

 key.store=C:\\yourpath\\Yourkeystore.keystore key.alias=youralias 

Paso 2:

Ir a la ruta cordova y ejecutar:

 cordova build android --release 

Nota: se le pedirá que pregunte su keystore y clave de contraseña

Aparecerá YourApp-release.apk en \cordova\platforms\android\ant-build

En cordova 6.2.0 , tiene una manera fácil de crear versiones comstackdas . consulte otros pasos aquí Pasos 1, 2 y 4

 cd cordova/ #change to root cordova folder platforms/android/cordova/clean #clean if you want cordova build android --release -- --keystore="/path/to/keystore" --storePassword=password --alias=alias_name #password will be prompted if you have any 

En Mac (osx), generé dos archivos .sh, uno para la primera publicación y otro para actualizar:

 #!/bin/sh echo "Ionic to Signed APK ---- b@agencys.eu // Benjamin Rathelot\n" printf "Project dir : " read DIR printf "Project key alias : " read ALIAS cd $DIR/ cordova build --release android cd platforms/android/build/outputs/apk/ keytool -genkey -v -keystore my-release-key.keystore -alias $ALIAS -keyalg RSA -keysize 2048 -validity 10000 jarsigner -verbose -sigalg SHA1withRSA -digestalg SHA1 -keystore my-release-key.keystore android-release-unsigned.apk $ALIAS zipalign -v 4 android-release-unsigned.apk signedApk.apk 

Y para actualizar tu aplicación:

 #!/bin/sh echo "Ionic to Signed APK ---- b@agencys.eu // Benjamin Rathelot\n" printf "Project dir : " read DIR printf "Project key alias : " read ALIAS cd $DIR/ cordova build --release android cd platforms/android/build/outputs/apk/ rm signedApk.apk jarsigner -verbose -sigalg SHA1withRSA -digestalg SHA1 -keystore my-release-key.keystore android-release-unsigned.apk $ALIAS zipalign -v 4 android-release-unsigned.apk signedApk.apk 

Suponiendo que está en su carpeta de inicio o en una carpeta que encabeza sus carpetas de aplicaciones. Asegúrese de configurar correctamente chmod para usar este script. Entonces :

 ./ionicToApk.sh # or whatever depending of the name of your file, in CLI 

Su apk firmado estará en su carpeta de aplicaciones / platforms / android / build / outputs / apk / como SignedApk.apk Asegúrese de usar el alias de clave y la contraseña correctos definidos con el primer script

Primero, compruebe el código de la versión y el nombre de la versión si está actualizando su aplicación. Y asegúrate de tener un almacén de claves anterior.

Si está actualizando la aplicación, siga el paso 1,3,4.

Paso 1:

Vaya a su proyecto de cordova para generar nuestra versión de lanzamiento:

 D:\projects\Phonegap\Example> cordova build --release android 

Entonces, podemos encontrar nuestro archivo APK sin firmar en plataformas / android / ant-build. En nuestro ejemplo, el archivo era

si usaste ant-build

 yourproject/platforms/android/ant-build/Example-release-unsigned.apk 

O

si usaste gradle-build

 yourProject/platforms/android/build/outputs/apk/Example-release-unsigned.apk 

Paso 2:

Generación clave:

Sintaxis:

 keytool -genkey -v -keystore .keystore -alias  -keyalg  -keysize  -validity  

si el comando keytool no reconoce hacer este paso

Compruebe que el directorio en el que se encuentra el ejecutable keytool esté en su ruta. (Por ejemplo, en mi máquina con Windows 7, está en C: \ Archivos de progtwig (x86) \ Java \ jre6 \ bin.)

Ejemplo:

 keytool -genkey -v -keystore NAME-mobileapps.keystore -alias NAMEmobileapps -keyalg RSA -keysize 2048 -validity 10000 keystore password? : xxxxxxx What is your first and last name? : xxxxxx What is the name of your organizational unit? : xxxxxxxx What is the name of your organization? : xxxxxxxxx What is the name of your City or Locality? : xxxxxxx What is the name of your State or Province? : xxxxx What is the two-letter country code for this unit? : xxx 

Luego, el almacén de claves se ha generado con el nombre de NAME-mobileapps.keystore

Paso 3:

Coloque el almacén de claves generado en D: \ projects \ Phonegap \ Example \ platforms \ android \ ant-build

Para firmar el APK sin firmar, ejecute la herramienta jarsigner que también se incluye en el JDK:

Sintaxis:

 jarsigner -verbose -sigalg SHA1withRSA -digestalg SHA1 -keystore   

Si no se concede, haz estos pasos

(1) Haga clic con el botón derecho en “Esta PC”> haga clic con el botón derecho en Propiedades> Configuración avanzada del sistema> Variables de entorno> seleccione RUTA y luego EDITAR.

(2) Agregue la ruta de la carpeta jdk bin a las variables de entorno, debería verse así:

“C: \ Archivos de progtwig \ Java \ jdk1.8.0_40 \ bin”.

Ejemplo:

 D:\projects\Phonegap\Example\platforms\android\ant-build> jarsigner -verbose -sigalg SHA1withRSA -digestalg SHA1 -keystore NAME-mobileapps.keystore Example-release-unsigned.apk xxxxxmobileapps Enter KeyPhrase as 'xxxxxxxx' 

Esto firma el apk en su lugar.

Etapa 4:

Finalmente, necesitamos ejecutar la herramienta de alineación de zip para optimizar el APK:

si zipalign no reconoce entonces

(1) vaya a su ruta de SDK de Android y busque Zipalign, por lo general, está en android-sdk \ build-tools \ 23.0.3

(2) Copie el archivo zipalign pegado en su carpeta generate release apk usualmente debajo de la ruta

yourproject / platforms / android / ant-build / Example-release-unsigned.apk

 D:\projects\Phonegap\Example\platforms\android\ant-build> zipalign -v 4 Example-release-unsigned.apk Example.apk 

O

 D:\projects\Phonegap\Example\platforms\android\ant-build> C:\Phonegap\adt-bundle-windows-x86_64-20140624\sdk\build-tools\android-4.4W\zipalign -v 4 Example-release-unsigned.apk Example.apk 

Ahora tenemos nuestro binario de lanzamiento final llamado example.apk y podemos lanzarlo en Google Play Store.

Crear archivo APK de lanzamiento de cordova en cmd.

RUTA DE ARCHIVOS DE KEY STORE : ruta del archivo keystore (F: /cordova/myApp/xxxxx.jks)

CONTRASEÑA DE KEY STORE : xxxxx

ALIAS DE LA TIENDA DE LA CLAVE : xxxxx

CLAVE ALIAS CONTRASEÑA ALIAS : xxxxx

RUTA DE zipalign.exe : ruta del archivo zipalign.exe (C: \ Users \ xxxx \ AppData \ Local \ Android \ sdk \ build-tools \ 25.0.2 \ zipalign)

NOMBRE DEL APK SIN FIRMAR ANDROID : android-release-unsigned.apk

ANDROID RELEASE APK NOMBRE : android-release.apk

Ejecuta debajo de los pasos en cmd (ejecuta como administrador)

  1. cordova build –release Android
  2. vaya a la ubicación del archivo android-release-unsigned.apk (PROJECT \ platforms \ android \ build \ outputs \ apk)
  3. jarsigner -verbose -sigalg SHA1withRSA -digestalg SHA1 -keystore < KEY STORE FILE PATH > < ANDROID UNSIGNED APK NOMBRE > < KEY STORE ALIAS >
  4. < RUTA DE zipalign.exe > -v 4 < NOMBRE DEL DISTRITO DE ANDROID SIN FIRMAR > < NOMBRE DEL APK DE ANDROID RELEASE >