web-dev-qa-db-de.com

Wie signiert man eine Android apk Datei?

Ich versuche meine APK-Datei zu signieren. Ich kann nicht herausfinden, wie es geht. Ich kann keine guten detaillierten Anweisungen finden. Ich habe sehr wenig Programmiererfahrung, daher wäre jede Hilfe dankbar.

105
chriss

Das Handbuch ist klar genug. Bitte geben Sie an, mit welchem ​​Teil Sie nach dem Durcharbeiten stecken bleiben. Ich würde vorschlagen:

https://developer.Android.com/studio/publish/app-signing.html

Okay, eine kleine Übersicht ohne Referenz oder Eclipse herum, also lass etwas Platz für Fehler, aber es funktioniert so

  • Öffnen Sie Ihr Projekt in Eclipse
  • Rechte Maustaste drücken -> Tools (Android-Tools?) -> signierte Anwendung exportieren (apk?)
  • Gehen Sie den Assistenten durch:
  • Erstellen Sie einen neuen Schlüsselspeicher. merk dir das Passwort
  • Unterschreibe deine App
  • Speichern Sie es usw.

Auch aus dem Link:

Kompilieren und signieren Sie mit Eclipse ADT

Wenn Sie Eclipse mit dem ADT-Plugin verwenden, können Sie mit Export Wizard eine signierte .apk exportieren (und bei Bedarf sogar einen neuen Schlüsselspeicher erstellen). Export Wizard führt die gesamte Interaktion mit Keytool und Jarsigner für Sie aus, sodass Sie das Paket über eine GUI signieren können, anstatt die oben beschriebenen manuellen Verfahren zum Kompilieren, Signieren und Ausrichten auszuführen Wenn Sie Ihr Paket signiert haben, führt es auch eine Paketausrichtung mit Zip Align durch. Da der Export Wizard sowohl Keytool als auch Jarsigner verwendet, sollten Sie sicherstellen, dass Sie auf Ihrem Computer darauf zugreifen können, wie oben in beschrieben Grundlegendes Setup zum Signieren.

So erstellen Sie eine signierte und ausgerichtete APK-Datei in Eclipse:

  1. Wählen Sie das Projekt im Paket-Explorer aus und wählen Sie Datei> Exportieren.
  2. Öffnen Sie den Ordner Android, wählen Sie Export Android Anwendung und klicken Sie auf Weiter.

    Der Export Android Anwendungsassistent wird jetzt gestartet. Er führt Sie durch den Vorgang des Signierens Ihrer Anwendung, einschließlich der Schritte zum Auswählen des privaten Schlüssels, mit dem die APK-Datei signiert werden soll (oder zum Erstellen eines neuen Keystores und Privat Schlüssel).

  3. Füllen Sie den Export aus Wizard und Ihre Anwendung wird kompiliert, signiert, ausgerichtet und zur Verteilung bereit.
83
Nanne

Hier finden Sie eine Anleitung zum manuellen Signieren einer APK. Es enthält Informationen über die neue apk-signer eingeführt in build-tools 24.0.3 (10/2016)

Automatisierter Prozess:

Verwenden Sie dieses Tool (verwendet den neuen Apksigner von Google):

https://github.com/patrickfav/uber-apk-signer

Haftungsausschluss: Ich bin der Entwickler :)

Manueller Prozess:

Schritt 1: Keystore generieren (nur einmal)

Sie müssen einen Schlüsselspeicher einmal generieren und ihn zum Signieren Ihrer unsigned-apk verwenden. Verwenden Sie das keytoolbereitgestellt vom JDK gefunden in %Java_HOME%/bin/

keytool -genkey -v -keystore my.keystore -keyalg RSA -keysize 2048 -validity 10000 -alias app

Schritt 2 oder 4: Zipalign

zipaligndies ist ein Tool, das vom Android SDK bereitgestellt wird, das beispielsweise in %Android_HOME%/sdk/build-tools/24.0.2/ ist ein obligatorischer Optimierungsschritt, wenn du die apk in den Play Store hochladen möchtest.

zipalign -p 4 my.apk my-aligned.apk

Hinweis: Wenn Sie das alte jarsigner verwenden, müssen Sie [~ # ~] nach [~ # ~] zipalignieren signieren. Wenn Sie die neue apksigner -Methode verwenden, tun Sie dies [~ # ~] vor [~ # ~] dem Signieren (ich weiß, verwirrend). Aufrufen von zipalign vor apksigner funktioniert einwandfrei weil apksigner die APK-Ausrichtung und -Komprimierung beibehält (im Gegensatz zu jarsigner).

Sie können verifizieren die Ausrichtung mit

zipalign -c 4 my-aligned.apk

Schritt 3: Signieren und überprüfen

Verwenden von Build-Tools ab 24.0.2

Verwenden Sie jarsigner , das wie das Keytool im Lieferumfang der JDK-Distribution enthalten in %Java_HOME%/bin/ und benutze es so:

jarsigner -verbose -sigalg SHA1withRSA -digestalg SHA1 -keystore my.keystore my-app.apk my_alias_name

und kann mit überprüft werden

jarsigner -verify -verbose my_application.apk

Verwenden von Build-Tools 24.0.3 und neuer

Android 7.0 führt das APK Signature Scheme v2 ein, ein neues App-Signing-Schema, das schnellere App-Installationszeiten und mehr Schutz vor unbefugten Änderungen an APK-Dateien bietet (Weitere Informationen finden Sie unter hier und hier Einzelheiten). Deshalb implementierte Google sein eigener Apk-Signierer namens apksigner (duh!) Die Skriptdatei befindet sich in %Android_HOME%/sdk/build-tools/24.0.3/ (die .jar ist in der /lib Unterordner). Benutze es so

apksigner sign --ks my.keystore my-app.apk --ks-key-alias alias_name

und kann mit überprüft werden

apksigner verify my-app.apk

Die offizielle Dokumentation finden Sie hier.

31
patrickf

Mach dir keine Sorgen ...! Führen Sie die folgenden Schritte aus, und Sie erhalten Ihre signierte APK-Datei. Ich war auch besorgt darüber, aber diese Schritte befreien mich von der Frustration. Schritte zum Signieren Ihrer Bewerbung:

  1. Exportieren Sie das nicht signierte Paket:

Rechtsklick auf das Projekt in Eclipse -> Android Tools -> Nicht signiertes Anwendungspaket exportieren (wie hier exportieren wir unsere GoogleDriveApp.apk auf den Desktop)

Signieren Sie die Anwendung mit Ihrem Keystore und dem Jarsigner-Tool (führen Sie die folgenden Schritte aus):

Öffne cmd -> ändere das Verzeichnis, in dem deine "jarsigner.exe" existiert (wie hier in meinem System unter "C:\Programme\Java\jdk1.6.0_17\bin")

Geben Sie nun den folgenden Befehl in cmd ein:

jarsigner -verbose -keystore c:\users\Android\debug.keystore c:\users\pir fahim\Desktops\GoogleDriveApp.apk mein_keystore_alias

Sie werden aufgefordert, Ihr Passwort einzugeben: Geben Sie die Passphrase für den Keystore ein: Es wird Ihre Apk signiert. m zu überprüfen, ob die Signierung erfolgreich ist, können Sie Folgendes ausführen:

jarsigner -verify c:\users\pir fahim\Desktops\GoogleDriveApp.apk

Es sollte zurückkommen mit: Glas überprüft.

Methode 2

Wenn Sie Eclipse mit ADT verwenden, ist es einfach, die Datei für die Verteilung zu kompilieren, zu signieren, auszurichten und vorzubereiten. Führen Sie dazu einfach die folgenden Schritte aus.

  • Datei> Exportieren.
  • Exportieren Android Anwendung
  • Durchsuchen -> Wählen Sie Ihr Projekt aus
  • Weiter -> Weiter

Mit diesen Schritten wird Ihr Projekt kompiliert, signiert und auf Zip ausgerichtet. Jetzt können Sie Ihr Projekt verteilen oder im Google Play Store hochladen.

8
Pir Fahim Shah

Für Benutzer von IntelliJ IDEA oder Android Studio führen Sie folgende Schritte aus:
* Aus dem Menü Build/Generate signed APK
* Sie müssen einen Keystore-Pfad erstellen. Klicken Sie im Dialogfeld auf Create new. Sie erstellen eine JKS-Datei, die Ihre Schlüssel enthält. Ordner auswählen, Passwort festlegen. Also dein Keystore ok.
* Erstellen Sie einen neuen Schlüssel für Ihre Anwendung, indem Sie einen Alias, ein Schlüsselkennwort, Ihren Namen usw. verwenden.
* Weiter klicken.
* Wählen Sie im Dialogfeld entweder Proguard oder nicht.

Ihre signierte APK-Datei ist fertig.

Hilfedatei: https://www.jetbrains.com/idea/webhelp/generate-signed-apk-wizard.html

7
trante

Ich bin auf dieses Problem gestoßen und wurde gelöst, indem ich die min sdk-Version im Manifest überprüfte. Es wurde auf 15 (ICS) eingestellt, aber auf meinem Telefon wurden 10 (Lebkuchen) ausgeführt.

2
RJL

APK-Signaturprozess

Führen Sie die folgenden drei Befehle aus, um eine Android APK-Datei manuell zu signieren:

  1. Keystore-Datei generieren

    keytool -genkey -v -keystore YOUR_KEYSTORE_NAME.keystore -alias ALIAS_NAME -keyalg RSA -keysize 2048 -validity 10000
    
  2. Signiere deine APK-Datei mit jarsigner

    jarsigner -verbose -sigalg SHA1withRSA -digestalg SHA1 -keystore KEYSTORE_FILE_PATH UNSIGNED_APK_PATH ALIAS_NAME
    
  3. Signierte APK mit dem Zipalign-Werkzeug ausrichten

    zipalign -v 4 JARSIGNED_APK_FILE_PATH ZIPALIGNED_SIGNED_APK_FILE_PATH
    

SCHRITT 1


Generate Keystore file

keytool -genkey -v -keystore YOUR_KEYSTORE_NAME.keystore -alias ALIAS_NAME -keyalg RSA -keysize 2048 -validity 10000

Beispiel:

keytool -genkey -v -keystore id.keystore -alias MySignedApp -keyalg RSA -keysize 2048 -validity 10000

schlüsselspeicher-Passwort: yourApp @ 123 Schlüssel-Passwort: yourApp @ 123

CMD O/P

D:\ru\SignedBuilds\MySignedApp>keytool -genkey -v -keystore id.keystore
 -alias MySignedApp -keyalg RSA -keysize 2048 -validity 10000
Enter keystore password:
Re-enter new password:
What is your first and last name?
  [Unknown]:  MySignedApp Sample
What is the name of your organizational unit?
  [Unknown]:  Information Technology
What is the name of your organization?
  [Unknown]:  MySignedApp Demo
What is the name of your City or Locality?
  [Unknown]:  Mumbai
What is the name of your State or Province?
  [Unknown]:  Maharashtra
What is the two-letter country code for this unit?
  [Unknown]:  IN
Is CN=MySignedApp Demo, OU=Information Technology, O=MySignedApp Demo, L=Mumbai, ST=Maharashtra, C=IN corr
ect?
  [no]:  y

Generating 2,048 bit RSA key pair and self-signed certificate (SHA256withRSA) with a validity of 10,
000 days
        for: CN=MySignedApp Demo, OU=Information Technology, O=MySignedApp Demo, L=Mumbai, ST=Maharashtra,
 C=IN
Enter key password for <MySignedApp>
        (RETURN if same as keystore password):
Re-enter new password:
[Storing id.keystore]

D:\ru\SignedBuilds\MySignedApp>

SCHRITT 2


Sign your app with your private keystore using jarsigner

jarsigner -verbose -sigalg SHA1withRSA -digestalg SHA1 -keystore KEYSTORE_FILE_PATH UNSIGNED_APK_PATH ALIAS_NAME

Beispiel

jarsigner -verbose -sigalg SHA1withRSA -digestalg SHA1 -keystore D:\ru\SignedBuilds\MySignedApp\id.keystore D:\ru\SignedBuilds\MySignedApp\MySignedAppS1-release-unsigned.apk id

CMD O/P

D:\ru\SignedBuilds\MySignedApp>jarsigner -verbose -sigalg SHA1withRSA -
digestalg SHA1 -keystore D:\ru\SignedBuilds\MySignedApp\id.keystore D:\ru\SignedBuilds\MySignedApp\MySignedAppS1-release-unsigned.apk id ---
ect
Enter Passphrase for keystore:
   adding: META-INF/MANIFEST.MF
   adding: META-INF/---.SF
   adding: META-INF/---.RSA
  signing: AndroidManifest.xml
  ..... 
    signing: classes.dex
  signing: lib/commons-codec-1.6.jar
  signing: lib/armeabi/libkonyjsvm.so
jar signed.

Warning:
No -tsa or -tsacert is provided and this jar is not timestamped. Without a timestamp, users may not
be able to validate this jar after the signer certificate's expiration date (2044-02-07) or after an
y future revocation date.

D:\ru\SignedBuilds\MySignedApp>

Verify that your APK is signed

jarsigner -verify -verbose -certs JARSIGNED_APK_FILE_PATH

Beispiel

jarsigner -verify -verbose -certs MySignedAppS1-release-unsigned.apk

CMD O/P

D:\ru\SignedBuilds\MySignedApp>jarsigner -verify -verbose -certs MySignedAppS1-release-unsigned.apk
 s = signature was verified
  m = entry is listed in manifest
  k = at least one certificate was found in keystore
  i = at least one certificate was found in identity scope

jar verified.

Warning:
This jar contains entries whose certificate chain is not validated.
This jar contains signatures that does not include a timestamp. Without a timestamp, users may not b
e able to validate this jar after the signer certificate's expiration date (2044-02-09) or after any
 future revocation date.

D:\ru\SignedBuilds\MySignedApp>

SCHRITT 3


Richten Sie das endgültige APK-Paket mit zipalign aus

zipalign -v 4 JARSIGNED_APK_FILE_PATH ZIPALIGNED_SIGNED_APK_FILE_PATH_WITH_NAME_ofSignedAPK

Beispiel

zipalign -v 4 D:\ru\SignedBuilds\MySignedApp\MySignedAppS1-release-unsigned.apk D:\ru\SignedBuilds\MySignedApp\MySignedApp.apk

CMD O/P

D:\Android\android-sdk\build-tools\19.1.0>zipalign -v 4 D:\ru\ru_doc\Signed_apk\MySignedApp\28.09.16
_prod_playstore\MySignedAppS1-release-unsigned.apk D:\ru\ru_doc\Signed_apk\MySignedApp\28.09.16_prod
_playstore\MySignedApp.apk
Verifying alignment of D:\ru\SignedBuilds\MySignedApp\MySignedApp.apk (
4)...

  4528613 classes.dex (OK - compressed)
 5656594 lib/commons-codec-1.6.jar (OK - compressed)
 5841869 lib/armeabi/libkonyjsvm.so (OK - compressed)
Verification succesful

D:\Android\android-sdk\build-tools\19.1.0>

Verify that your APK is Aligned successfully

zipalign -c -v 4 DEIN_APK_PATH

Beispiel

zipalign -c -v 4 D:\ru\SignedBuilds\MySignedApp\MySignedApp.apk

CMD O/P

D:\Android\android-sdk\build-tools\19.1.0>zipalign -c -v 4 D:\ru\SignedBuilds\MySignedApp\MySignedApp.apk
Verifying alignment of D:\ru\SignedBuilds\MySignedApp\MySignedApp.apk (
4)...

 4453984 res/drawable/zoomout.png (OK)
 4454772 res/layout/tabview.xml (OK - compressed)
 4455243 res/layout/wheel_item.xml (OK - compressed)
 4455608 resources.arsc (OK)
 4470161 classes.dex (OK - compressed)
 5597923 lib/commons-codec-1.6.jar (OK - compressed)
 5783198 lib/armeabi/libkonyjsvm.so (OK - compressed)
Verification succesful

D:\Android\android-sdk\build-tools\19.1.0>

Hinweis:

Der Überprüfungsbefehl dient nur dazu, zu überprüfen, ob APK korrekt erstellt und signiert wurde!

Verweise

Ich hoffe das hilft allen :)

1
Rupesh Yadav