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?
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.
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
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
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
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
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
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.
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)
- cordova build -- release android
- sur android-release-non signé.apk emplacement du fichier de PROJET (\plateformes\android\build\sorties\apk)
- jarsigner-verbose-sigalg SHA1withRSA-digestalg SHA1-keystore < KEY STORE file PATH > < ANDROID UNSIGNED APK NAME > < KEY STORE ALIAS >
- < chemin de zipalign.exe > - v 4 < ANDROID unsigned APK NAME > < VERSION ANDROID NOM APK >