web-dev-qa-db-ger.com

Erstellen Sie ein Android-Release-Apk für Phonegap 3.x CLI

Wie kann ich mit der Phonegap 3.x-CLI eine Android-App lokal erstellen, die zur Veröffentlichung bereit ist? Ich überprüfe den bin-Ordner, der in dem platform/Android-Verzeichnis des Projekts generiert wird, und hat nur .debug-APKs.

Übrigens benutze ich diesen Befehl: phonegap local build Android

107

Dies gilt für Phonegap 3.0.x bis 3.3.x. Für PhoneGap 3.4.0 und höher siehe unten .

Teil der Antwort hier in der Phonegap-Dokumentation gefunden. Der vollständige Prozess ist der folgende:

  1. Öffnen Sie ein Befehlszeilenfenster und gehen Sie zu/Pfad/zu Ihrem/Projekt/Plattformen/Android/Cordova.

  2. Führen Sie build --release aus. Dadurch wird ein nicht signiertes Release-APK im Ordner/path/to/your/project/platform/Android/bin mit dem Namen YourAppName-release-unsigned.apk erstellt.

  3. Unterzeichnen und richten Sie die APK anhand der Anweisungen unter Offizielle Dokumente des offiziellen Android-Entwicklers aus.

Vielen Dank an @LaurieClark für den Link ( http://iphonedevlog.wordpress.com/2013/08/16/using-phonegap-3-0-cli-on-mac-osx-10-to-build-ios) -und-Android-Projekte / ) und der Blogger, der es veröffentlicht, weil es mich auf die Spur gebracht hat.

152

In PhoneGap 3.4.0 können Sie anrufen:

cordova build Android --release

Wenn Sie die Datei "ant.properties" im Verzeichnis "platform/Android" wie folgt eingerichtet haben:

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

Anschließend werden Sie zur Eingabe Ihres Keystore-Kennworts aufgefordert, und die Ausgabedatei (myapp-release.apk) wird im Verzeichnis "Platforms/Android/ant-build" bereits signiert und ausgerichtet und ist bereit für die Bereitstellung.

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

Vorherige Antwort:

Laut Cordova 5.0.0

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

und ./build --release --buildConfig build.json aus dem Verzeichnis platforms/Android/cordova/ ausführen

die Position der Keystore-Datei ist relativ zu platforms/Android/cordova/. In der obigen Konfiguration befinden sich .keystore-Datei und build.json im selben Verzeichnis.

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

19
KrIsHnA

Nach bis zu @ steven-anderson Können Sie auch Kennwörter in den ant.properties konfigurieren, sodass der Prozess vollständig automatisiert werden kann

wenn Sie also in Plattform\Android\ant.properties Folgendes eingeben:

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

ich habe mich viel gefragt, weil ich das gleiche Problem habe, aber in meiner Installation war der Befehl "Cordova" nie verfügbar und "Phone Gap Build Android - Release" ignorierte die Plattform/Android/ant.properties. 

ich schaute in meinen Plattform-Filter und fand einen Ordner namens "Cordova". Darin befand sich eine Binärdatei "Build", die das Argument --release akzeptierte. Es fragte mich nach den Schlüsselketten und ich endete mit einer signierten und für die Produktion bereiten Produktion APK.

das war nie in einem Teil der Telefonlücke dokumentiert und ehrlich gesagt hasse ich Phonegap :( Es sollte die Dinge einfacher machen, aber alles war nur kompliziert :(

4
Freaktor

ich habe das zum Laufen gebracht, indem ich die signierte App in das gleiche Verzeichnis wie zipalign kopiere. Es scheint, dass aapt.exe die Quelldatei nicht finden konnte, auch wenn der Pfad angegeben wurde. dh das hat nicht funktioniert zipalign -f -v 4 C: ...\CordovaApp-release-unsigned.apk C: ...\destination.apkit erreichte aapt.exeCordovaApp-release- unsigned.apk, eingefroren und beim Drücken der Eingabetaste 'aapt.exeCordovaApp-release-unsigned.apk' wird nicht als interner oder externer Befehl, als bedienbares Programm oder als Batchdatei erkannt. f -v 4 CordovaApp-release-unsigned.apk myappname.apk

1
robert deveau

Erstellen der PhoneGap Android-App für die Bereitstellung im Google Play Store

Diese Schritte funktionieren für Cordova, PhoneGap oder Ionic. Der einzige Unterschied wäre, wo immer ein Aufruf an cordova erfolgt, dieser für Ihr Szenario durch phonegap oder ionic zu ersetzen.

Wenn Sie mit der Entwicklung fertig sind und bereit sind, sie bereitzustellen, führen Sie die folgenden Schritte aus:

  1. Öffnen Sie ein Befehlszeilenfenster (Terminal unter macOS und Linux OR - Eingabeaufforderung unter Windows).

  2. Gehen Sie zu/path/to/your/project /, das wir als Projektstamm bezeichnen würden. 

  3. Entfernen Sie im Projektstamm das "Console" -Plugin aus Ihrer Gruppe von Plugins.

    Der Befehl lautet: cordova plugin rm cordova-plugin-console

  4. Wenn Sie sich noch im Projektstamm befinden, erstellen Sie mit dem Befehl cordova build eine APK für die Release-Verteilung.

    Der Befehl lautet: cordova build --release Android

  5. Der obige Prozess erstellt eine Datei mit dem Namen Android-release-unsigned.apk im Ordner ProjectRoot/platforms/Android/build/outputs/apk/.

  6. Unterzeichnen und richten Sie das APK mit den Anweisungen unter https://developer.Android.com/studio/publish/app-signing.html#signing-manually aus.

    Am Ende dieses Schrittes kann der APK, den Sie erhalten, in den Play Store hochgeladen werden.

Anmerkung: Als Neuling oder Anfänger kann der letzte Schritt ein wenig verwirrend sein, wie es für mich war. Es kann sein, dass einige Probleme auftauchen und einige Fragen dazu bestehen, was diese Befehle sind und wo sie zu finden sind.

Q1. Was sind jarsigner und keytool?
Ans: In den Anweisungen zur Android-App-Signatur erfahren Sie insbesondere, was jarsigner und keytool alles sind. Befehl "Fehler nicht gefunden" im Befehlszeilenfenster.

Wenn Sie also das Java Development Kit (JDK) zu Ihrer PATH - Variablen hinzugefügt haben, führen Sie einfach die Befehle aus, wie im Handbuch beschrieben. ABER wenn Sie es nicht in PATH haben, können Sie immer über den Ordner bin Ihrer JDK-Installation darauf zugreifen.

Q2. Wo ist zipalign?
Ans: Es besteht eine hohe Wahrscheinlichkeit, dass Sie den Befehl zipalign nicht finden und den Fehler 'Befehl nicht gefunden' erhalten. Sie würden wahrscheinlich zipalign googeln und wo Sie es finden könnten?

.__ Das Dienstprogramm zipalign befindet sich im Installationsordner des Android SDK. Unter macOS ist der Standardspeicherort user-name/Library/Android/sdk/. Wenn Sie zu dem Ordner gehen, finden Sie eine Reihe anderer Ordner wie docs, platform-tools, build-tools, tools, add-ons...

Öffnen Sie den Ordner build-tools. cd build-tools. Hier gibt es eine Reihe von Ordnern, die entsprechend der Build-Toolkette, die Sie im Android SDK-Manager verwenden, versioniert sind. ZipAlign ist in jedem dieser Ordner verfügbar. Ich persönlich gehe für den Ordner mit der neuesten Version. Öffnen Sie alle.

Unter macOS oder Linux müssen Sie möglicherweise ./zipalign verwenden, anstatt einfach zipalign einzugeben, wie in der Dokumentation erwähnt. Unter Windows ist zipalign gut genug.

0
incorelabs

Ich weiß, dass diese Frage speziell nach Phonegap 3.X gefragt ist, aber nur als Referenz dient jede Phonegap-Version über 4.0.0 Gradle anstelle von Ant , um standardmäßig zu bauen. Um Ant anstelle von Gradle zu verwenden, können Sie dies zu Ihrer config.xml hinzufügen:

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

Bei der Verwendung von Gradle müssen die Keystore-Signaturinformationen jetzt an einen neuen Ort verschoben werden ( wie in diesem Beitrag beschrieben). Erstellen Sie eine neue Datei mit dem Namen 'release-signing.properties' im selben Ordner wie die Datei "build.gradle" und fügen Sie den folgenden Inhalt ein:

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