Ich versuche meine apk Datei zu signieren. Ich kann nicht herausfinden, wie es geht. Ich kann keine guten Anweisungen finden. Ich habe sehr wenig Programmiererfahrung, daher wäre jede Hilfe dankbar.
Ich versuche meine apk Datei zu signieren. Ich kann nicht herausfinden, wie es geht. Ich kann keine guten Anweisungen finden. Ich habe sehr wenig Programmiererfahrung, daher wäre jede Hilfe dankbar.
Antworten:
Das Handbuch ist klar genug. Bitte geben Sie an, an welchem Teil Sie hängen bleiben, nachdem Sie es durchgearbeitet haben. Ich würde vorschlagen:
https://developer.android.com/studio/publish/app-signing.html
Okay, eine kleine Übersicht ohne Referenz oder Finsternis, lassen Sie also etwas Platz für Fehler, aber es funktioniert so
Auch vom Link:
Kompilieren und signieren Sie mit Eclipse ADT
Wenn Sie Eclipse mit dem ADT-Plugin verwenden, können Sie mit dem Export-Assistenten eine signierte APK-Datei exportieren (und bei Bedarf sogar einen neuen Schlüsselspeicher erstellen). Der Export-Assistent führt die gesamte Interaktion mit dem Keytool und dem Jarsigner für Sie aus. Auf diese Weise können Sie das Paket über eine grafische Benutzeroberfläche signieren, anstatt die oben beschriebenen manuellen Verfahren zum Kompilieren, Signieren und Ausrichten auszuführen. Sobald der Assistent Ihr Paket kompiliert und signiert hat, führt er auch die Paketausrichtung mit zip align aus. Da der Export-Assistent sowohl Keytool als auch Jarsigner verwendet, sollten Sie sicherstellen, dass auf Ihrem Computer auf sie zugegriffen werden kann, wie oben in der Grundeinstellung für das Signieren beschrieben.
So erstellen Sie eine signierte und ausgerichtete APK in Eclipse:
- Wählen Sie das Projekt im Paket-Explorer aus und wählen Sie Datei> Exportieren.
Öffnen Sie den Android-Ordner, wählen Sie Android-Anwendung exportieren und klicken Sie auf Weiter.
Der Assistent zum Exportieren von Android-Anwendungen wird jetzt gestartet, der Sie durch den Vorgang des Signierens Ihrer Anwendung führt, einschließlich der Schritte zum Auswählen des privaten Schlüssels, mit dem die APK signiert werden soll (oder zum Erstellen eines neuen Schlüsselspeichers und eines neuen privaten Schlüssels).
- Schließen Sie den Export-Assistenten ab, und Ihre Anwendung wird kompiliert, signiert, ausgerichtet und zur Verteilung bereit.
-alias <alias_name> An alias for the key. Only the first 8 characters of the alias are used.
Es ist nur ein Alias. Ein Name, wenn Sie so wollen. Ich würde "firstkey" vorschlagen :-)
Hier finden Sie eine Anleitung zum manuellen Signieren einer APK. Es enthält Informationen zu den neu apk-signer
eingeführten in build-tools 24.0.3
(10/2016)
Verwenden Sie dieses Tool (verwendet den neuen Apksigner von Google):
https://github.com/patrickfav/uber-apk-signer
Haftungsausschluss: Ich bin der Entwickler :)
Sie müssen einmal einen Keystore generieren und damit Ihre unsigned
apk signieren . Verwenden Sie das vom JDK bereitgestellte inkeytool
%JAVA_HOME%/bin/
keytool -genkey -v -keystore my.keystore -keyalg RSA -keysize 2048 -validity 10000 -alias app
zipalign
%ANDROID_HOME%/sdk/build-tools/24.0.2/
Dies ist ein Tool, das vom Android SDK bereitgestellt wird, z. B. ein obligatorischer Optimierungsschritt, wenn Sie die Apk in den Play Store hochladen möchten.
zipalign -p 4 my.apk my-aligned.apk
Hinweis: Wenn Sie das alte verwenden jarsigner
, müssen Sie NACH dem Signieren zipalignieren . Wenn Sie die neue apksigner
Methode verwenden, tun Sie dies VOR dem Signieren (verwirrend, ich weiß). Das Aufrufen von zipalign vor apksigner funktioniert einwandfrei, da apksigner die APK-Ausrichtung und -Komprimierung beibehält (im Gegensatz zu jarsigner).
Sie können die Ausrichtung mit überprüfen
zipalign -c 4 my-aligned.apk
Verwendung jarsigner
, die wie die keytool, mit der JDK - Distribution kommt gefunden %JAVA_HOME%/bin/
und es verwendet , etwa 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
Android 7.0 führt das APK-Signaturschema v2 ein, ein neues App-Signaturschema, das schnellere App-Installationszeiten und mehr Schutz vor unbefugten Änderungen an APK-Dateien bietet ( weitere Informationen finden Sie hier und hier ). Deshalb hat Google einen eigenen Apk-Signer namensapksigner
(duh!) Implementiert. Die Skriptdatei befindet sich in %ANDROID_HOME%/sdk/build-tools/24.0.3/
(die .jar befindet sich im /lib
Unterordner). Verwenden Sie 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
Führen Sie für Benutzer von IntelliJ IDEA oder Android Studio die folgenden Schritte aus:
* Über das Menü Build/Generate signed APK
* Sie müssen einen Schlüsselspeicherpfad erstellen. Klicken Sie im Dialogfeld auf Create new
. Sie erstellen eine JKS-Datei, die Ihre Schlüssel enthält. Ordner auswählen, Passwort definieren. Also dein Keystore ok.
* Erstellen Sie einen neuen Schlüssel für Ihre Anwendung, indem Sie Alias, Schlüsselkennwort, Ihren Namen usw. verwenden.
* Klicken Sie auf Weiter.
* 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
Mach dir keine Sorgen ...! Befolgen Sie diese Schritte, um Ihre signierte APK-Datei zu erhalten. Ich war auch darüber besorgt, aber diese Schritte reiten mich von der Frustration ab. Schritte zum Unterzeichnen Ihrer Bewerbung:
Klicken Sie mit der rechten Maustaste 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 (folgen Sie den nachstehenden Schritten):
Öffnen Sie cmd -> ändern Sie das Verzeichnis, in dem Ihre "jarsigner.exe" vorhanden ist (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 my_keystore_alias
Sie werden aufgefordert, Ihr Passwort anzugeben: Geben Sie die Passphrase für den Keystore ein: Es wird Ihre apk signieren. Um zu überprüfen, ob die Signatur erfolgreich ist, können Sie Folgendes ausführen:
jarsigner -verify c: \ users \ pir fahim \ Desktops \ GoogleDriveApp.apk
Es sollte zurückkommen mit: Glas verifiziert.
Methode 2
Wenn Sie Eclipse mit ADT verwenden, ist es einfach, die Datei zu kompilieren, zu signieren, auszurichten und für die Verteilung vorzubereiten. Führen Sie dazu einfach die folgenden Schritte aus.
Mit diesen Schritten wird Ihr Projekt kompiliert, signiert und per Zip ausgerichtet. Jetzt können Sie Ihr Projekt verteilen oder im Google Play Store hochladen.
Führen Sie die folgenden drei Befehle aus, um eine Android APK-Datei manuell zu signieren:
Generieren Sie eine Keystore-Datei
keytool -genkey -v -keystore YOUR_KEYSTORE_NAME.keystore -alias ALIAS_NAME -keyalg RSA -keysize 2048 -validity 10000
Signieren Sie Ihre APK-Datei mit jarsigner
jarsigner -verbose -sigalg SHA1withRSA -digestalg SHA1 -keystore KEYSTORE_FILE_PATH UNSIGNED_APK_PATH ALIAS_NAME
Signierte APK mit dem Zipalign-Tool ausrichten
zipalign -v 4 JARSIGNED_APK_FILE_PATH ZIPALIGNED_SIGNED_APK_FILE_PATH
Generate Keystore file
keytool -genkey -v -keystore YOUR_KEYSTORE_NAME.keystore -alias ALIAS_NAME -keyalg RSA -keysize 2048 -validity 10000
keytool -genkey -v -keystore id.keystore -alias MySignedApp -keyalg RSA -keysize 2048 -validity 10000
Schlüsselspeicherkennwort : yourApp @ 123 Schlüsselkennwort: yourApp @ 123
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>
Sign your app with your private keystore using jarsigner
jarsigner -verbose -sigalg SHA1withRSA -digestalg SHA1 -keystore KEYSTORE_FILE_PATH UNSIGNED_APK_PATH ALIAS_NAME
jarsigner -verbose -sigalg SHA1withRSA -digestalg SHA1 -keystore D:\ru\SignedBuilds\MySignedApp\id.keystore D:\ru\SignedBuilds\MySignedApp\MySignedAppS1-release-unsigned.apk id
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
jarsigner -verify -verbose -certs MySignedAppS1-release-unsigned.apk
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>
zipalign -v 4 JARSIGNED_APK_FILE_PATH ZIPALIGNED_SIGNED_APK_FILE_PATH_WITH_NAME_ofSignedAPK
zipalign -v 4 D:\ru\SignedBuilds\MySignedApp\MySignedAppS1-release-unsigned.apk D:\ru\SignedBuilds\MySignedApp\MySignedApp.apk
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 YOUR_APK_PATH
zipalign -c -v 4 D:\ru\SignedBuilds\MySignedApp\MySignedApp.apk
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>
Der Befehl verify dient nur dazu, zu überprüfen, ob APK korrekt erstellt und signiert wurde!
Ich hoffe das wird allen helfen :)