Wir veröffentlichen Anwendungen auf Google Play und verdienen Millionen. So verwenden Sie die App-Signaturfunktion bei Google Play. So signieren Sie eine APK mit einer Originalsignatur

Sie haben also viele Tage (und vielleicht auch Nächte) gearbeitet und jetzt ist Ihre erste hybride mobile Anwendung fertig. Es ist recht stabil, die meisten kritischen Fehler sind behoben. Es sind noch kleine übrig, aber da Sie bedenken, dass Perfektionismus böse ist, treffen Sie eine willensstarke Entscheidung, die Bewerbung zu veröffentlichen.

Voraussetzung hierfür ist das Vorhandensein einer signierten APK-Datei. Wie Sie eine APK-Datei signieren, erfahren Sie in diesem Artikel.

kleiner Exkurs

Als mein Lieblingsprojekt kurz vor der Veröffentlichung stand, suchte ich nach Informationen, wie ich schnell und problemlos eine Anwendung veröffentlichen kann. Viele der gefundenen Anleitungen sahen einfach aus. Ich habe die Anweisungen der Autoren des Ionic-Frameworks ausgewählt, auf dem die Anwendung entwickelt wurde. Beim ersten Mal hat nicht alles geklappt, es gibt mehrere Features. Der Signiervorgang wird in diesem Artikel beschrieben, wichtige Punkte werden hervorgehoben.

Ausgangsdaten

Ich gehe davon aus, dass Sie über alles verfügen, was Sie für die Entwicklung eines Hybrids benötigen mobile Anwendungen mit Apache Cordova. Muss installiert werden:
  • Apache Cordova
  • Java Entwickler-Kit
  • Android SDK-Tools
lcf wird als Projekt- und Anwendungsname verwendet. Ersetzen Sie ihn bei Bedarf durch Ihren Projektnamen.

Gehen

Zuerst müssen Sie einen Release-Build Ihrer Anwendung erstellen. Aber vorher stellen wir sicher, dass alle unnötigen Plugins entfernt werden. Wir benötigen beispielsweise kein Plugin, das Debug-Informationen auf der Konsole ausgibt. Entfernen wir es:

$ Cordova-Plugin rm Cordova-Plugin-Konsole
Um einen Release-Build für Android zu generieren, verwenden Sie den Befehl bauen mit Fahne --freigeben:

$ cordova build --release android
Dieser Befehl erstellt ohne Vorzeichen APK-Datei im Verzeichnis:

Plattformen/android/build/outputs/apk
Zum Beispiel „platforms/android/build/outputs/apk/“ android-release-unsigned.apk. Dann müssen wir diese Datei signieren und das Dienstprogramm ausführen zipalign um die Datei zu optimieren und vorzubereiten Google Play.

Zum Signieren einer Datei ist ein Zertifikat erforderlich. Lassen Sie es uns mit dem Dienstprogramm erstellen Schlüsselwerkzeug welches im JDK enthalten ist:

$ keytool -genkey -v -keystore lcf.keystore -alias lcf -keyalg RSA -keysize 2048 -validity 10000
Wichtig

Der Wert des Parameters -alias muss im Gedächtnis behalten werden, es ist jedoch besser, ihn aufzuschreiben. Im obigen Beispiel ist es gleich lcf (durch die ersten Buchstaben des Namens der Loyal Client Free-Anwendung). Ich werde hier keine Details preisgeben, wenn Sie interessiert sind, schreiben Sie in die Kommentare, ich werde Ihnen mehr erzählen.

Beim Signieren wird jedes Mal ein Alias ​​verwendet * Anwendungen. Um es leichter zu merken, verwenden Sie den Namen der Keystore-Datei als Alias, zum Beispiel:


-keystore hello-world.keystore -alias hello-world -keystore Weather-app.keystore -alias Weather-app -keystore todo.keystore -alias todo
* Sie müssen den Antrag bei jeder Veröffentlichung von Updates signieren

Dienstprogramm Schlüsselwerkzeug stellt eine Reihe von Fragen. Insgesamt werden es 8 davon sein. Um vorab eine Vorstellung von den Fragen und ungefähren Antworten zu haben, sind alle unten unter dem Spoiler angegeben.

Keytool-Fragen und Beispielantworten

1. Geben Sie das Keystore-Passwort ein:
Hier müssen Sie ein Passwort für die Datei eingeben (mindestens 6 Zeichen). Das eingegebene Passwort muss an einem sicheren Ort notiert werden, es wird bei jeder Unterzeichnung des Antrags benötigt.

2. Geben Sie das neue Passwort erneut ein:
Passwort erneut eingeben.

3. Wie lautet Ihr Vor- und Nachname?
: Iwan Petrow
Ihr Vor- und Nachname. Wert in eckige Klammern ist der Standardwert.

4. Wie heißt Ihre Organisationseinheit?
: ES
Der Name Ihres Unternehmensbereichs. Sie können es leer lassen, ich gebe IT an.

5. Wie heißt Ihre Organisation?
: 2 Entwickler
Der Name Ihrer Organisation. Geben Sie ggf. an.

6. Wie heißt Ihre Stadt oder Ihr Ort?
: Moskau
Stadtname

7. Wie heißt Ihr Bundesstaat oder Ihre Provinz?
: MO
Regionsname

8. Wie lautet der aus zwei Buchstaben bestehende Ländercode für dieses Gerät?
: DE
Code des Landes. Ich gebe RU an.

: j

Bestätigen Sie, ob alles korrekt ist, oder drücken Sie die Eingabetaste, um erneut einzutreten.


Am Ende erscheint eine Meldung über die erfolgreiche Generierung des Schlüssels. Sie werden aufgefordert, ein Passwort für den privaten Schlüssel festzulegen (wenn Sie dasselbe wie für das Zertifikat belassen möchten, drücken Sie die Eingabetaste):

Generieren eines 2.048-Bit-RSA-Schlüsselpaars und eines selbstsignierten Zertifikats (SHA256withRSA) mit einer Gültigkeit von 10.000 Tagen für: CN=Ivan Petrov, OU=IT, O=2developers, L=Moskau, ST=MO, C=RU Schlüssel eingeben Passwort für (RETURN, wenn dasselbe wie das Keystore-Passwort):
Die Datei wird im aktuellen Verzeichnis erstellt lcf.keystore.

Wichtig

Die erstellte Datei muss an einem sicheren Ort gespeichert werden. Wenn Sie ein privates Repository verwenden, kann die Datei zusammen mit den Quellcodes der Anwendung festgeschrieben werden. Im Allgemeinen sollten Zertifikate am besten separat aufbewahrt werden. Wenn Sie Ihr Zertifikat verlieren, können Sie keine App-Updates mehr veröffentlichen.

Es sind noch zwei Schritte erforderlich, und Sie haben eine APK-Datei zur Verteilung bereit. Wir gehen direkt zur Unterzeichnung über.

Um Ihre APK-Datei zu signieren, verwenden Sie das Dienstprogramm Jarsigner, das auch im JDK enthalten ist.

$ jarsigner -verbose -sigalg SHA1withRSA -digestalg SHA1 -keystore lcf.keystore android-release-unsigned.apk lcf
Nach dem Parameter wird der Name des Zertifikats angegeben -Schlüsselspeicher, Alias ​​– nach dem Dateinamen.

Um schließlich die APK-Datei zu optimieren, verwenden wir das Dienstprogramm zipalign:

$ zipalign -v 4 android-release-unsigned.apk LoyalClientFree.apk
Der letzte Parameter ist der Name der Datei, die Sie auf Google Play hochladen.

Wichtig.

Dienstprogramm zipalign Es ist Teil der Android SDK Tools und kann hier gefunden werden:

/path/to/Android/sdk/build-tools/VERSION/zipalign

Abschluss

Sie haben jetzt eine APK-Datei zur Verteilung bereit, die auf Google Play hochgeladen werden kann. Füllen Sie die Beschreibung aus, ermitteln Sie die Bewertung Ihrer Bewerbung und klicken Sie gerne auf „Veröffentlichen“.

Mit der App-Signaturfunktion von Google Play kann Google den Signaturschlüssel Ihrer App verwalten, diesen Schlüssel sichern und ihn zum Signieren Ihrer APKs für die Verteilung verwenden. Diese Speichermethode schützt Sie, falls der Schlüssel verloren geht oder manipuliert wird.

Wichtig! Um Android App Bundles (das empfohlene Format zum Veröffentlichen von Apps) verwenden zu können, müssen Sie sich beim Google Play App Signing Program anmelden, bevor Sie das App Bundle in die Play Console hochladen.

Kontoinhaber und Benutzer mit globalen Produktionsverwaltungsberechtigungen, die die Nutzungsbedingungen akzeptiert haben, können sich registrieren. Sie können jeweils nur eine App im Google Play App Signing Program registrieren.

Arbeitsprinzipien

Wenn Sie die App-Signaturfunktion bei Google Play nutzen, werden Ihre Schlüssel in derselben Infrastruktur wie Google-Schlüssel gespeichert und durch einen speziellen Schlüsselverwaltungsdienst geschützt. Detaillierte Informationen zur technischen Infrastruktur von Google finden Sie in der Google Cloud-Sicherheitsdokumentation.

Android-Apps werden mit einem privaten Schlüssel signiert. Jedem dieser Schlüssel ist ein öffentliches Zertifikat zugeordnet, das Geräte und Dienste verwenden können, um die Sicherheit von Anwendungen und deren Updates zu überprüfen. Auf Geräten, deren Signatur mit der Signatur übereinstimmt, werden nur die Updates installiert installierte Anwendung. Wenn Sie Ihren App-Signaturschlüssel von Google verwalten lassen, ist der Vorgang sicherer.

Notiz. Die Verwendung der App-Signaturfunktion in Google Play ist optional. Sie können APKs hochladen und Ihre eigenen Schlüssel verwalten, ohne App Bundles zu verwenden. Wenn Sie jedoch den Zugriff auf den Keystore verlieren oder dieser kompromittiert wird, können Sie Ihre App nicht aktualisieren und müssen sie unter einem anderen Paketnamen erneut veröffentlichen.

Beschreibungen von Schlüsseln, Gegenständen und Werkzeugen
Bedingungen Beschreibung
Anwendungssignaturschlüssel

Der Schlüssel, den Google Play zum Signieren von APK-Dateien verwendet, die an das Gerät des Benutzers gesendet werden. Wenn Sie sich bei Google Play für das App-Signaturprogramm anmelden, können Sie einen vorhandenen Signaturschlüssel hochladen oder von Google einen neuen generieren lassen.

Schlüssel herunterladen

Es gibt zwei Möglichkeiten, einen Upload-Schlüssel zu generieren:

  • Verwenden Sie den Anwendungssignaturschlüssel. Wenn Sie Google bei der Anmeldung für das Programm erlaubt haben, einen App-Signaturschlüssel zu generieren, ist der Upload-Schlüssel der Schlüssel, den Sie zum Signieren der ersten Version der App verwendet haben.
  • Verwenden Sie einen separaten Upload-Schlüssel. Wenn Sie bei der Anmeldung für das Programm Ihren eigenen App-Signaturschlüssel übermittelt haben, können Sie aus Sicherheitsgründen einen neuen Upload-Schlüssel generieren. Wenn Sie dies nicht möchten, verwenden Sie den App-Signaturschlüssel als Download-Schlüssel zum Signieren neuer Versionen.
Zertifikat (.der oder .pem)

Ein Zertifikat, das den öffentlichen Schlüssel enthält und Weitere Informationenüber seinen Besitzer. Das Public-Key-Zertifikat lässt jeden wissen, wer das App Bundle oder die APK-Datei signiert hat. Dieses Zertifikat kann geteilt werden, da es keinen privaten Schlüssel enthält.

Um Schlüssel bei API-Anbietern zu registrieren, können Sie das öffentliche Zertifikat für den Anwendungssignaturschlüssel auf der Seite herunterladen Unterzeichnung des Antrags in der Play Console. Das Public-Key-Zertifikat kann mit allen geteilt werden, da es den privaten Schlüssel nicht enthält.

Fingerabdruck des Zertifikats

Eine kurze und eindeutige Kennung für das Zertifikat. Der Fingerabdruck wird zusammen mit dem Paketnamen häufig von API-Anbietern angefordert, um Zugriff auf ihre Dienste zu ermöglichen.

Die MD5-, SHA-1- und SHA-256-Fingerabdrücke der Anwendungs-Upload- und Signierungszertifikate finden Sie unter Unterzeichnung des Antrags in der Play Console. Möglicherweise erhalten Sie auch einen anderen digitalen Fingerabdruck. Laden Sie dazu auf derselben Seite das Originalzertifikat im DER-Format herunter.

Java-Keystore (.jks oder .keystore) Speicherung von Sicherheitszertifikaten und privaten Schlüsseln.
PEPK-Tool

Ein Tool zum Exportieren privater Schlüssel aus dem Java-Speicher und zum Verschlüsseln dieser für die Übermittlung an Google Play.

Nachdem Sie Google Ihren App-Signaturschlüssel zur Verfügung gestellt haben, können Sie Ihren eigenen Schlüssel (und ggf. sein öffentliches Zertifikat) exportieren und hochladen und dann den Anweisungen zum Herunterladen und Verwenden des Tools folgen. Sie können auch das Open-Source-PEPK-Tool herunterladen, anzeigen und verwenden.

Prozess der Antragsunterzeichnung

Sie können APK-Dateien, die mit dem Original-App-Signaturschlüssel signiert wurden, vor oder nach dem Signieren der App bei Google Play hochladen.

Wenn Sie auf Android App Bundles aktualisieren, können Sie diese in Testversionen testen und vorhandene APKs in Produktionsversionen verwenden. So funktioniert das:

  1. Sie signieren ein App Bundle oder APK und laden es auf die Play Console hoch.
  2. Der App-Signaturvorgang hängt davon ab, was Sie herunterladen.
    • App-Bundle. Google optimiert die APKs im App Bundle und signiert sie anschließend mit dem App Signing Key.
    • Mit dem Upload-Schlüssel signierte APK-Datei. Google überprüft Ihre Signatur, entfernt sie und signiert APKs erneut mit dem App-Signaturschlüssel.
    • Eine APK-Datei, die mit einem Anwendungssignaturschlüssel signiert ist. Google überprüft die Signatur.
  3. Google liefert den Nutzern signierte APK-Dateien.

So melden Sie sich für das Google Play App Signing-Programm an

Neue Anwendungen

Schritt 1: Erstellen Sie einen Upload-Schlüssel

  1. Erstellen Sie einen Upload-Schlüssel gemäß den Anweisungen.
  2. Signieren Sie die neue APK-Datei mit einem Upload-Schlüssel.

Schritt 2: Bereiten Sie die Veröffentlichung vor

  1. Befolgen Sie die Anweisungen.
  2. Nachdem Sie einen Versionstyp ausgewählt haben, konfigurieren Sie Ihre App-Signaturoptionen unter „Google Ihren App-Signaturschlüssel sichern und verwalten lassen“.
  3. Wenn Sie klicken Weitermachen, wird der generierte Schlüssel zum Upload-Schlüssel, der zum Signieren zukünftiger Versionen verwendet wird. Sie können auch aus Folgendem wählen Erweiterte Einstellungen:
    • Verwenden Sie einen Schlüssel für verschiedene Anwendungen im Entwicklerkonto (Option 2).
    • Laden Sie den Signaturschlüssel einer vorhandenen Anwendung hoch (Option 2, 3 und 4), indem Sie die für Sie am besten geeignete Export- und Upload-Methode auswählen. Nachdem Sie den Anwendungssignaturschlüssel und sein öffentliches Zertifikat hochgeladen haben, können Sie entweder den Anwendungssignaturschlüssel als Anwendungssignaturschlüssel verwenden.

Notiz. Um fortzufahren, müssen Sie die Nutzungsbedingungen akzeptieren und sich für das App-Signaturprogramm anmelden.

Schritt 3: Registrieren Sie Ihren App-Signaturschlüssel bei API-Anbietern

Wenn Ihre Anwendung eine API verwendet, müssen Sie zur Authentifizierung höchstwahrscheinlich ein Schlüsselzertifikat registrieren, mit dem Google Ihre Anwendung signiert. So finden Sie ein Zertifikat:

  1. Melden Sie sich bei der Play Console an.
  2. Wählen Sie eine Anwendung aus.
  3. Wählen Sie im Menü auf der linken Seite aus Release-Management > Anwendungssignaturen.
    • Wenn der API-Anbieter einen anderen Fingerabdrucktyp erfordert, können Sie das Originalzertifikat im DER-Format herunterladen und es bei Bedarf mit den entsprechenden Tools konvertieren.
Veröffentlichte Anwendungen

Schritt 1: Melden Sie sich für das Google Play App Signing-Programm an

  1. Melden Sie sich bei der Play Console an.
  2. Wählen Sie eine Anwendung aus.
  3. Wählen Sie im Menü auf der linken Seite aus Release-Management > Anwendungssignaturen.
  4. Lesen Sie ggf. die Nutzungsbedingungen und klicken Sie auf Akzeptieren.

Schritt 2 Senden Sie den Originalschlüssel an Google und generieren Sie einen Upload-Schlüssel

  1. Suchen Sie den Original-App-Signaturschlüssel.
  2. Melden Sie sich bei der Play Console an.
  3. Wählen Sie eine Anwendung aus.
  4. Wählen Sie im Menü auf der linken Seite aus Release-Management > Anwendungssignaturen.
  5. Laden Sie Ihren vorhandenen App-Signaturschlüssel so hoch, dass er am besten zu Ihrem Veröffentlichungsprozess passt.
  1. und laden Sie das Zertifikat auf Google Play hoch.
    • Sie können den Anwendungssignaturschlüssel auch als Upload-Schlüssel verwenden.
  2. Kopieren Sie die Fingerabdrücke (MD5, SHA-1 und SHA-256) des Anwendungssignaturzertifikats.
    • Zu Testzwecken müssen Sie möglicherweise ein Upload-Schlüsselzertifikat beim API-Anbieter registrieren und dabei den Fingerabdruck des Zertifikats und den Anwendungssignaturschlüssel verwenden.

Schritt 4: Signieren Sie das nächste Update Ihrer App mit einem Upload-Schlüssel

Veröffentlichte App-Updates müssen mit einem Download-Schlüssel signiert werden.

So generieren Sie einen Upload-Schlüssel und aktualisieren Keystores

Sie können einen Upload-Schlüssel generieren, wenn Sie sich bei Google Play für das App-Signaturprogramm anmelden, oder Sie können einen später in diesem Abschnitt generieren Release-Management > Anwendungssignaturen.

Um einen Upload-Schlüssel zu erstellen, gehen Sie folgendermaßen vor:

  1. Befolgen Sie die Anweisungen auf der Android-Entwicklerseite. Bewahren Sie den Schlüssel an einem sicheren Ort auf.
  2. Exportieren Sie das Bootschlüsselzertifikat im PEM-Format. Ersetzen Sie die folgenden Argumente durch Unterstriche:
    • $ keytool -export -rfc -keystore upload-keystore.jks -alias upload -file upload_certificate.pem
  3. Wenn Sie während des Freigabevorgangs dazu aufgefordert werden, laden Sie das Zertifikat hoch, um es bei Google zu registrieren.

Wenn Sie einen Upload-Schlüssel verwenden:

  • Der Upload-Schlüssel wird nur bei Google registriert, um die Identität des App-Erstellers zu authentifizieren.
  • Ihre Signatur wird von allen hochgeladenen APKs entfernt, bevor sie die Benutzer erreichen.
Einschränkungen
  • Der Upload-Schlüssel muss RSA-Verschlüsselung verwenden und mindestens 2048 Bit groß sein.
  • DSA- und EC-Schlüssel sowie RSA-Schlüssel mit weniger als 2048 Bit werden nicht unterstützt.
Keystores aktualisieren

Nachdem Sie Ihren Startschlüssel erstellt haben, überprüfen und aktualisieren Sie bei Bedarf die folgenden Speicherorte:

  • lokales System;
  • geschützt lokaler Server(mit unterschiedlichen Zugriffskontrolllisten);
  • Cloud-System (mit verschiedenen Zugriffskontrolllisten);
  • spezielle Dienstleistungen für die Schlüsselverwaltung;
  • Git-Repositorys.

So aktualisieren Sie den Signaturschlüssel für neue App-Installationen

In einigen Fällen können Sie eine Aktualisierung des Signaturschlüssels der App anfordern. Der neue Schlüssel wird zum Signieren neuer Installationen und Aktualisierungen der Anwendung verwendet, während der alte Schlüssel zum Aktualisieren signierter Versionen verwendet wird, die Benutzer bereits installiert haben.

Der Signaturschlüssel kann nur einmal pro Anwendung aktualisiert werden. Im unwahrscheinlichen Fall, dass Sie denselben Signaturschlüssel für die Ausführung mehrerer Anwendungen im selben Prozess verwenden, kann der Schlüssel nicht aktualisiert werden.

In den folgenden Fällen sollten Sie eine Aktualisierung des Anwendungssignaturschlüssels anfordern:

  • Sie benötigen einen kryptografisch stärkeren Schlüssel.
  • Der App-Signaturschlüssel wurde kompromittiert.

Notiz. Die Anforderung, den App-Signaturschlüssel auf der Play Console zu aktualisieren, steht nicht im Zusammenhang mit dem Ersetzen des Schlüssels in Android P und höher. Dieser Schlüsselersatz wird derzeit von Google Play nicht unterstützt.

Wichtige Hinweise zum Aktualisieren von Schlüsseln

Bevor Sie eine Schlüsselaktualisierung anfordern, ist es wichtig zu verstehen, welche Änderungen dies mit sich bringt.

  • Wenn Sie denselben Signaturschlüssel für mehrere Apps verwenden, um denselben Code oder dieselben Daten zu verwenden, müssen Sie die Apps aktualisieren, damit sie sowohl den neuen als auch den alten Schlüssel erkennen.
  • Wenn Ihre App eine API verwendet, müssen Sie die Zertifikate für die neuen und alten App-Signaturschlüssel beim API-Anbieter registrieren, bevor Sie sie aktualisieren. Zertifikate sind auf der Seite verfügbar Unterzeichnung des Antrags Spielkonsole.
  • Wenn viele Benutzer Ihrer App Updates über Filesharing-Netzwerke installieren, können sie nur Updates installieren, die mit demselben Schlüssel signiert sind wie die auf ihren Geräten installierte App. Wenn Anwendungen nicht aktualisiert werden können, weil installierte Version Mit einem anderen Schlüssel signiert, können Benutzer es deinstallieren und erneut installieren, um Updates zu erhalten.
Fordern Sie ein Schlüsselupdate für Neuinstallationen an. Gehen Sie dazu folgendermaßen vor:
  1. Melden Sie sich bei der Play Console an.
  2. Wählen Sie eine Anwendung aus.
  3. Wählen Sie im Menü auf der linken Seite aus Release-Management > Anwendungssignaturen.
  4. Wählen Sie auf der Karte „Signaturschlüssel für neue App-Installationen aktualisieren“ aus Schlüsselaktualisierung anfordern.
  5. Wählen Sie, was mit dem Gerät geschehen soll.
    • Abhängig von der von Ihnen gewählten Option müssen Sie möglicherweise den Support kontaktieren, um Ihre Anfrage abzuschließen.
  6. Lassen Sie Google Play einen neuen App-Signaturschlüssel generieren (empfohlen) oder laden Sie einen herunter.
    • Wenn der Schlüssel nach der Aktualisierung des App-Signaturschlüssels mit dem Upload-Schlüssel identisch war, können Sie weiterhin den alten App-Signaturschlüssel als Upload-Schlüssel verwenden oder einen neuen erstellen.
  • Wenn Sie Ihre App auch außerhalb von Google Play veröffentlicht haben oder dies beabsichtigen, können Sie einen vorab freigegebenen App-Signaturschlüssel generieren und ihn bei Google hochladen, wenn Sie sich für das Google Play App Signing Program anmelden.
  • Um Ihr Konto zu schützen, Aktivieren Sie die Bestätigung in zwei Schritten für alle Konten, die Zugriff auf die Play Console haben.
  • Nach der Veröffentlichung des App Bundles zu einem Test bzw Arbeitsversion Sie können den App Bundle Browser öffnen und ein ZIP-Archiv herunterladen, das alle APK-Dateien für ein bestimmtes Gerät enthält. Diese APKs sind bereits mit dem App-Signaturschlüssel signiert. Sie können sie mit dem Dienstprogramm aus einem ZIP-Archiv auf dem Gerät installieren Befehlszeile Bundletool.
  • Generieren Sie für mehr Sicherheit einen neuen Upload-Schlüssel, der sich vom App-Signaturschlüssel unterscheidet.
  • Wenn Sie ein mit einem Upload-Schlüssel signiertes APK testen möchten, registrieren Sie den Schlüssel bei einem Dienst oder einer API, die die App-Signatur zur Authentifizierung verwendet (z. B. API). Google Maps oder das Facebook Developer Pack).
  • Wenn Sie die Google APIs verwenden, können Sie das Upload-Zertifikat in der Google Cloud Console registrieren.

Was tun, wenn der Schlüssel verloren geht oder gehackt wird?

Wenn Sie den Zugriff auf Ihren privaten Upload-Schlüssel verloren haben oder dieser gehackt wurde, wenden Sie sich an Ihren Kontoinhaber. Bei der Kontaktaufnahme mit dem Support muss der Kontoinhaber die Datei upload_certificate.pem anhängen.

Wenn das Support-Team einen neuen Upload-Schlüssel registriert, erhalten Sie eine E-Mail und können dann die Keystores aktualisieren und den Schlüssel bei den API-Anbietern registrieren.

Wichtig! Das Zurücksetzen des Upload-Schlüssels hat keine Auswirkungen auf den App-Signaturschlüssel, den Google Play zum Signieren von APK-Dateien verwendet, bevor sie an Benutzer gesendet werden.

War diese Information hilfreich?

Wie kann dieser Artikel verbessert werden?

Manchmal sind einige Anwendungen auf Android aus irgendeinem Grund für den Benutzer nicht geeignet. Ein Beispiel ist lästige Werbung. Und es passiert so: Jeder beherrscht das Programm gut, aber nur die Übersetzung darin ist entweder schief oder fehlt völlig. Oder es handelt sich beispielsweise um eine Testversion des Programms, es gibt jedoch keine Möglichkeit, die Vollversion zu erhalten. Wie kann man die Situation ändern?

Einführung

In diesem Artikel werden wir darüber sprechen, wie man ein APK mit einer Anwendung zerlegt, seine interne Struktur betrachtet, den Bytecode zerlegt und dekompiliert und auch versucht, verschiedene Änderungen an Anwendungen vorzunehmen, die uns diesen oder jenen Vorteil bringen können.

Um das alles selbst zu erledigen, benötigen Sie mindestens Grundkenntnisse der Java-Sprache, in der Android-Anwendungen geschrieben werden, und der XML-Sprache, die überall in Android verwendet wird – von der Beschreibung der Anwendung selbst und ihrer Zugriffsrechte bis hin zur Speicherung von Strings das auf dem Bildschirm angezeigt wird. Sie benötigen außerdem Kenntnisse im Umgang mit spezieller Konsolensoftware.

Was ist also das APK-Paket, in dem absolut die gesamte Software für Android vertrieben wird?

Dekompilierung der Anwendung

In dem Artikel haben wir nur mit zerlegtem Anwendungscode gearbeitet. Wenn Sie jedoch schwerwiegendere Änderungen an großen Anwendungen vornehmen, wird es viel schwieriger, den kleinen Code zu verstehen. Glücklicherweise können wir den Dex-Code in Java-Code dekompilieren, der zwar nicht original und nicht rückkompilierbar ist, aber viel einfacher zu lesen und die Logik der Anwendung zu verstehen ist. Dazu benötigen wir zwei Werkzeuge:

  • dex2jar – Übersetzer von Dalvik-Bytecode in JVM-Bytecode, auf dessen Grundlage wir Java-Code erhalten können;
  • jd-gui ist selbst ein Dekompiler, der es Ihnen ermöglicht, lesbaren Java-Code aus JVM-Bytecode zu erhalten. Alternativ können Sie Jad (www.varanecas.com/jad) verwenden. Obwohl es ziemlich alt ist, generiert es in einigen Fällen besser lesbaren Code als JD-GUI.

Sie sollten so verwendet werden. Zuerst starten wir dex2jar und geben als Argument den Pfad zum APK-Paket an:

%dex2jar.sh mail.apk

Als Ergebnis erscheint das Java-Paket mail.jar im aktuellen Verzeichnis, das bereits in jd-gui geöffnet werden kann, um den Java-Code anzuzeigen.

APK-Pakete zusammenstellen und abrufen

Plastiktüte Android Apps Tatsächlich handelt es sich um eine normale ZIP-Datei, für deren Anzeige und Entpacken keine speziellen Tools erforderlich sind. Es reicht aus, einen Archivierer zu haben – 7zip für Windows oder die Konsole zum Entpacken unter Linux. Aber das ist schon die Hülle. Was ist da drin? Im Inneren haben wir im Allgemeinen die folgende Struktur:

  • META-INF/- enthält ein digitales Zertifikat der Anwendung, das ihren Ersteller zertifiziert, und Prüfsummen der Paketdateien;
  • res/ – verschiedene Ressourcen, die die Anwendung bei ihrer Arbeit verwendet, wie zum Beispiel Bilder, eine deklarative Beschreibung der Schnittstelle und andere Daten;
  • AndroidManifest.xml- Beschreibung der Anwendung. Dazu gehören beispielsweise die Liste der erforderlichen Berechtigungen, die erforderliche Android-Version und die erforderliche Bildschirmauflösung;
  • class.dex- Kompilierter Anwendungsbytecode für virtuelle Maschine Dalvik;
  • resources.arsc- ebenfalls Ressourcen, aber anderer Art - insbesondere Strings (ja, diese Datei kann zur Russifizierung verwendet werden!).

Die aufgelisteten Dateien und Verzeichnisse befinden sich, wenn nicht in allen, dann vielleicht in der überwiegenden Mehrheit der APKs. Es gibt jedoch noch ein paar weitere, weniger verbreitete Dateien/Verzeichnisse, die erwähnenswert sind:

  • Vermögenswerte- Analogon von Ressourcen. Der Hauptunterschied besteht darin, dass Sie für den Zugriff auf eine Ressource deren Kennung kennen müssen, während die Liste der Assets dynamisch mithilfe der Methode AssetManager.list() im Anwendungscode abgerufen werden kann.
  • lib- Native Linux-Bibliotheken, die mit Hilfe von NDK (Native Development Kit) geschrieben wurden.

Dieses Verzeichnis wird von Spieleherstellern verwendet, um dort ihre in C/C++ geschriebene Spiel-Engine abzulegen, sowie von Entwicklern von Hochleistungsanwendungen (z. B. Google Chrome). Habe das Gerät verstanden. Aber wie erhält man die Paketdatei der gewünschten Anwendung? Da es ohne Rooting nicht möglich ist, APK-Dateien vom Gerät abzurufen (sie befinden sich im Verzeichnis /data/app) und Rooting nicht immer ratsam ist, gibt es mindestens drei Möglichkeiten, die Anwendungsdatei auf den Computer zu übertragen:

  • APK-Downloader-Erweiterung für Chrome;
  • Echte APK-Leecher-App;
  • verschiedene Datei-Hosting und Warezniki.

Welches man verwendet, ist Geschmackssache; Da wir lieber separate Anwendungen verwenden, werden wir die Verwendung von Real APK Leecher beschreiben, zumal es in Java geschrieben ist und dementsprechend auch unter Windows und sogar unter nix funktioniert.

Nach dem Start des Programms müssen Sie drei Felder ausfüllen: E-Mail, Passwort und Geräte-ID – und eine Sprache auswählen. Die ersten beiden sind die E-Mail-Adresse und das Passwort Ihres Google-Kontos, das Sie auf dem Gerät verwenden. Die dritte ist die Geräte-ID, die Sie erhalten, indem Sie den Code auf dem Dialer eingeben # #8255## und dann die Zeile Geräte-ID finden. Beim Ausfüllen müssen Sie nur die ID ohne das Android-Präfix eingeben.

Nach dem Ausfüllen und Speichern erscheint häufig die Meldung „Fehler beim Herstellen einer Verbindung zum Server“. Es hat nichts mit Google Play zu tun, also ignorieren Sie es ruhig und suchen Sie nach Paketen, die Sie interessieren.

Überprüfung und Änderung

Nehmen wir an, Sie haben ein Paket gefunden, das Sie interessiert, haben es heruntergeladen, entpackt ... und als Sie versucht haben, eine XML-Datei anzuzeigen, waren Sie überrascht, dass es sich bei der Datei nicht um eine Textdatei handelt. Wie dekompiliert man es und wie arbeitet man mit Paketen im Allgemeinen? Ist es wirklich notwendig, das SDK zu installieren? Nein, Sie müssen das SDK nicht installieren. Tatsächlich werden für alle Schritte zum Entpacken, Ändern und Verpacken von APK-Paketen die folgenden Tools benötigt:

  • ZIP-Archiver zum Aus- und Einpacken;
  • klein- Assembler/Disassembler des Bytecodes der virtuellen Dalvik-Maschine (code.google.com/p/smali);
  • aapt- ein Tool zum Packen von Ressourcen (standardmäßig werden Ressourcen in binärer Form gespeichert, um die Anwendungsleistung zu optimieren). Im Android SDK enthalten, kann aber separat erworben werden;
  • Unterzeichner- ein Tool zum digitalen Signieren eines geänderten Pakets (bit.ly/Rmrv4M).

Sie können alle diese Tools separat verwenden, was jedoch unpraktisch ist. Daher ist es besser, auf ihnen basierende Software auf höherer Ebene zu verwenden. Wenn Sie Linux oder Mac OS X verwenden, gibt es ein Tool namens apktool . Es ermöglicht Ihnen, Ressourcen in ihre ursprüngliche Form zu entpacken (einschließlich binärer XML- und ASC-Dateien) und das Paket mit geänderten Ressourcen neu zu erstellen. Es weiß jedoch nicht, wie Pakete signiert werden, sodass Sie das Signer-Dienstprogramm manuell ausführen müssen. Obwohl das Dienstprogramm in Java geschrieben ist, ist seine Installation eher ungewöhnlich. Zuerst müssen Sie die JAR-Datei selbst abrufen:

$ cd /tmp $ wget http://bit.ly/WC3OCz $ tar -xjf apktool1.5.1.tar.bz2

$ wget http://bit.ly/WRjEc7 $ tar -xjf apktool-install-linux-r05-ibot.tar.bz2

$ mv apktool.jar ~/bin $ mv apktool-install-linux-r05-ibot/* ~/bin $ export PATH=~/bin:$PATH

Wenn Sie unter Windows arbeiten, gibt es dafür ein hervorragendes Tool namens Virtual Ten Studio, das auch alle diese Tools (einschließlich apktool selbst) bündelt, dem Benutzer jedoch anstelle einer CLI-Schnittstelle eine intuitive Benutzeroberfläche bietet GUI, mit dem Sie mit wenigen Klicks Vorgänge zum Entpacken, Disassemblieren und Dekompilieren durchführen können. Bei diesem Tool handelt es sich um Donation-ware, d. h. manchmal werden Fenster mit einem Vorschlag zum Erwerb einer Lizenz angezeigt, was jedoch letztendlich toleriert werden kann. Es macht keinen Sinn, es zu beschreiben, da Sie die Benutzeroberfläche in wenigen Minuten verstehen können. Aber apktool sollte aufgrund seines Konsolencharakters ausführlicher besprochen werden.


Erwägen Sie die Optionen von apktool. Kurz gesagt gibt es drei Hauptbefehle: d (Dekodieren), b (Build) und if (Framework installieren). Wenn mit den ersten beiden Befehlen alles klar ist, was macht dann der dritte, der Bedingungsoperator? Es entpackt das angegebene UI-Framework, das beim Zerlegen eines Systempakets benötigt wird.

Betrachten Sie die interessantesten Optionen des ersten Befehls:

  • -S- Dex-Dateien nicht disassemblieren;
  • -R- keine Ressourcen entpacken;
  • -B- Fügen Sie keine Debugging-Informationen in die Ergebnisse der Disassemblierung der Dex-Datei ein.
  • --frame-pfad- Verwenden Sie das angegebene UI-Framework anstelle des integrierten apktool. Betrachten Sie nun einige Optionen für den b-Befehl:
  • -F- Zwangsmontage ohne Überprüfung der Änderungen;
  • -A- Geben Sie den Pfad zu aapt (dem Tool zum Erstellen des APK-Archivs) an, wenn Sie es aus irgendeinem Grund von einer anderen Quelle verwenden möchten.

Die Verwendung von apktool ist sehr einfach. Geben Sie einfach einen der Befehle und den Pfad zum APK an, zum Beispiel:

$ apktool d mail.apk

Danach erscheinen alle extrahierten und zerlegten Paketdateien im Mail-Verzeichnis.

Vorbereitung. Werbungen ausschalten

Theorie ist natürlich gut, aber warum ist sie nötig, wenn wir nicht wissen, was wir mit dem ausgepackten Paket machen sollen? Versuchen wir, die Theorie zu unserem eigenen Vorteil anzuwenden, nämlich, dass wir einige Software so modifizieren, dass sie uns keine Werbung zeigt. Lassen Sie es zum Beispiel Virtual Torch sein – eine virtuelle Fackel. Für uns ist diese Software perfekt, weil sie voller lästiger Werbung ist und einfach genug ist, um nicht in der Code-Wildnis verloren zu gehen.


Laden Sie die Anwendung also mit einer der oben genannten Methoden vom Markt herunter. Wenn Sie sich für die Verwendung von Virtuous Ten Studio entscheiden, öffnen Sie einfach die APK-Datei in der Anwendung, entpacken Sie sie, erstellen Sie ein Projekt (Datei -> Neues Projekt) und wählen Sie dann Datei importieren aus dem Kontextmenü des Projekts. Wenn Ihre Wahl auf apktool gefallen ist, reicht es aus, einen Befehl auszuführen:

$ apktool d com.kauf.particle.virtualtorch.apk

Danach erscheint im Verzeichnis com.kauf.particle.virtualtorch ein Dateibaum, ähnlich dem im vorherigen Abschnitt beschriebenen, jedoch mit einem zusätzlichen smali-Verzeichnis anstelle von dex-Dateien und einer apktool.yml-Datei. Die erste enthält den zerlegten Code der ausführbaren Dex-Datei der Anwendung, die zweite enthält die Dienstinformationen, die apktool benötigt, um das Paket wieder zusammenzusetzen.

Der erste Ort, an dem wir suchen müssen, ist natürlich AndroidManifest.xml. Und hier treffen wir sofort auf folgende Zeile:

Es ist leicht zu erraten, dass sie dafür verantwortlich ist, der Anwendung Berechtigungen zur Nutzung der Internetverbindung zu erteilen. Wenn wir nur Werbung loswerden wollen, wird es höchstwahrscheinlich ausreichen, die Anwendung aus dem Internet zu verbannen. Versuchen wir es. Löschen Sie die angegebene Zeile und versuchen Sie, die Software mit apktool zu kompilieren:

$ apktool b com.kauf.particle.virtualtorch

Die resultierende APK-Datei erscheint im Verzeichnis com.kauf.particle.virtualtorch/build/. Es kann jedoch nicht installiert werden, da es weder über eine digitale Signatur noch über Dateiprüfsummen verfügt (es verfügt lediglich über kein META-INF/-Verzeichnis). Wir müssen das Paket mit dem Dienstprogramm apk-signer signieren. Gestartet. Die Benutzeroberfläche besteht aus zwei Registerkarten – auf der ersten (Key Generator) erstellen wir Schlüssel, auf der zweiten (APK Signer) signieren wir. Um unseren privaten Schlüssel zu erstellen, füllen Sie die folgenden Felder aus:

  • Zieldatei- Keystore-Ausgabedatei; es speichert normalerweise ein Schlüsselpaar;
  • Passwort Und Bestätigen- Passwort zur Speicherung;
  • Alias- Name des Schlüssels im Repository;
  • Alias-Passwort Und Bestätigen- Geheimschlüssel-Passwort;
  • Gültigkeit- Gültigkeitsdauer (in Jahren). Der Standardwert ist optimal.

Die übrigen Felder sind im Allgemeinen optional – Sie müssen jedoch mindestens eines ausfüllen.


WARNUNG

Um eine Anwendung mit apk-signer zu signieren, müssen Sie das Android SDK installieren und in den Anwendungseinstellungen den vollständigen Pfad dazu angeben.

Alle Informationen dienen ausschließlich Informationszwecken. Weder die Herausgeber noch der Autor sind für mögliche Schäden verantwortlich, die durch die Materialien dieses Artikels verursacht werden.

Jetzt können Sie die APK mit diesem Schlüssel signieren. Wählen Sie auf der Registerkarte „APK Signer“ die neu generierte Datei aus, geben Sie das Passwort, den Schlüsselalias und das Passwort dafür ein, suchen Sie dann die APK-Datei und klicken Sie mutig auf die Schaltfläche „Signieren“. Wenn alles gut geht, wird das Paket signiert.

DIE INFO

Da wir das Paket mit unserem eigenen Schlüssel signiert haben, kommt es zu Konflikten mit der Originalanwendung. Wenn wir also versuchen, die Software über den Markt zu aktualisieren, erhalten wir eine Fehlermeldung.

Nur Software von Drittanbietern benötigt eine digitale Signatur, wenn Sie also Änderungen vornehmen Systemanwendungen, die durch Kopieren in das Verzeichnis /system/app/ installiert werden, müssen Sie nicht signieren.

Danach legen wir das Paket auf dem Smartphone ab, installieren es und führen es aus. Voila, die Anzeige ist weg! Stattdessen erschien jedoch die Meldung, dass wir kein Internet haben oder nicht über die entsprechenden Berechtigungen verfügen. Theoretisch könnte das reichen, aber die Meldung sieht nervig aus, und ehrlich gesagt hatten wir einfach Glück mit einer dummen Anwendung. Eine gut geschriebene Software klärt höchstwahrscheinlich ihre Anmeldeinformationen oder prüft, ob eine Internetverbindung besteht, und verweigert andernfalls einfach den Start. Wie soll es in diesem Fall sein? Bearbeiten Sie natürlich den Code.

Typischerweise erstellen Anwendungsautoren spezielle Klassen zum Anzeigen von Werbung und rufen Methoden dieser Klassen während des Starts der Anwendung oder einer ihrer „Aktivitäten“ (einfach ausgedrückt: Anwendungsbildschirme) auf. Versuchen wir, diese Klassen zu finden. Wir gehen ins Smali-Verzeichnis, dann com (in org gibt es nur die offene Grafikbibliothek cocos2d), dann kauf (genau dort, denn das ist der Name des Entwicklers und dort ist sein ganzer Code) – und hier ist es, das Marketingverzeichnis. Darin finden wir eine Reihe von Dateien mit der Erweiterung smali. Dabei handelt es sich um Klassen, und die bemerkenswerteste davon ist die Klasse Ad.smali, deren Namen leicht zu erraten ist, dass sie Anzeigen anzeigt.

Wir könnten die Logik seiner Arbeit ändern, aber es wäre viel einfacher, Aufrufe einer seiner Methoden dummerweise aus der Anwendung selbst zu entfernen. Deshalb verlassen wir das Marketingverzeichnis und gehen zum benachbarten Partikelverzeichnis und dann zu Virtualtorch. Besondere Aufmerksamkeit verdient hier die Datei MainActivity.smali. Dies ist eine Standard-Android-Klasse, die vom Android SDK generiert und als Einstiegspunkt in die Anwendung festgelegt wird (analog zur Hauptfunktion in C). Öffnen Sie die Datei zum Bearbeiten.

Darin befindet sich der Smali-Code (lokaler Assembler). Es ist ziemlich verwirrend und aufgrund seines Low-Level-Charakters schwer zu lesen, daher werden wir es nicht studieren, sondern einfach alle Erwähnungen der Ad-Klasse im Code suchen und sie auskommentieren. Wir geben in der Suche die Zeichenfolge „Ad“ ein und gelangen zu Zeile 25:

Feld Privatanzeige:Lcom/kauf/marketing/Ad;

Hier wird ein Feld ad erstellt, um ein Objekt der Klasse Ad zu speichern. Wir kommentieren, indem wir das ###-Zeichen vor die Zeile setzen. Wir setzen die Suche fort. Zeile 423:

Neuinstanz v3, Lcom/kauf/marketing/Ad;

Hier wird das Objekt erstellt. Wir kommentieren. Wir setzen die Suche fort und finden in den Zeilen 433, 435, 466, 468, 738, 740, 800 und 802 Aufrufe der Methoden der Ad-Klasse. Wir kommentieren. Sieht so aus, als wäre es das. Wir sparen. Jetzt muss die Verpackung wieder zusammengebaut und auf ihre Funktionsfähigkeit und das Vorhandensein von Werbung überprüft werden. Für die Reinheit des Experiments geben wir die aus AndroidManifest.xml entfernte Zeile zurück, sammeln das Paket, signieren es und installieren es.

Unser Meerschweinchen. Sichtbare Werbung

Op-pa! Die Werbung verschwand nur, während die Anwendung lief, blieb aber im Hauptmenü, das wir sehen, wenn wir die Software starten. Also, warten Sie, aber der Einstiegspunkt ist die MainActivity-Klasse, und die Werbung verschwand, während die Anwendung ausgeführt wurde, blieb aber im Hauptmenü, also ist der Einstiegspunkt ein anderer? Um den wahren Einstiegspunkt anzuzeigen, öffnen wir die Datei AndroidManifest.xml erneut. Und ja, es enthält die folgenden Zeilen:

Sie sagen uns (und, was noch wichtiger ist, dem Android), dass die Aktivität mit dem Namen Start als Reaktion auf die Generierung der Absicht (Ereignis) android.intent.action.MAIN aus der Kategorie android.intent.category.LAUNCHER gestartet werden soll. Dieses Ereignis wird generiert, wenn Sie im Launcher auf das Anwendungssymbol tippen, und definiert somit den Einstiegspunkt, nämlich die Startklasse. Höchstwahrscheinlich hat der Programmierer zunächst eine Anwendung ohne Hauptmenü geschrieben, deren Einstiegspunkt die Standardklasse MainActivity war, und dann ein neues Fenster (Aktivität) hinzugefügt, das ein Menü enthält und in der Startklasse beschrieben ist, und es manuell zu einem Eintrag gemacht Punkt.

Wir öffnen die Datei Start.smali und suchen erneut nach der Zeile „Ad“, in den Zeilen 153 und 155 finden wir die Erwähnung der FirstAd-Klasse. Es befindet sich auch im Quellcode und ist, dem Namen nach zu urteilen, für die Anzeige von Anzeigen auf dem Hauptbildschirm verantwortlich. Schauen wir weiter, es gibt eine Erstellung einer Instanz der FirstAd-Klasse und einer Absicht entsprechend dem Kontext, der sich auf diese Instanz bezieht, und dann die Bezeichnung cond_10, deren bedingter Übergang genau vor der Erstellung einer Instanz der Klasse ausgeführt wird :

If-ne p1, v0, :cond_10 .line 74 new-instance v0, Landroid/content/Intent; ... :cond_10

Höchstwahrscheinlich berechnet das Programm zufällig, ob es notwendig ist, Werbung auf dem Hauptbildschirm anzuzeigen, und springt, wenn nicht, direkt zu cond_10. Ok, vereinfachen wir ihre Aufgabe und ersetzen den bedingten Übergang durch einen unbedingten:

#if-ne p1, v0, :cond_10 goto:cond_10

Da FirstAd im Code nicht mehr erwähnt wird, schließen wir die Datei und setzen unsere virtuelle Taschenlampe mit apktool neu zusammen. Auf Smartphone kopieren, installieren, ausführen. Voila, alle Anzeigen sind weg, herzlichen Glückwunsch an uns alle.

Ergebnisse

Dieser Artikel ist nur eine kurze Einführung in die Methoden zum Öffnen und Ändern von Android-Anwendungen. Viele Probleme blieben im Verborgenen, etwa das Entfernen des Schutzes, das Parsen von verschleiertem Code, das Übersetzen und Ersetzen von Anwendungsressourcen sowie das Ändern von Anwendungen, die mit dem Android NDK geschrieben wurden. Mit Grundkenntnissen ist es jedoch nur eine Frage der Zeit, all dies zu verstehen.

Beitragsaufrufe: 5 618

Android-Studio bietet zahlreiche Möglichkeiten sowohl für die Entwicklung von Anwendungen als auch für die Erhöhung der Automatisierung und des Komforts beim Programmieren.

Wenn Sie das Build-System verwenden Gradle Um Ihre eigenen Anwendungen zu erstellen, können Sie auch einige Optionen zum Erstellen von Signaturen für Ihre Anwendungen einrichten.

Sie möchten Ihre Signaturschlüssel, Passwörter und Benutzernamen wahrscheinlich nicht in einem öffentlichen (oder sogar privaten) Repository veröffentlichen. Daher können Sie Schlüssel, Passwort und Benutzernamen als Eigenschaften in einer separaten Datei definieren.

Bevor Sie mit dem Signieren der Anwendung beginnen, müssen Sie eine neue Eigenschaft in der Datei gradle.properties erstellen. Nennen wir es schlüssel.repo und geben Sie als Wert den Pfad zu dem Ordner an, in dem sich später der Schlüsselspeicher und die Datei mit Eigenschaften befinden werden (z. B. C:/Benutzer/Benutzername/.signing).

Keys.repo=C:/Users/UserName/.signing

Dann müssen Sie diesen Ordner erstellen oder, falls Sie einen vorhandenen Ordner angegeben haben, ihn öffnen. Es muss eine Datei erstellt werden YourProjectName.properties, in dem der Pfad zum Schlüsselspeicher, der Schlüsselalias und das Passwort als Eigenschaften in der folgenden Form geschrieben werden.

RELEASE_STORE_FILE=/YourProjectName/KeyStoreName.jks RELEASE_STORE_PASS=****** RELEASE_ALIAS=KeyAlias ​​​​RELEASE_KEY_PASS=******

Wie erstelle ich einen Keystore?

Wenn Sie keinen Keystore haben, können Sie ganz einfach einen erstellen mit Android Studio. Wählen Sie dazu den Menüpunkt aus Bauen -> Generieren Sie eine signierte APK.

Klicken Sie im angezeigten Fenster auf Erstelle neu... Als Ergebnis öffnet sich ein Fenster, in dem Sie angeben können, wo sich der Keystore befinden soll (für diese Lektion ist es besser, sofort den Pfad auszuwählen, den Sie angegeben haben). YourProjectName.properties im Eigentum RELEASE_STORE_FILE) sowie Daten zum Schlüssel.

Dann müssen Sie einen Ordner erstellen IhrProjektname und übertragen Sie die gewünschte Keystore-Datei dorthin.

Jetzt können Sie direkt mit dem Signiervorgang fortfahren. Dazu müssen Sie in Ihrem Projekt die Datei öffnen build.gradle(befindet sich im App-Ordner). Darin im Block Android Sie müssen den folgenden Code hinzufügen.

SigningConfigs ( debug ( /* keine Änderung hier */ ) release ( if (project.hasProperty("Keys.repo")) ( def projectPropsFile = file(project.property("Keys.repo") + "/YourProjectName.properties " ) if (projectPropsFile.exists()) ( Properties props = new Properties() props.load(new FileInputStream(projectPropsFile)) storeFile file(file(project.property("Keys.repo") + props["RELEASE_STORE_FILE"] ) ) storePassword props["RELEASE_STORE_PASS"] keyAlias ​​​​props["RELEASE_ALIAS"] keyPassword props["RELEASE_KEY_PASS"] ) ) else ( println "==================== = ================================" println " - Bitte konfigurieren Sie die Release-Kompilierungsumgebung – z. B. in ~/. Signaturverzeichnis" println "============================================ ========" ) ) )

Welche Signaturschemata gibt es?

Es gibt zwei Schemata zum Erhalten einer APK-Signatur: v1 JAR Und v2 Vollständige APK.

Im ersten Fall unterschreiben Sie KRUG-Datei, die ist traditionelle Art und Weise Unterzeichnung. Die v1-Signatur schützt einige Teile des APK nicht, beispielsweise die ZIP-Metadaten. Der APK-Verifizierer muss viele nicht vertrauenswürdige (noch nicht verifizierte) Datenstrukturen verarbeiten und dann die nicht signierten Daten verwerfen, was viel Raum für Angriffe lässt. Darüber hinaus muss der APK-Verifizierer alle komprimierten Datensätze dekomprimieren, was viel Zeit und Speicher verschwendet. Um diese Probleme zu beheben, wurde ein zweites Schema v2 Full APK entwickelt.

Schema v2 wurde eingeführt in Android 7.0 Nougat (API 25) und funktioniert seit Version Android Studio 2.2 Und Android Gradle-Plugin 2.2. Dieses Schema bietet eine schnellere Anwendungsinstallation und einen guten Schutz vor unbefugten Änderungen am APK. APK-Inhalte werden gehasht und signiert und dann empfangen APK-Signaturblock in die APK eingefügt.

Während der Validierung behandelt das v2-Schema das APK als Blob und führt eine Signaturüberprüfung für die gesamte Datei durch. Jede Änderung an der APK, einschließlich Änderungen an den ZIP-Metadaten, macht die Signatur ungültig. Diese Form der Überprüfung ist wesentlich schneller und ermöglicht die Erkennung von mehr unbefugten Änderungen.

Das neue Format ist abwärtskompatibel, sodass mit dem neuen Schema signierte APKs auf älteren Geräten installiert werden können (die die neue Signatur einfach ignorieren), sofern diese APKs auch mit dem v1-Schema signiert sind.

Beim Signieren werden standardmäßig beide Schemata verwendet, sodass Anwendungen auf jedem Gerät installiert werden können. Bei Bedarf können Sie jedoch die v1- oder v2-Signatur deaktivieren. Gehen Sie dazu im obigen Code in den Block freigeben Fügen Sie einfach die folgenden Zeilen hinzu.

V1SigningEnabled falsch

V2SigningEnabled falsch

Es ist außerdem wichtig zu beachten, dass Sie mit dem v1-Schema signieren müssen, bevor Sie mit dem v2-Schema signieren, da das APK v2 nicht besteht, wenn es mit zusätzlichen Zertifikaten signiert wird, nachdem es mit dem v2-Schema signiert wurde.

Nachdem der Code hinzugefügt wurde, geben Sie diesen Code im Block an buildTypes innen freigeben. Zum Beispiel:

BuildTypes ( release ( minifyEnabled true strictResources true proguardFiles getDefaultProguardFile("proguard-android.txt"), "proguard-rules.pro" signingConfig signingConfigs.release ) )

Jetzt können Sie sicher im Menüpunkt Bauen wählen APK erstellen, nachdem zuvor der Baugruppentyp von geändert wurde debuggen An freigeben. Wie Sie sehen, ist diese Methode praktisch, da sie automatisch erfolgt, nur einmal konfiguriert werden muss und Ihre Keystores sicher sind.


Spitze