web-dev-qa-db-fra.com

Construire une version Android apk sur Phonegap 3.x CLI

Comment créer une application Android localement à l'aide de la CLI Phonegap 3.x, prête à être commercialisée? Je vérifie le dossier bin généré dans le répertoire plates-formes/Android du projet et ne possède que des fichiers APK .debug.

Au fait, j'utilise cette commande: phonegap local build Android

107

Ceci est pour Phonegap 3.0.x à 3.3.x. Pour PhoneGap 3.4.0 et supérieur, voir ci-dessous .

Trouvé une partie de la réponse ici , dans la documentation Phonegap. Le processus complet est le suivant:

  1. Ouvrez une fenêtre de ligne de commande et accédez à/chemin/à/votre/projet/plates-formes/Android/cordova.

  2. Exécutez build --release. Cela crée une version non signée APK dans le dossier/chemin/vers/votre/projet/plates-formes/Android/bin, appelée YourAppName-release-unsigned.apk.

  3. Signez et alignez le fichier APK en suivant les instructions de Documents officiels du développeur Android .

Merci à @LaurieClark pour le lien ( http://iphonedevlog.wordpress.com/2013/08/16/using-phonegap-3-0-cli-on-mac-osx-10-to-build-ios- and-Android-projects/ ), et le blogueur qui l'a posté, car cela m'a mis sur la piste.

152

Dans PhoneGap 3.4.0, vous pouvez appeler:

cordova build Android --release

Si vous avez configuré le fichier 'ant.properties' dans le répertoire 'plateformes/Android' comme suit:

key.store=/Path/to/KeyStore/myapp-release-key.keystore
key.alias=myapp

Ensuite, vous serez invité à entrer votre mot de passe pour le fichier de clés et le fichier de sortie (myapp-release.apk) se retrouvera dans le répertoire "plates-formes/Android/ant-build" déjà signé, aligné et prêt à être déployé.

112
Steven Anderson

In cordova 6.2.0

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

Réponse précédente:

Selon cordova 5.0.0

{
     "Android": {
         "release": {
             "keystore": "app-release-key.keystore",
             "alias": "alias_name"
         }
     }
 }

et lancez ./build --release --buildConfig build.json à partir du répertoire platforms/Android/cordova/

l'emplacement du fichier de clés est relatif à platforms/Android/cordova/. Ainsi, dans la configuration ci-dessus, les fichiers .keystore et build.json se trouvent dans le même répertoire.

keytool -genkey -v -keystore app-release-key.keystore -alias alias_name -keyalg RSA -keysize 2048 -validity 10000

19
KrIsHnA

Après @ steven-anderson , Vous pouvez également configurer les mots de passe dans ant.properties, afin que le processus puisse être entièrement automatisé.

donc si vous mettez dans la plate-forme\Android\ant.properties ce qui suit

key.store=../../yourCertificate.jks
key.store.password=notSoSecretPassword
key.alias=userAlias
key.alias.password=notSoSecretPassword
15
Simone Avogadro

je me demandais simplement pas mal de choses parce que j'avais le même problème, mais dans mon installation, la commande "cordova" n'était jamais disponible et "phone gap build Android - release" ignorait simplement la plate-forme/Android/ant.properties. 

en cherchant dans mon filtre de plate-forme, j’ai trouvé un dossier nommé "Cordova" et à l’intérieur de celui-ci, un binaire "build" acceptant l’argument --release, il m’a demandé les chaînes de clés et j’ai terminé avec un fichier signé et prêt pour la production APK.

cela n’a jamais été documenté dans aucune partie du site d’écart téléphonique et, franchement, maintenant je déteste un peu l’écart téléphonique :( c’était censé faciliter les choses, mais tout était compliqué :(

4
Freaktor

j'ai réussi à le faire en copiant l'application apposée dans le même répertoire que zipalign. Il semble que aapt.exe n'a pas pu trouver le fichier source même avec le chemin d'accès. c'est-à-dire cela n'a pas fonctionné zipalign -f -v 4 C: ...\CordovaApp-release-unsigned.apk C: ...\destination.apkit a atteint aapt.exeCordovaApp-release- unsigned.apk, gelé et après avoir atteint la valeur renvoyée 'aapt.exeCordovaApp-release-unsigned.apk' n'est pas reconnu en tant que commande interne ou externe, programme utilisable ou fichier de traitement par lots . f -v 4 CordovaApp-release-unsigned.apk nomapplication.apk

1
robert deveau

Création de l'application Android PhoneGap en vue de son déploiement sur le Google Play Store

Ces étapes fonctionneraient pour Cordova, PhoneGap ou Ionic. La seule différence serait que, chaque fois qu'un appel à cordova est placé, remplacez-le par phonegap ou ionic, pour votre scénario particulier.

Une fois le développement terminé et prêt à être déployé, procédez comme suit:

  1. Ouvrez une fenêtre de ligne de commande (Terminal sous MacOS et Invite de commandes OR sous Windows).

  2. Rendez-vous sur le/chemin/vers/votre/projet /, que nous appellerions la racine du projet. 

  3. À la racine du projet, supprimez le plug-in "Console" de votre ensemble de plug-ins.

    La commande est la suivante: cordova plugin rm cordova-plugin-console

  4. Toujours à la racine du projet, utilisez la commande cordova build pour créer un APK pour la distribution des versions.

    La commande est la suivante: cordova build --release Android

  5. Le processus ci-dessus crée un fichier appelé Android-release-unsigned.apk dans le dossier ProjectRoot/platforms/Android/build/outputs/apk/

  6. Signez et alignez le fichier APK en suivant les instructions de https://developer.Android.com/studio/publish/app-signing.html#signing-manually

    À la fin de cette étape, l'APK que vous obtenez peut être téléchargé sur le Play Store.

Note: En tant que débutant ou débutant, la dernière étape est peut-être un peu déroutante pour moi. Vous pouvez rencontrer quelques problèmes et vous poser des questions sur ce que sont ces commandes et où les trouver.

Q1. Que sont jarsigner _ et keytool?
Ans: Les instructions de signature de l'application Android vous indiquent précisément ce que jarsigner et keytool ont à voir, mais il ne vous dit pas où les trouver commande introuvable erreur 'dans la fenêtre de ligne de commande.

Ainsi, si vous avez ajouté le kit de développement Java (JDK) à votre variable PATH, il suffit d'exécuter les commandes comme indiqué dans le Guide. MAIS, si vous ne l’avez pas dans votre PATH, vous pouvez toujours y accéder à partir du dossier bin de votre installation JDK.

Q2. Où est zipalign?
Ans: Il y a une forte probabilité de ne pas trouver la commande zipalign et de recevoir l'erreur 'commande non trouvée'. Vous seriez probablement en train de googler zipalign et où le trouver?

L’utilitaire zipalign est présent dans le dossier d’installation du SDK Android. Sur macOS, l'emplacement par défaut est: user-name/Library/Android/sdk/. Si vous vous dirigez vers le dossier, vous trouverez plusieurs autres dossiers tels que docs, platform-tools, build-tools, tools, add-ons...

Ouvrez le dossier build-tools. cd build-tools. Ici, il y aurait un certain nombre de dossiers qui sont versionnés en fonction de la chaîne d'outils de construction que vous utilisez dans Android SDK Manager. ZipAlign est disponible dans chacun de ces dossiers. Personnellement, je vais pour le dossier avec la dernière version à ce sujet. Ouvrez tout.

Sous macOS ou Linux, vous devrez peut-être utiliser ./zipalign plutôt que de simplement taper zipalign comme le mentionne la documentation. Sous Windows, zipalign est suffisant.

0
incorelabs

Je sais que cette question concerne spécifiquement Phonegap 3.X, mais il suffit de mentionner toute version de Phonegap supérieure à 4.0.0 utilise Gradle au lieu de Ant pour construire par défaut. Pour utiliser Ant à la place de Gradle, vous pouvez ajouter ceci à votre config.xml:

<preference name="Android-build-tool" value="ant" />

Lors de l'utilisation de Gradle, les informations de signature du fichier de clés doivent désormais être placées dans un nouvel emplacement ( comme indiqué dans cet article ). Créez un nouveau fichier appelé 'release-signing.properties' dans le même dossier que le fichier "build.gradle" et insérez-le dans le contenu suivant:

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
0
Julian