Comment créer un fichier APK signé en utilisant Cordova command line interface?

j'ai fait une demande Type appelée checkStatus . Maintenant je veux créer un fichier APK signé. Donc je peux l'installer dans différents appareils pour mes tests.

pour cela, J'ai googlé et trouvé cette documentation .

selon le document, je suis passé à mon répertoire de projet et j'ai lancé la commande suivante:

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

après avoir exécuté la commande ci-dessus, j'ai eu un fichier nommé key-name.keystore à projectRoot/key-name.keystore .

et ensuite j'ai copié-collé ce fichier dans projectRoot/platforms/android/key-name.keystore .

Après cela, j'ai créé un fichier nommé ant.properties et enregistré dans projectRoot/platforms/android .

j'ai écrit le code suivant dans le fichier:

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

après ça, j'ai lancé la commande suivante pour libérer

Cordova builds android --release

c'est lancer l'erreur suivante:

 /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)

Donc cette fois, j'ai modifié la valeur key.store dans le fichier ant.properties de la manière suivante.

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

encore une fois, j'ai lancé la commande cordova build android --release . Il jette la même erreur.

quelqu'un peut-il me dire ce que j'ai fait de mal?

138
demandé sur Flimzy 2014-10-19 14:19:22

8 réponses

Étape 1:

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

ajouter le --save de sorte qu'il supprime le plugin du fichier config.xml .

Étape 2:

pour générer une version de construction pour Android, nous avons d'abord besoin de faire un petit changement au fichier AndroidManifest.xml trouvé dans les plates-formes/android. Modifier le fichier et changer la ligne:

<application android:debuggable="true" android:hardwareAccelerated="true" android:icon="@drawable/icon" android:label="@string/app_name">

et remplacer android:debuggable par false :

<application android:debuggable="false" android:hardwareAccelerated="true" android:icon="@drawable/icon" android:label="@string/app_name">

à partir de cordova 6.2.0 supprimer complètement la balise android:debuggable. Voici l'explication de cordova:

Explication pour les questions de type "HardcodedDebugMode": Il est préférable d'exclure l'attribut android:debuggable du Manifeste. Si vous le faites, alors les outils inséreront automatiquement android: debuggable=true lors de la construction D'un APK pour déboguer sur un émulateur ou un périphérique. Et quand vous effectuer une compilation de version, comme L'exportation D'APK, il sera automatiquement à false.

si par contre vous spécifiez une valeur spécifique dans le fichier du Manifeste, alors les outils l'utiliseront toujours. Cela peut conduire à la publication accidentelle votre application avec des informations de débogage.

Étape 3:

maintenant, nous pouvons dire à cordova de générer notre version build:

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

alors, nous pouvons trouver notre APK non signé dossier platforms/android/ant-build . Dans notre exemple, le fichier était platforms/android/ant-build/Example-release-unsigned.apk

Étape 4:

Note: nous avons notre keystore keystoreNAME-mobileapps.keystore dans ce Git Repo, si vous voulez créer un autre, s'il vous plaît procéder avec les étapes suivantes.

Génération De La Clé:

syntaxe:

keytool -genkey -v -keystore <keystoreName>.keystore -alias <Keystore AliasName> -keyalg <Key algorithm> -keysize <Key size> -validity <Key Validity in Days>

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

alors le magasin de clés a été généré avec le nom comme NOM-applicationsmobiles.keystore

Étape 5:

Placer le fichier de clés générées dans

ancienne version cordova

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

nouvelle version cordova

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

pour signer L'APK non signé, Lancez l'outil jarsigner qui est également inclus dans le JDK:

syntaxe:

jarsigner -verbose -sigalg SHA1withRSA -digestalg SHA1 -keystore <keystorename> <Unsigned APK file> <Keystore Alias name>

Egs:

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

ou

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'

signe que l'apk est en place.

Étape 6:

enfin, nous devons lancer l'outil zip align tool pour optimiser L'APK:

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

ou

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

ou

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

maintenant nous avons notre binaire de publication finale appelé exemple.apk et nous pouvons le publier sur le Google Play Store.

256
répondu cfprabhu 2018-01-06 12:52:10

une mise à jour de @malcubierre pour Cordova 4 (et plus tard) -

créer un fichier appelé release-signing.properties et mettre dans APPFOLDER\platforms\android dossier

Contenu de la fiche: modifier après = pour tous à l'exception de la 2e ligne

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

alors cette commande devrait construire une version de publication:

cordova build android --release
95
répondu Jon 2016-12-22 23:16:44

dans l'actuelle documentation nous pouvons spécifier une construction.json avec le keystore:

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

et ensuite, exécutez le commando avec --buildConfig argumente, de cette façon:

cordova run android --buildConfig
39
répondu infinito84 2016-12-13 21:48:01

etape n ° 1:

Go to cordova\platforms\android ant créer un fichier appelé ant.properties fichier avec les informations de fichier keystore (ce keystore peut être généré à partir de votre SDK Android préféré, studio...):

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

etape n ° 2:

aller à cordova path et exécuter:

cordova build android --release

Note: Vous serez invité à demander votre keystore et mot de passe clé

une yourapp-release.apk apparaîtra dans \cordova\platforms\android\ant-build

18
répondu Martin Alcubierre Arenillas 2014-10-20 14:16:49

dans cordova 6.2.0 , il a un moyen facile de créer la construction de libération. voir les autres étapes ici étapes 1, 2 et 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
11
répondu KrIsHnA 2017-05-23 12:34:53

sur Mac (osx), j'en ai généré deux .fichiers sh, un pour la première publication et un autre pour la mise à jour:

#!/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

et pour mettre à jour votre application:

#!/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

en supposant que vous êtes dans votre dossier d'accueil ou un dossier au sommet de vos dossiers apps. Assurez-vous de configurer correctement chmod pour utiliser ce script. Puis:

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

signé apk seront dans Votre dossier App/plates-formes/android/build/sorties/apk/ SignedApk.apk Assurez-vous d'utiliser la bonne clé alias et mot de passe défini avec le premier script

5
répondu Ben 2016-08-01 21:38:55

Vérifiez D'abord votre code de version et le nom de la version si vous mettez à jour votre application. Et assurez-vous que vous avez un fichier antérieur.

si vous mettez à jour app puis suivre l'étape 1,3,4.

Étape 1:

allez à votre projet cordova pour générer notre version construire:

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

alors, nous pouvons trouver notre fichier APK non signé dans plates-formes/android/ant-build. Dans notre exemple, le fichier était

si u utilisé ant-construire

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

ou

si u utilisé gradle-build

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

Étape 2:

Génération De La Clé:

syntaxe:

keytool -genkey -v -keystore <keystoreName>.keystore -alias <Keystore AliasName> -keyalg <Key algorithm> -keysize <Key size> -validity <Key Validity in Days>

si la commande keytool ne reconnaît pas cette étape

vérifiez que le répertoire dans lequel se trouve l'exécutable keytool est sur votre chemin. (Par exemple, sur ma machine Windows 7, elle est en C:\Program fichiers (x86)\Java\jre6\bin.)

exemple:

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

puis le magasin de clés a été généré avec le nom comme nom-mobileapps.keystore

Étape 3:

placer le keystore généré dans D:\projects\Phonegap\Example\platforms\android\ant-build

pour signer L'APK non signé, Lancez l'outil jarsigner qui est également inclus dans le JDK:

syntaxe:

jarsigner -verbose -sigalg SHA1withRSA -digestalg SHA1 -keystore <keystorename <Unsigned APK file> <Keystore Alias name>

Si ce n'est pas reconize faire ces étapes

(1) cliquez avec le bouton droit de la souris sur" ce PC " > cliquez avec le bouton droit de la souris sur Propriétés > Paramètres Système avancés > Variables D'Environnement > sélectionnez chemin puis modifiez.

(2) ajoutez votre chemin de dossier bin jdk aux variables d'environnement, il devrait ressembler à ceci:

"C:\Program Fichiers\Java\jdk1.8.0_40\bin".

exemple:

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'

signe que l'apk est en place.

Étape 4:

enfin, nous devons lancer l'outil zip align tool pour optimiser L'APK:

si zipalign ne reconnaît pas alors

(1) allez sur votre chemin SDK android et trouver zipalign il est généralement dans android-sdk\build-tools\23.0.3

(2) Copiez zipalign fichier coller dans votre dossier generate release apk généralement dans le chemin ci-dessous

votreprojet/plates-formes/android/ant-build/Exemple-version-non signé.apk

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

ou

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

maintenant nous avons notre binaire de publication finale appelé example.apk et nous pouvons le publier sur le Google Play Store.

0
répondu Arpit Patel 2016-08-05 05:09:48

Construire cordova version APK fichier cmd.

MAGASIN de CLÉS de CHEMIN d'accès au FICHIER : fichier de magasin de clés (chemin F:/cordova/myApp/xxxxx.jks)

KEY STORE PASSWORD : xxxxx

KEY STORE ALIAS : xxxxx

key STORE ALIAS PASSWORD : xxxxx

chemin de zipalign.exe : zipalign.chemin du fichier exe (C:\Users\xxxx\AppData\Local\Android\sdk\build-tools\25.0.2\zipalign)

ANDROID UNSIGNED APK NAME : android-release-unsigned.apk

ANDROID RELEASE APK NAME : android-release.apk

exécuter les étapes ci-dessous dans cmd (exécuter en tant qu'administrateur)

  1. cordova build -- release android
  2. sur android-release-non signé.apk emplacement du fichier de PROJET (\plateformes\android\build\sorties\apk)
  3. jarsigner-verbose-sigalg SHA1withRSA-digestalg SHA1-keystore < KEY STORE file PATH > < ANDROID UNSIGNED APK NAME > < KEY STORE ALIAS >
  4. < chemin de zipalign.exe > - v 4 < ANDROID unsigned APK NAME > < VERSION ANDROID NOM APK >
0
répondu Om Shankar 2018-05-21 08:01:56