Construire l'APK de la version Android sur la CLI Phonegap 3.x

108

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

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

Guillermo Gutiérrez
la source

Réponses:

153

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

J'ai 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 / vers / votre / projet / plates-formes / android / cordova .

  2. Courez build --release. Cela crée un fichier APK de version non signé dans / chemin / vers / votre dossier / projet / plates-formes / android / bin , appelé YourAppName-release-unsigned.apk.

  3. Signez et alignez l'APK en suivant les instructions de la documentation officielle 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 bonne voie.

Guillermo Gutiérrez
la source
9
J'ai dû modifier manuellement mon fichier AndroidManifest.xml où j'avais <application android:debuggable="true"...besoin de changer pour<application android:debuggable="false"
Ian Jamieson
3
Vous devez également zipper aligner la chose après: zipalign -v 4 votre-unaligned.apk votre-aligné.apk
Damian
13
J'utilise Cordova 3.4.1-0.1.0 et le fichier est créé dans/path/to/your/project/platforms/android/ant-build
AlexStack
1
Il semble que, étant spécifique, c'est pour phonegap 3.0.x à 3.3.x, à partir de 3.4.x et à venir cela peut varier.
Guillermo Gutiérrez
Merci beaucoup Guillermo. +1
Quick_Silver
112

Dans PhoneGap 3.4.0, vous pouvez appeler:

cordova build android --release

Si vous avez configuré le fichier «ant.properties» dans le répertoire «plates-formes / android» comme suit:

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

Ensuite, vous serez invité à entrer le mot de passe de votre keystore et le fichier de sortie (myapp-release.apk) se termine dans le répertoire «plates-formes / android / ant-build» déjà signé et aligné et prêt à être déployé.

Steven Anderson
la source
1
La version 3.4.0 actuelle de Cordova n'inclut pas de fichier «ant-properties».
SteAp
8
Créé ant.propertiesdans platforms/androidet vient d'y déposer ces deux propriétés. Fonctionne parfaitement, merci!
Adam Tuttle
6
Si vous n'êtes pas sûr du keystore / alias ou de la façon de les créer, tous les détails sont disponibles sur developer.android.com/tools/publishing/app-signing.html
Shai
6
Notez également que vous pouvez spécifier les propriétés key.store.password et key.alias.password dans ce fichier, vous n'aurez donc pas à le saisir à chaque fois que vous construirez la version. Bien sûr, soyez prudent et ne validez pas ce fichier dans le système de version.
vbezhenar
5
Pour cordova 5.0.0 et supérieur, créez un build.json à la racine de votre projet et remplissez-le avec {"android": {"release": {"keystore": "/path/to/your.keystore", "alias ":" youalias "}}} au lieu du fichier ant.properties. FYI cordova.apache.org/docs/en/edge/…
artberri
19

Dans 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 exécuter à ./build --release --buildConfig build.jsonpartir du répertoireplatforms/android/cordova/

l'emplacement du fichier de clés est relatif à platforms/android/cordova/, donc dans le .keystorefichier de configuration ci-dessus et build.jsonsont dans le même répertoire.

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

KrIsHnA
la source
15

Suite à @ steven-anderson, vous pouvez également configurer des mots de passe dans le fichier ant.properties, afin que le processus puisse être entièrement automatisé

donc si vous mettez dans platform \ android \ ant.properties ce qui suit

key.store=../../yourCertificate.jks
key.store.password=notSoSecretPassword
key.alias=userAlias
key.alias.password=notSoSecretPassword
Simone Avogadro
la source
1
Sous Windows, vous devez éviter les barres obliques ... '... key.store = C: \\ OpenSSL-Win32 \\ certs \\ android_key_store.keystore ...'
bkomac
4

je me suis beaucoup posé des questions 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" a simplement ignoré la plate-forme / android / ant.properties.

alors en regardant à l'intérieur de mon filtre de plate-forme, j'ai trouvé un dossier nommé "cordova" et à l'intérieur il y avait un binaire "build" qui acceptait l'argument --release, il m'a demandé les porte-clés et j'ai terminé avec un signé et prêt pour la production APK.

cela n'a jamais été documenté dans aucune partie du site de phone gap et franchement maintenant, je déteste un peu phonegap: (c'était censé rendre les choses plus faciles mais tout était simplement compliqué :(

Freaktor
la source
2

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

Ces étapes fonctionneraient pour Cordova, PhoneGap ou Ionic. La seule différence serait que, partout où un appel cordovaest placé, remplacez-le par phonegapou ionic, pour votre scénario particulier.

Une fois que vous avez terminé le développement et que vous êtes prêt à déployer, procédez comme suit:

  1. Ouvrez une fenêtre de ligne de commande (Terminal sous macOS et Linux OU Invite de commandes sous Windows).

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

  3. À la racine du projet, supprimez le plugin "Console" de votre ensemble de plugins.

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

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

    La commande est:cordova build --release android

  5. Le processus ci-dessus crée un fichier appelé android-release-unsigned.apkdans le dossierProjectRoot/platforms/android/build/outputs/apk/

  6. Signez et alignez l'APK en suivant les instructions sur 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 .

Remarque: En tant que débutant ou débutant, la dernière étape peut être un peu déroutante pour moi. On peut rencontrer quelques problèmes et avoir des questions sur ce que sont ces commandes et où les trouver.

Q1. Que sont jarsigner et keytool ?
Réponse: Les instructions de signature d'applications Android vous indiquent spécifiquement ce que sont jarsigner et keytool MAIS elles ne vous indiquent pas où les trouver si vous rencontrez une `` erreur de commande introuvable '' dans la fenêtre de ligne de commande.

Ainsi, si vous avez ajouté le Java Development Kit (JDK) à votre variable PATH , il suffit d'exécuter les commandes comme 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 ?
Réponse: Il y a une forte probabilité de ne pas trouver la commande zipalign et de recevoir la «commande introuvable». Vous chercheriez probablement zipalign sur Google et où le trouver?

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

Ouvrez le build-toolsdossier. 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. ZipAlignest disponible dans chacun de ces dossiers. Personnellement, je vais chercher le dossier avec la dernière version. Ouvrez Any.

Sur macOS ou Linux, vous devrez peut-être utiliser ./zipalignplutôt que de simplement taper zipaligncomme le mentionne la documentation. Sous Windows, zipalignc'est assez bon.

incorelabs
la source
1

J'ai fait fonctionner cela en copiant-collant l'application signée dans le même répertoire que zipalign. Il semble que aapt.exe n'a pas pu trouver le fichier source même s'il lui a été donné le chemin. c'est-à-dire que cela n'a pas fonctionné zipalign -f -v 4 C: ... \ CordovaApp-release-unsigned.apk C: ... \ destination.apk il a atteint aapt.exeCordovaApp-release-unsigned.apk, s'est figé et en appuyant sur retour 'aapt.exeCordovaApp-release-unsigned.apk' n'est pas reconnu comme une commande interne ou externe, un programme utilisable ou un fichier de commandes. Et cela a fait zipalign -f -v 4 CordovaApp-release-unsigned.apk myappname.apk

robert deveau
la source
Merci pour le conseil. Vous pouvez également inclure le chemin d'accès au dossier de zipalign dans la variable d'environnement PATH.
Guillermo Gutiérrez
0

Je sais que cette question concerne spécifiquement Phonegap 3.X, mais juste pour référence, toute version de Phonegap supérieure à 4.0.0 utilise Gradle au lieu de Ant pour construire par défaut. Pour utiliser Ant au lieu 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 keystore doivent maintenant aller 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 placez-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
julien
la source
-7

Vous pouvez essayer cette commande, elle devrait générer et exécuter l'application (donc .apk devrait être créé):

phonegap local run android

Laurie Clark
la source
3
Il ne crée toujours que les APK de débogage.
Guillermo Gutiérrez
2
Non, c'est juste qu'il crée des APK signés de débogage, pas de version des APK.
Guillermo Gutiérrez
1
Vous avez trouvé la solution ici (3/4 en bas: "Finaliser l'apk pour Google Play Upload"): iphonedevlog.wordpress.com/2013/08/16
Laurie Clark