it-swarm.com.de

So erstellen Sie eine signierte APK-Datei mit der Cordova-Befehlszeilenschnittstelle?

Ich habe eine Beispielanwendung mit dem Namen checkStatus erstellt. Jetzt möchte ich eine signierte APK-Datei erstellen. So kann ich es in verschiedenen Geräten zu Testzwecken installieren.

Dafür habe ich gegoogelt und diese Dokumentation gefunden.

Gemäß dem Dokument habe ich zu meinem Projektverzeichnis gewechselt und den folgenden Befehl ausgeführt:

keytool -genkey -v -keystore key-name.keystore -alias alias-name -keyalg RSA -keysize 2048 -validity 10000

Nachdem ich den obigen Befehl ausgeführt hatte, erhielt ich eine Datei mit dem Namen key-name.keystore bei projectRoot/key-name.keystore.

Und dann habe ich diese Datei in projectRoot/platforms/Android/key-name.keystore eingefügt.

Danach habe ich eine Datei mit dem Namen ant.properties erstellt und in projectRoot/platforms/Android gespeichert.

Ich habe den folgenden Code in die Datei geschrieben:

key.store=projectRoot/key-name.keystore
key.alias=myApp

Danach habe ich den folgenden Befehl ausgeführt, um ihn freizugeben

Cordova builds Android --release

Es wird der folgende Fehler ausgegeben:

 /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)

Diesmal habe ich den key.store-Wert in der ant.properties-Datei wie folgt geändert.

 key.store=/home/projectRoot/platforms/Android/key-name.keystore

Ich habe erneut den Befehl cordova build Android --release ausgeführt. Es wirft den gleichen Fehler.

Kann mir jemand sagen, was ich falsch gemacht habe?

145
vasan

Schritt 1:

D:\projects\Phonegap\Example> cordova plugin rm org.Apache.cordova.console --save

fügen Sie den --save hinzu, damit das Plugin aus der config.xml-Datei entfernt wird.

Schritt 2:

Um einen Release-Build für Android zu erstellen, müssen Sie zunächst die AndroidManifest.xml-Datei in Plattformen/Android ändern. Bearbeiten Sie die Datei und ändern Sie die Zeile:

<application Android:debuggable="true" Android:hardwareAccelerated="true" Android:icon="@drawable/icon" Android:label="@string/app_name">

und Android:debuggable in false ändern:

<application Android:debuggable="false" Android:hardwareAccelerated="true" Android:icon="@drawable/icon" Android:label="@string/app_name">

Ab Cordova 6.2.0 entfernen Sie den Android: debuggable-Tag vollständig. Hier ist die Erklärung von Cordova:

Erklärung für Probleme des Typs "HardcodedDebugMode": Es ist am besten, das Attribut Android: debuggable aus dem Manifest wegzulassen. In diesem Fall fügen die Tools automatisch Android ein: debuggable = true beim Erstellen einer APK zum Debuggen auf einem Emulator oder Gerät. Und wenn du Wenn Sie einen Release-Build ausführen, z. B. "APK exportieren", wird er automatisch festgelegt es ist falsch.

Wenn Sie dagegen einen bestimmten Wert in der Manifestdatei angeben, dann werden die Werkzeuge es immer verwenden. Dies kann zur versehentlichen Veröffentlichung von .__ führen. Ihre App mit Debug-Informationen.

Schritt 3:

Jetzt können wir Cordova sagen, dass es unseren Release-Build generieren soll:

D:\projects\Phonegap\Example> cordova build --release Android

Dann finden wir unsere nicht signierte APK-Datei in platforms/Android/ant-build. In unserem Beispiel war die Datei platforms/Android/ant-build/Example-release-unsigned.apk

Schritt 4:

Hinweis: Wir haben unseren Schlüsselspeicher keystoreNAME-mobileapps.keystore in diesem Git Repo. Wenn Sie einen weiteren erstellen möchten, fahren Sie mit den folgenden Schritten fort.

Schlüsselgenerierung:

Syntax:

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

Dann wurde der Schlüsselspeicher mit dem Namen NAME-mobileapps.keystore erstellt

Schritt 5:

Platzieren Sie den generierten Schlüsselspeicher

alte Version Cordova

D:\projects\Phonegap\Example\platforms\Android\ant-build

Neue Version Cordova

D:\projects\Phonegap\Example\platforms\Android\build\outputs\apk

Führen Sie zum Signieren der nicht signierten APK das Jarsigner-Tool aus, das auch im JDK enthalten ist:

Syntax:

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

OR

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'

Dies kennzeichnet den apk an Ort und Stelle.

Schritt 6:

Schließlich müssen wir das Zip-Ausrichtungs-Tool ausführen, um das APK zu optimieren:

D:\projects\Phonegap\Example\platforms\Android\ant-build> zipalign -v 4 Example-release-unsigned.apk Example.apk 

OR

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

OR

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

Jetzt haben wir unsere letzte Binärversion namens example.apk und können diese im Google Play Store veröffentlichen.

268
cfprabhu

Ein Update auf @malcubierre für Cordova 4 (und höher) - 

Erstellen Sie eine Datei mit dem Namen release-signing.properties und legen Sie sie im APPFOLDER\platforms\Android-Ordner ab

Inhalt der Datei: edit after = für alle außer 2. Zeile

storeFile=C:/yourlocation/app.keystore
storeType=jks
keyAlias=aliasname
keyPassword=aliaspass
storePassword=password

Dann sollte dieser Befehl eine Release-Version erstellen:

cordova build Android --release
104
Jon

In der aktuellen Dokumentation können wir mit dem Schlüsselspeicher eine build.json angeben:

{
     "Android": {
         "debug": {
             "keystore": "..\Android.keystore",
             "storePassword": "Android",
             "alias": "mykey1",
             "password" : "password",
             "keystoreType": ""
         },
         "release": {
             "keystore": "..\Android.keystore",
             "storePassword": "",
             "alias": "mykey2",
             "password" : "password",
             "keystoreType": ""
         }
     }
 }

Führen Sie dann das Kommando mit dem Argument --buildConfig folgendermaßen aus:

cordova run Android --buildConfig
47
infinito84

Schritt 1:  

Gehen Sie zu cordova\platforms\Android und erstellen Sie eine Datei mit dem Namen ant.properties-Datei mit den Informationen zur Keystore-Datei.

key.store=C:\\yourpath\\Yourkeystore.keystore
key.alias=youralias

Schritt 2:

Gehen Sie zum Cordova-Pfad und führen Sie Folgendes aus:

cordova build Android --release

Hinweis: Sie werden aufgefordert, Ihren Keystore und Ihr Schlüsselkennwort zu fragen

Eine YourApp-release.apk wird in \cordova\platforms\Android\ant-build angezeigt.

In cordova 6.2.0 können Sie den Release-Build auf einfache Weise erstellen. beziehen sich auf andere Schritte hier Schritte 1, 2 und 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
11
KrIsHnA

Auf Mac (osx) habe ich zwei .sh-Dateien erstellt, eine für die erste Veröffentlichung und eine für die Aktualisierung:

#!/bin/sh
echo "Ionic to Signed APK ---- [email protected] // 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

Und um Ihre App zu aktualisieren:

#!/bin/sh
echo "Ionic to Signed APK ---- [email protected] // 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

Angenommen, Sie befinden sich in Ihrem privaten Ordner oder in einem Ordner, in dem sich Ihre Apps-Ordner befinden. Stellen Sie sicher, dass Sie chmod richtig eingestellt haben, um dieses Skript zu verwenden. Dann :

./ionicToApk.sh # or whatever depending of the name of your file, in CLI

Ihr signiertes apk befindet sich in Ihrem App-Ordner/Plattformen/Android/build/Outputs/apk/als SignedApk.apk Stellen Sie sicher, dass Sie den richtigen Schlüsselalias und das richtige Kennwort verwenden, die im ersten Skript definiert wurden

6
Ben

Überprüfen Sie zunächst Ihren Versionscode und den Versionsnamen, wenn Sie Ihre App aktualisieren. Stellen Sie sicher, dass Sie einen vorherigen Keystore haben.

Wenn Sie die App aktualisieren, folgen Sie den Schritten 1, 3, 4. 

Schritt 1:

Gehe zu deinem Cordova-Projekt, um unseren Release-Build zu generieren:

D:\projects\Phonegap\Example> cordova build --release Android

Dann finden wir unsere nicht signierte APK-Datei in Plattformen/Android/ant-build. In unserem Beispiel war die Datei

wenn du Ant-Build benutzt hast

yourproject/platforms/Android/ant-build/Example-release-unsigned.apk

ODER

wenn du gradle-build benutzt hast

yourProject/platforms/Android/build/outputs/apk/Example-release-unsigned.apk

Schritt 2:

Schlüsselgenerierung:

Syntax:

keytool -genkey -v -keystore <keystoreName>.keystore -alias <Keystore AliasName> -keyalg <Key algorithm> -keysize <Key size> -validity <Key Validity in Days>

wenn der Befehl keytool nicht erkannt wird, führen Sie diesen Schritt aus 

Stellen Sie sicher, dass sich das Verzeichnis, in dem sich die ausführbare Datei von keytool befindet, in Ihrem Pfad befindet. (Auf meinem Windows 7-Computer ist dies beispielsweise in C:\Programme (x86)\Java\jre6\bin.)

Beispiel:

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

Dann wurde der Schlüsselspeicher mit dem Namen NAME-mobileapps.keystore erstellt

Schritt 3:

Platzieren Sie den generierten Schlüsselspeicher in D:\projects\Phonegap\Beispiel\plattformen\Android\ant-build

Führen Sie zum Signieren der nicht signierten APK das Jarsigner-Tool aus, das auch im JDK enthalten ist:

Syntax:

jarsigner -verbose -sigalg SHA1withRSA -digestalg SHA1 -keystore <keystorename <Unsigned APK file> <Keystore Alias name>

Wenn dies nicht der Fall ist, führen Sie diese Schritte aus 

(1) Klicken Sie mit der rechten Maustaste auf "Dieser PC". Klicken Sie mit der rechten Maustaste auf Eigenschaften> Erweiterte Systemeinstellungen> Umgebungsvariablen. Wählen Sie PATH und dann BEARBEITEN.

(2) Fügen Sie den Pfad des jdk bin-Ordners zu den Umgebungsvariablen hinzu. Dieser sollte folgendermaßen aussehen:

Msgstr "C:\Programme\Java\jdk1.8.0_40\bin".

Beispiel:

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'

Dies kennzeichnet den apk an Ort und Stelle.

Schritt 4:

Schließlich müssen wir das Zip-Ausrichtungs-Tool ausführen, um das APK zu optimieren:

wenn zipalign dann nicht erkennt 

(1) Gehen Sie zu Ihrem Android-SDK-Pfad und finden Sie zipalign, dass es normalerweise in Android-sdk\build-tools\23.0.3 ist 

(2) Kopieren Sie die zipalign-Datei in Ihren generierten apk-Ordner (normalerweise unter dem Pfad)

ihr Projekt/Plattformen/Android/Ant-Build/Beispiel-Release-unsigned.apk

D:\projects\Phonegap\Example\platforms\Android\ant-build> zipalign -v 4 Example-release-unsigned.apk Example.apk 

OR

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

Jetzt haben wir unsere letzte Binärversion namens example.apk und können diese im Google Play Store veröffentlichen.

0
Arpit Patel
##Generated signed apk from commandline
#variables
APP_NAME=THE_APP_NAME
APK_LOCATION=./
APP_HOME=/path/to/THE_APP
APP_KEY=/path/to/Android_key
APP_KEY_ALIAS=the_alias
APP_KEY_PASSWORD=123456789
zipalign=$Android_HOME/build-tools/28.0.3/zipalign

#the logic
cd $APP_HOME
cordova build --release Android
cd platforms/Android/app/build/outputs/apk/release
jarsigner -verbose -sigalg SHA1withRSA -digestalg SHA1 -keystore $APP_KEY ./app-release-unsigned.apk $APP_KEY_ALIAS <<< $APP_KEY_PASSWORD
rm -rf "$APK_LOCATION/$APP_NAME.apk"
$zipalign -v 4 ./app-release-unsigned.apk "$APK_LOCATION/$APP_NAME.apk"
open $APK_LOCATION
#the end
0
nicolsondsouza

Erstellen Sie eine Cordova-Release-APK-Datei in cmd.

KEY STORE FILE PATH : Keystore-Dateipfad (F: /cordova/myApp/xxxxx.jks)

KEY STORE PASSWORD : xxxxx

KEY STORE ALIAS : xxxxx

KEY STORE ALIAS PASSWORT : xxxxx

PATH OF zipalign.exe : zipalign.exe-Dateipfad (C:\Benutzer\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

Führe die folgenden Schritte in cmd aus (als Administrator ausführen)

  1. cordova Build - Freigabe Android
  2. gehen Sie zum Speicherort der Android-release-unsigned.apk-Datei (PROJECT\platform\Android\build\Outputs\apk).
  3. jarsigner -verbose -sigalg SHA1mitRSA -digestalg SHA1 -keystore < KEY STORE-DATEI-PFAD > < Android UNSIGNED APK NAME > < KEY STORE ALIAS >
  4. < PATH OF zipalign.exe > -v 4 < Android-UNSIGNIERTER APK-NAME > < Android-FREIGABE-APK-NAME >
0
Om Shankar