Erstellen Sie Android Release Apk auf Phonegap 3.x CLI

108

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

Übrigens benutze ich diesen Befehl: phonegap local build android

Guillermo Gutiérrez
quelle

Antworten:

153

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

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

  1. Öffnen Sie ein Befehlszeilenfenster und gehen Sie zu / path / to / your / project / platform / android / cordova .

  2. Ausführen build --release. Dadurch wird eine nicht signierte Release-APK im Ordner / path / to / your / project / platform / android / bin mit dem Namen YourAppName-release-unsigned.apk erstellt.

  3. Signieren und richten Sie die APK gemäß den Anweisungen in den offiziellen Dokumenten des 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-and- android-projects / ) und der Blogger, der es veröffentlicht, weil es mich auf die Strecke gebracht hat.

Guillermo Gutiérrez
quelle
9
Ich musste meine AndroidManifest.xml-Datei manuell ändern, wo ich <application android:debuggable="true"...wechseln musste<application android:debuggable="false"
Ian Jamieson
3
Sie müssen das Ding auch nach dem Reißverschluss ausrichten: zipalign -v 4 your-unaligned.apk your-align.apk
Damian
13
Ich verwende Cordova 3.4.1-0.1.0 und die Datei wird erstellt in/path/to/your/project/platforms/android/ant-build
AlexStack
1
Es scheint, dass dies spezifisch für Phonegap 3.0.x bis 3.3.x gilt, von 3.4.x und höher kann dies variieren.
Guillermo Gutiérrez
Vielen Dank Guillermo. +1
Quick_Silver
112

In PhoneGap 3.4.0 können Sie anrufen:

cordova build android --release

Wenn Sie die Datei 'ant.properties' wie folgt im Verzeichnis 'platform / android' 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) befindet sich im Verzeichnis 'platform / android / ant-build', das bereits signiert und ausgerichtet und bereit zur Bereitstellung ist.

Steven Anderson
quelle
1
Die aktuelle Version 3.4.0 von Cordova enthält keine 'Ant-Properties'-Datei.
Schritt
8
Erstellt ant.propertiesin platforms/androidund hat diese beiden Eigenschaften einfach darin abgelegt. Funktioniert perfekt, danke!
Adam Tuttle
6
Wenn Sie sich über den Keystore / Alias ​​oder dessen Erstellung nicht sicher sind, finden Sie ausführliche Informationen unter developer.android.com/tools/publishing/app-signing.html
Shai,
6
Beachten Sie außerdem, dass Sie in dieser Datei die Eigenschaften key.store.password und key.alias.password angeben können, damit Sie sie nicht jedes Mal eingeben müssen, wenn Sie die Version erstellen. Seien Sie natürlich vorsichtig und übertragen Sie diese Datei nicht in das Versionssystem.
Vbezhenar
5
Erstellen Sie für Cordova 5.0.0 und höher eine build.json im Stammverzeichnis Ihres Projekts und füllen Sie sie mit {"android": {"release": {"keystore": "/path/to/your.keystore", "alias" ":" youalias "}}} anstelle der Datei ant.properties. Zu Ihrer
Information
19

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.jsonaus dem Verzeichnis ausführenplatforms/android/cordova/

Der Speicherort der Keystore-Datei ist relativ zu platforms/android/cordova/, also in der obigen Konfigurationsdatei .keystoreund build.jsonbefindet sich im selben Verzeichnis.

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

KrIsHnA
quelle
15

Nach @ steven-anderson können Sie auch Passwörter in den ant.properties konfigurieren, damit der Prozess vollständig automatisiert werden kann

Wenn Sie also die Plattform \ android \ ant.properties wie folgt eingeben

key.store=../../yourCertificate.jks
key.store.password=notSoSecretPassword
key.alias=userAlias
key.alias.password=notSoSecretPassword
Simone Avogadro
quelle
1
Unter Windows müssen Sie den Schrägstrichen entkommen ... '... key.store = C: \\ OpenSSL-Win32 \\ certs \\ android_key_store.keystore ...'
bkomac
4

Ich habe mich nur viel gewundert, weil ich das gleiche Problem hatte, aber in meiner Installation war der Befehl "cordova" nie verfügbar und "phone gap build android --release" ignorierte einfach die Plattform / android / ant.properties.

Als ich in meinen Plattformfilter schaute, fand ich einen Ordner mit dem Namen "cordova" und darin befand sich eine "build" -Binärdatei, die das Argument --release akzeptierte. Sie fragte mich nach den Schlüsselketten und ich endete mit einem signierten und produktionsbereiten Ordner APK.

Dies wurde in keinem Teil der Telefonlücken-Site dokumentiert und ehrlich gesagt hasse ich jetzt Phonegap :( Es sollte die Dinge einfacher machen, aber alles war nur kompliziert :(

Freaktor
quelle
2

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 besteht darin, wo immer ein Anruf cordovagetätigt wird, ihn durch phonegapoder ionicfür Ihr spezielles Szenario zu ersetzen .

Führen Sie die folgenden Schritte aus, wenn Sie mit der Entwicklung fertig und bereit für die Bereitstellung sind:

  1. Öffnen Sie ein Befehlszeilenfenster (Terminal unter MacOS und Linux ODER Eingabeaufforderung unter Windows).

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

  3. Entfernen Sie im Projektstamm das Plugin "Konsole" aus Ihren Plugins.

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

  4. Verwenden Sie den Befehl cordova build, während Sie sich noch im Projektstamm befinden, um ein APK für die Release-Verteilung zu erstellen.

    Der Befehl lautet:cordova build --release android

  5. Der obige Prozess erstellt eine Datei, die android-release-unsigned.apkim Ordner aufgerufen wirdProjectRoot/platforms/android/build/outputs/apk/

  6. Signieren und richten Sie die APK gemäß den Anweisungen unter https://developer.android.com/studio/publish/app-signing.html#signing-manually aus.

    Am Ende dieses Schritts kann die APK, die Sie erhalten, in den Play Store hochgeladen werden .

Hinweis: Als Neuling oder Anfänger kann der letzte Schritt etwas verwirrend sein, wie es für mich war. Man kann auf einige Probleme stoßen und einige Fragen dazu haben, was diese Befehle sind und wo sie zu finden sind.

Q1. Was sind Jarsigner und Keytool ?
Antwort: In den Anweisungen zum Signieren der Android-App erfahren Sie genau, worum es bei Jarsigner und Keytool geht, ABER sie sagen Ihnen nicht, wo Sie sie finden können, wenn Sie im Befehlszeilenfenster auf einen Fehler "Befehl nicht gefunden" stoßen .

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

Q2. Wo ist Zipalign ?
Antwort: Es besteht eine hohe Wahrscheinlichkeit, dass der Befehl zipalign nicht gefunden wird und der Fehler 'Befehl nicht gefunden' angezeigt wird . Sie würden wahrscheinlich zipalign googeln und wo finden Sie es?

Das Dienstprogramm zipalign befindet sich im Installationsordner des Android SDK. Unter macOS ist der Standardspeicherort , user-name/Library/Android/sdk/. Wenn Sie in den Ordner über Kopf würden Sie eine Reihe von anderen Ordnern wie finden docs, platform-tools, build-tools, tools, add-ons...

Öffnen Sie den build-toolsOrdner. cd build-tools. Hier gibt es eine Reihe von Ordnern, die gemäß der Build-Toolkette, die Sie im Android SDK-Manager verwenden, versioniert sind. ZipAlignist in jedem dieser Ordner verfügbar. Ich persönlich suche den Ordner mit der neuesten Version. Öffnen Sie Any.

Unter MacOS oder Linux müssen Sie möglicherweise ./zipalignnicht nur eingeben, zipalignwie in der Dokumentation erwähnt. Unter Windows zipalignist das gut genug.

Incorelabs
quelle
1

Ich habe dies zum Laufen gebracht, indem ich die signierte App in das gleiche Verzeichnis wie zipalign kopiert und eingefügt habe. Es scheint, dass aapt.exe die Quelldatei nicht finden konnte, selbst wenn der Pfad angegeben wurde. dh dies funktionierte nicht zipalign -f -v 4 C: ... \ CordovaApp-release-unsigned.apk C: ... \ destination.apk erreichte aapt.exeCordovaApp-release-unsigned.apk, erstarrte und traf auf return 'aapt.exeCordovaApp-release-unsigned.apk' wird nicht als interner oder externer Befehl, bedienbares Programm oder Batchdatei erkannt. Und dies tat zipalign -f -v 4 CordovaApp-release-unsigned.apk myappname.apk

Robert Deveau
quelle
Danke für den Tipp. Sie können auch den Pfad zum Ordner von zipalign in die Umgebungsvariable PATH aufnehmen.
Guillermo Gutiérrez
0

Ich weiß, dass diese Frage speziell nach Phonegap 3.X fragt, aber nur als Referenz verwendet jede Phonegap-Version über 4.0.0 Gradle anstelle von Ant , um standardmäßig zu erstellen. 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 Verwendung von Gradle müssen die Keystore-Signaturinformationen jetzt an einem neuen Speicherort abgelegt 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 sie in 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
julianisch
quelle
-7

Sie können diesen Befehl ausprobieren. Er sollte die App erstellen und ausführen (daher sollte .apk erstellt werden):

phonegap local run android

Laurie Clark
quelle
3
Es werden immer noch nur die Debug-APKs erstellt.
Guillermo Gutiérrez
2
Nein, es werden nur mit Debug signierte APKs erstellt, keine APKs.
Guillermo Gutiérrez
1
Hier finden Sie die Lösung (3/4 Weg nach unten: "Finalize apk for Google Play Upload"): iphonedevlog.wordpress.com/2013/08/16/…
Laurie Clark