Unter Android müssen alle APKs digital mit einem Zertifikat signiert sein, bevor sie auf einem Gerät installiert oder aktualisiert werden. Wenn Sie eine Veröffentlichung mit Android App Bundles vornehmen, müssen Sie Ihr App-Bundle mit einem Uploadschlüssel signieren, bevor Sie es in die Play Console hochladen. Play App Signing erledigt den Rest. Bei Apps, die über APKs im Play Store oder in anderen Shops vertrieben werden, müssen Sie Ihre APKs zum Hochladen manuell signieren.
Auf dieser Seite werden einige wichtige Konzepte im Zusammenhang mit der App-Signatur und Sicherheit erläutert. Außerdem erfahren Sie, wie Sie Ihre App mit Android Studio für die Veröffentlichung bei Google Play signieren und die App-Signatur von Google Play konfigurieren.
Im Folgenden finden Sie eine allgemeine Übersicht über die Schritte, die Sie möglicherweise ausführen müssen, um eine neue App zu signieren und bei Google Play zu veröffentlichen:
- Uploadschlüssel und Schlüsselspeicher generieren
- App mit dem Uploadschlüssel signieren
- Google Play App-Signatur konfigurieren
- App bei Google Play hochladen
- Release Ihrer App vorbereiten und veröffentlichen
Wenn Ihre App bereits mit einem vorhandenen App-Signaturschlüssel im Google Play Store veröffentlicht ist oder Sie den App-Signaturschlüssel für eine neue App selbst auswählen möchten, anstatt ihn von Google generieren zu lassen, gehen Sie so vor:
- Signieren Sie Ihre App mit dem Signaturschlüssel Ihrer App.
- Laden Sie den Signaturschlüssel Ihrer App in die Play App-Signatur hoch.
- (Empfohlen) Generieren und registrieren Sie ein Uploadzertifikat für zukünftige Updates Ihrer App.
- App bei Google Play hochladen
- Release Ihrer App vorbereiten und veröffentlichen
Auf dieser Seite erfahren Sie auch, wie Sie Ihre eigenen Schlüssel verwalten, wenn Sie Ihre App in andere App-Shops hochladen. Wenn Sie Android Studio nicht verwenden oder Ihre App lieber über die Befehlszeile signieren möchten, finden Sie hier Informationen zur Verwendung von apksigner
.
Play App Signing
Mit der Play App-Signatur verwaltet und schützt Google den Signaturschlüssel Ihrer App und verwendet ihn zum Signieren Ihrer APKs für den Vertrieb. Da bei App-Bundles das Erstellen und Signieren von APKs bis zum Google Play Store verschoben wird, müssen Sie die App-Signatur von Google Play konfigurieren, bevor Sie Ihr App-Bundle hochladen. Dadurch profitieren Sie von folgenden Vorteilen:
- Verwenden Sie das Android App Bundle und unterstützen Sie die erweiterten Bereitstellungsmodi von Google Play. Mit dem Android App Bundle wird Ihre App viel kleiner, Ihre Releases werden einfacher und Sie können Funktionsmodule verwenden und Instant-Apps anbieten.
- Sie können die Sicherheit Ihres Signaturschlüssels erhöhen und einen separaten Uploadschlüssel verwenden, um das App-Bundle zu signieren, das Sie bei Google Play hochladen.
Mit der Schlüsselaktualisierung können Sie Ihren App-Signaturschlüssel ändern, falls der vorhandene Schlüssel kompromittiert wurde oder Sie zu einem kryptografisch stärkeren Schlüssel migrieren müssen.
Für Play App Signing werden zwei Schlüssel verwendet: der App-Signaturschlüssel und der Uploadschlüssel. Diese werden im Abschnitt Schlüssel und Schlüsselspeicher ausführlicher beschrieben. Sie behalten den Uploadschlüssel und verwenden ihn, um Ihre App für den Upload in den Google Play Store zu signieren. Google verwendet das Uploadzertifikat, um Ihre Identität zu bestätigen, und signiert Ihre APKs mit Ihrem App-Signaturschlüssel für den Vertrieb, wie in Abbildung 1 dargestellt. Wenn du einen separaten Uploadschlüssel verwendest, kannst du anfordern, dass dein Uploadschlüssel zurückgesetzt wird, falls dein Schlüssel einmal verloren geht oder gehackt wird.
Wenn Sie die Play App-Signatur nicht aktiviert haben und den Signaturschlüssel Ihrer App verlieren, können Sie Ihre App nicht mehr aktualisieren.
Ihre Schlüssel werden in derselben Infrastruktur gespeichert, die Google für seine eigenen Schlüssel nutzt. Dort werden sie durch den Key Management Service von Google geschützt. Weitere Informationen zur technischen Infrastruktur von Google finden Sie in den Whitepapers zur Sicherheit in der Google Cloud.
Wenn Sie die Play App-Signatur verwenden und Ihren Uploadschlüssel verlieren oder er manipuliert wurde, können Sie in der Play Console ein Zurücksetzen des Uploadschlüssels beantragen. Da Ihr App-Signaturschlüssel von Google geschützt wird, können Sie auch dann neue Versionen Ihrer App als Updates für die ursprüngliche App hochladen, wenn Sie Uploadschlüssel ändern. Weitere Informationen finden Sie unter Verlorenen oder manipulierten privaten Uploadschlüssel zurücksetzen.
Im nächsten Abschnitt werden einige wichtige Begriffe und Konzepte im Zusammenhang mit der App-Signatur und Sicherheit beschrieben. Wenn Sie lieber direkt zur Anleitung zur Vorbereitung Ihrer App für den Upload in den Google Play Store springen möchten, lesen Sie den Hilfeartikel App für die Veröffentlichung signieren.
Schlüsselspeicher, Schlüssel und Zertifikate
Java-Schlüsselspeicher (.jks oder .keystore) sind Binärdateien, die als Repositorys für Zertifikate und private Schlüssel dienen.
Ein Public-Key-Zertifikat (.der
- oder .pem
-Datei), auch als digitales Zertifikat oder Identitätszertifikat bezeichnet, enthält den öffentlichen Schlüssel eines öffentlichen/privaten Schlüsselpaares sowie andere Metadaten zur Identifikation des Inhabers (z. B. Name und Standort) des entsprechenden privaten Schlüssels.
Es gibt folgende Arten von Schlüsseln:
- App-Signaturschlüssel:Der Schlüssel, mit dem APKs signiert werden, die auf dem Gerät eines Nutzers installiert sind. Im Rahmen des sicheren Updatemodells von Android ändert sich der Signaturschlüssel während der Lebensdauer Ihrer App nie. Der App-Signaturschlüssel ist privat und muss geheim gehalten werden. Sie können allerdings das mit dem App-Signaturschlüssel generierte Zertifikat freigeben.
Uploadschlüssel:Der Schlüssel, mit dem Sie das App-Bundle oder APK signieren, bevor Sie es zur App-Signatur von Google Play hochladen. Der Uploadschlüssel muss geheim gehalten werden. Sie können jedoch das mit dem Uploadschlüssel generierte Zertifikat freigeben. Sie haben folgende Möglichkeiten, einen Uploadschlüssel zu generieren:
- Wenn Sie bei der Anmeldung festlegen, dass Google den App-Signaturschlüssel für Sie generieren soll, wird der Schlüssel, mit dem Sie Ihre App für die Veröffentlichung signieren, als Uploadschlüssel festgelegt.
- Wenn Sie den App-Signaturschlüssel bei der Aktivierung Ihrer neuen oder vorhandenen App an Google senden, können Sie während oder nach der Aktivierung einen neuen Uploadschlüssel generieren, um die Sicherheit zu erhöhen.
- Wenn Sie keinen neuen Uploadschlüssel generieren, verwenden Sie weiterhin Ihren App-Signaturschlüssel als Uploadschlüssel, um jeden Release zu signieren.
Tipp:Aus Sicherheitsgründen sollten sich der App-Signaturschlüssel und der Uploadschlüssel unterscheiden.
Mit API-Anbietern arbeiten
Sie können das Zertifikat für den App-Signaturschlüssel und den Uploadschlüssel in der Play Console auf der Seite Release > Einrichten > App-Signatur herunterladen. Damit werden öffentliche Schlüssel bei API-Anbietern registriert. Er kann freigegeben werden, da er keinen privaten Schlüssel enthält.
Ein Zertifikatsfingerabdruck ist eine kurze und eindeutige Darstellung eines Zertifikats, das von API-Anbietern neben dem Paketnamen häufig verlangt wird, wenn man eine App für ihren Dienst registrieren möchte. Den MD5-, SHA-1- und SHA-256-Fingerabdruck der Upload- und App-Signaturzertifikate finden Sie auf der Seite „App-Signatur“ der Play Console. Wenn Sie das ursprüngliche Zertifikat (.der
) von der Seite „App-Signatur“ herunterladen, können Sie auch andere Fingerabdrücke berechnen lassen.
Debug-Build signieren
Wenn Sie Ihr Projekt über die IDE ausführen oder debuggen, signiert Android Studio Ihre App automatisch mit einem Debugzertifikat, das von den Android SDK-Tools generiert wird. Wenn Sie Ihr Projekt in Android Studio zum ersten Mal ausführen oder beheben, erstellt die IDE automatisch den Keystore und das Zertifikat für die Fehlerbehebung in $HOME/.android/debug.keystore
und legt die Passwörter für den Keystore und den Schlüssel fest.
Da das Debug-Zertifikat von den Build-Tools erstellt wird und von Natur aus unsicher ist, akzeptieren die meisten App-Shops (einschließlich des Google Play Store) keine Apps, die mit einem Debug-Zertifikat signiert wurden.
Android Studio speichert Ihre Informationen zur Debug-Signatur automatisch in einer Signaturkonfiguration, sodass Sie sie nicht jedes Mal eingeben müssen, wenn Sie eine Fehlerbehebung durchführen. Eine Signaturkonfiguration ist ein Objekt, das alle erforderlichen Informationen zur Signatur Ihrer App enthält, einschließlich des Speicherorts des Schlüsselspeichers, des Passworts für den Schlüsselspeicher, des Schlüsselnamens und des Schlüsselpassworts.
Weitere Informationen zum Erstellen und Ausführen von Apps zum Debuggen finden Sie unter App erstellen und ausführen.
Ablauf des Debugzertifikats
Das selbst signierte Zertifikat, mit dem Ihre App zum Debuggen signiert wurde, hat ein Ablaufdatum von 30 Jahren ab dem Erstellungsdatum. Wenn das Zertifikat abläuft, erhalten Sie einen Buildfehler.
Löschen Sie die Datei debug.keystore
an einem der folgenden Speicherorte, um das Problem zu beheben:
~/.android/
unter OS X und LinuxC:\Documents and Settings\user\.android\
unter Windows XPC:\Users\user\.android\
unter Windows Vista und Windows 7, 8 und 10
Wenn Sie das nächste Mal eine Debugversion Ihrer App erstellen und ausführen, generiert Android Studio einen neuen Keystore und einen neuen Debugschlüssel.
App für die Veröffentlichung bei Google Play signieren
Wenn Sie Ihre App veröffentlichen möchten, müssen Sie sie signieren und in einen App-Shop wie Google Play hochladen. Wenn Sie Ihre App zum ersten Mal bei Google Play veröffentlichen, müssen Sie auch die Play App-Signatur konfigurieren. Play App Signing ist für Apps, die vor August 2021 erstellt wurden, optional. In diesem Abschnitt erfahren Sie, wie Sie Ihre App für die Veröffentlichung signieren und Play App Signing konfigurieren.
Uploadschlüssel und Schlüsselspeicher generieren
Wenn Sie noch keinen Uploadschlüssel haben, der beim Konfigurieren der Play App-Signatur nützlich ist, können Sie mit Android Studio einen generieren. Gehen Sie dazu so vor:
- Klicken Sie in der Menüleiste auf Build > Signiertes Bundle/APK generieren.
- Wählen Sie im Dialogfeld Signiertes Bundle oder APK generieren die Option Android App Bundle oder APK aus und klicken Sie auf Weiter.
- Klicken Sie unter dem Feld für Schlüsselspeicherpfad auf Neu erstellen.
Geben Sie im Fenster Neuer Schlüsselspeicher die folgenden Informationen für Ihren Schlüsselspeicher und Schlüssel ein (siehe Abbildung 2).
Schlüsselspeicher
- Keystore-Pfad:Wählen Sie den Speicherort aus, an dem der Keystore erstellt werden soll.
Außerdem sollte am Ende des Speicherortspfads ein Dateiname mit der Erweiterung
.jks
hinzugefügt werden. - Passwort:Erstellen Sie ein sicheres Passwort für Ihren Schlüsselspeicher und bestätigen Sie es.
- Keystore-Pfad:Wählen Sie den Speicherort aus, an dem der Keystore erstellt werden soll.
Außerdem sollte am Ende des Speicherortspfads ein Dateiname mit der Erweiterung
Key
- Alias:Geben Sie einen eindeutigen Namen für den Schlüssel ein.
- Passwort:Erstellen Sie ein sicheres Passwort für Ihren Schlüssel und bestätigen Sie es. Dieses sollte mit dem Passwort Ihres Schlüsselspeichers übereinstimmen. Weitere Informationen finden Sie unter Bekanntes Problem.
- Gültigkeit (Jahre): Legen Sie die Gültigkeitsdauer des Schlüssels in Jahren fest. Ihr Schlüssel sollte mindestens 25 Jahre gültig sein, damit Sie App-Updates während der gesamten Lebensdauer Ihrer App mit demselben Schlüssel signieren können.
- Zertifikat:Geben Sie einige Informationen zu sich selbst für Ihr Zertifikat ein. Diese Informationen werden nicht in Ihrer App angezeigt, sondern sind im Zertifikat als Teil des APK enthalten.
Klicken Sie auf OK, wenn Sie das Formular ausgefüllt haben.
Wenn Sie Ihre App mit Ihrem Uploadschlüssel erstellen und signieren möchten, fahren Sie mit dem Abschnitt App mit Uploadschlüssel signieren fort. Wenn Sie nur den Schlüssel und den Schlüsselspeicher generieren möchten, klicken Sie auf Abbrechen.
App mit Ihrem Schlüssel signieren
Wenn Sie bereits einen Uploadschlüssel haben, verwenden Sie ihn, um Ihre App zu signieren. Wenn Ihre App bereits signiert und mit einem vorhandenen App-Signaturschlüssel im Google Play Store veröffentlicht ist, verwenden Sie diesen Schlüssel, um Ihre App zu signieren. Sie können später einen separaten Uploadschlüssel generieren und bei Google Play registrieren, um nachfolgende Updates Ihrer App zu signieren und hochzuladen.
So signieren Sie Ihre App mit Android Studio:
- Wenn das Dialogfeld Signiertes Bundle oder APK generieren nicht geöffnet ist, klicken Sie auf Build > Signiertes Bundle/APK generieren.
- Wählen Sie im Dialogfeld Signiertes Bundle oder APK generieren entweder Android App Bundle oder APK aus und klicken Sie auf Weiter.
- Wählen Sie im Drop-down-Menü ein Modul aus.
Geben Sie den Pfad zum Schlüsselspeicher, den Alias für den Schlüssel und die Passwörter für beide ein. Wenn Sie Ihren Upload-Keystore und Ihren Schlüssel noch nicht vorbereitet haben, generieren Sie zuerst einen Uploadschlüssel und einen Keystore und kehren Sie dann zurück, um diesen Schritt auszuführen.
Klicken Sie auf Weiter.
Wählen Sie im nächsten Fenster (siehe Abbildung 4) einen Zielordner für die signierte App, den Buildtyp und gegebenenfalls die Produktvarianten aus.
Wenn Sie ein APK erstellen und signieren, müssen Sie auswählen, welche Signaturversionen Ihre App unterstützen soll. Weitere Informationen finden Sie unter App-Signaturschemata.
Klicken Sie auf Erstellen.
Nachdem Android Studio die signierte App erstellt hat, können Sie sie entweder finden oder analysieren, indem Sie in der Pop-up-Benachrichtigung auf die entsprechende Option klicken (siehe Abbildung 5).
Jetzt können Sie die Play App-Signatur für Ihre App aktivieren und sie zur Veröffentlichung hochladen. Wenn Sie die App-Veröffentlichung noch nicht kennen, lesen Sie den Hilfeartikel Veröffentlichung – Übersicht. Andernfalls fahren Sie mit der Anleitung zum Hochladen Ihrer App in die Play Console fort.
Play App-Signatur verwenden
Wie bereits auf dieser Seite beschrieben, müssen Sie die App-Signatur von Google Play konfigurieren, um Ihre App für den Vertrieb über Google Play zu signieren. Dies gilt nicht für Apps, die vor August 2021 erstellt wurden. Für diese Apps können weiterhin selbstsignierte APKs bereitgestellt werden. Welche Schritte Sie ausführen müssen, hängt davon ab, ob Ihre App noch nicht bei Google Play veröffentlicht wurde oder bereits signiert und vor August 2021 mit einem vorhandenen App-Signaturschlüssel veröffentlicht wurde.
Neue App konfigurieren
So konfigurieren Sie die Signatur für eine App, die noch nicht bei Google Play veröffentlicht wurde:
- Falls noch nicht geschehen, generieren Sie einen Uploadschlüssel und signieren Sie Ihre App damit.
- Melden Sie sich in der Play Console an.
- Folgen Sie der Anleitung unter Releases vorbereiten und freigeben, um einen neuen Release zu erstellen.
- Wählen Sie zuerst den Release-Track aus und konfigurieren Sie dann die App-Signatur im Abschnitt App-Signatur so:
- Wenn Sie möchten, dass Google Play einen App-Signaturschlüssel für Sie generiert und damit Ihre App signiert, müssen Sie nichts weiter tun. Der Schlüssel, mit dem Sie Ihren ersten Release signieren, ist Ihr Uploadschlüssel. Diesen sollten Sie zum Signieren aller weiteren Releases verwenden.
- Wenn Sie denselben Schlüssel wie für eine andere App in Ihrem Entwicklerkonto verwenden möchten, wählen Sie App-Signaturschlüssel ändern > Denselben Schlüssel wie für eine andere App in diesem Konto verwenden aus, wählen Sie eine App aus und klicken Sie dann auf Weiter.
- Wenn Sie zum Signieren Ihrer App einen eigenen Schlüssel verwenden möchten, wählen Sie App-Signaturschlüssel ändern und dann eine der Optionen unter Exportieren und hochladen aus, mit denen Sie einen privaten Schlüssel und das zugehörige öffentliche Zertifikat sicher hochladen können.
Klicken Sie im Bereich App-Bundles auf Dateien durchsuchen, um die App zu finden und hochzuladen, die Sie mit Ihrem Uploadschlüssel signiert haben. Weitere Informationen zum Veröffentlichen Ihrer App finden Sie unter Release vorbereiten und einführen. Wenn Sie Ihre App veröffentlichen, nachdem Sie die Play App-Signatur konfiguriert haben, generiert Google Play (sofern Sie keinen vorhandenen Schlüssel hochladen) den Signaturschlüssel Ihrer App und verwaltet ihn für Sie. Signieren Sie nachfolgende Updates Ihrer App einfach mit dem Uploadschlüssel Ihrer App, bevor Sie sie bei Google Play hochladen.
Wenn Sie einen neuen Uploadschlüssel für Ihre App erstellen müssen, lesen Sie den Abschnitt Verloren gegangenen oder kompromittierten privaten Uploadschlüssel zurücksetzen.
Vorhandene App anmelden
Wenn Sie eine bereits bei Google Play veröffentlichte App mit einem vorhandenen App-Signaturschlüssel aktualisieren möchten, können Sie die App-Signatur von Google Play so aktivieren:
- Melden Sie sich in der Play Console an und rufen Sie Ihre App auf.
- Klicken Sie im Menü auf der linken Seite auf Release > Einrichtung > App-Signatur.
- Lesen Sie sich ggf. die Nutzungsbedingungen durch und wählen Sie Akzeptieren aus.
- Wähle die Option aus, die am ehesten den Signaturschlüssel beschreibt, den du bei Google Play hochladen möchtest, und folge der angezeigten Anleitung. Wenn Sie beispielsweise einen Java Keystore für Ihren Signaturschlüssel verwenden, wählen Sie Neuen App-Signaturschlüssel aus Java KeyStore hochladen aus und folgen Sie der Anleitung zum Herunterladen und Ausführen des PEPK-Tools und zum Hochladen der generierten Datei mit Ihrem verschlüsselten Schlüssel.
- Klicke auf Anmelden.
Sie sollten jetzt eine Seite mit den Details zu den Signatur- und Uploadzertifikaten Ihrer App sehen. Google Play signiert Ihre App jetzt mit Ihrem vorhandenen Schlüssel, wenn sie für Nutzer bereitgestellt wird. Einer der wichtigsten Vorteile der Play App-Signatur ist jedoch die Möglichkeit, den Schlüssel, mit dem Sie das Artefakt signieren, das Sie in Google Play hochladen, von dem Schlüssel zu trennen, mit dem Google Play Ihre App für den Vertrieb an Nutzer signiert. Führen Sie daher die Schritte im nächsten Abschnitt aus, um einen separaten Uploadschlüssel zu generieren und zu registrieren.
Uploadzertifikat generieren und registrieren
Wenn Sie eine App veröffentlichen, die nicht mit einem Uploadschlüssel signiert ist, können Sie in der Google Play Console einen Schlüssel für zukünftige Updates der App registrieren. Dieser Schritt ist optional, wir empfehlen Ihnen jedoch, Ihre App mit einem Schlüssel zu veröffentlichen, der sich von dem unterscheidet, mit dem Google Play Ihre App an Nutzer verteilt. So schützt Google Ihren Signaturschlüssel und Sie haben die Möglichkeit, einen verlorenen oder manipulierten privaten Uploadschlüssel zurückzusetzen. In diesem Abschnitt wird beschrieben, wie Sie einen Uploadschlüssel erstellen, daraus ein Uploadzertifikat generieren und dieses Zertifikat für zukünftige Updates Ihrer App bei Google Play registrieren.
Im Folgenden wird beschrieben, in welchen Fällen Sie die Option zum Registrieren eines Uploadzertifikats in der Play Console sehen:
- Wenn Sie eine neue App veröffentlichen, die mit einem Signaturschlüssel signiert ist, und die App-Signatur von Google Play aktivieren.
- Wenn Sie eine vorhandene App veröffentlichen möchten, die bereits für die Play App-Signatur aktiviert ist, aber mit ihrem Signaturschlüssel signiert ist.
Wenn Sie kein Update für eine vorhandene App veröffentlichen, für die die Play App-Signatur bereits aktiviert ist, und ein Uploadzertifikat registrieren möchten, führen Sie die folgenden Schritte aus und fahren Sie mit dem Abschnitt zum Zurücksetzen eines verlorenen oder manipulierten privaten Uploadschlüssels fort.
Falls noch nicht geschehen, generieren Sie einen Uploadschlüssel und einen Schlüsselspeicher.
Nachdem Sie den Uploadschlüssel und den Schlüsselspeicher erstellt haben, müssen Sie mit keytool
ein öffentliches Zertifikat aus Ihrem Uploadschlüssel generieren. Verwenden Sie dazu den folgenden Befehl:
$ keytool -export -rfc -keystore your-upload-keystore.jks -alias upload-alias -file output_upload_certificate.pem
Nachdem Sie Ihr Uploadzertifikat erhalten haben, registrieren Sie es bei Google, wenn Sie in der Play Console dazu aufgefordert werden oder Ihren Uploadschlüssel zurücksetzen.
App-Signaturschlüssel aktualisieren
Unter bestimmten Umständen kann es sinnvoll sein, den Signaturschlüssel Ihrer App zu ändern. Beispielsweise, weil Sie einen kryptografisch stärkeren Schlüssel benötigen oder Ihr Signaturschlüssel kompromittiert wurde. Da Nutzer Ihre App jedoch nur aktualisieren können, wenn das Update mit demselben Signaturschlüssel signiert ist, ist es schwierig, den Signaturschlüssel für eine bereits veröffentlichte App zu ändern.
Wenn Sie Ihre App bei Google Play veröffentlichen, können Sie den Signaturschlüssel für Ihre veröffentlichte App über die Play Console aktualisieren. Der neue Schlüssel wird zum Signieren von Installationen und App-Updates unter Android 13 und höher verwendet, während der ältere App-Signaturschlüssel zum Signieren von Updates für Nutzer mit älteren Android-Versionen verwendet wird.
Weitere Informationen finden Sie unter App-Signaturschlüssel aktualisieren.
Verloren gegangenen oder manipulierten privaten Uploadschlüssel zurücksetzen
Wenn Sie Ihren privaten Uploadschlüssel verloren haben oder er manipuliert wurde, können Sie einen neuen erstellen und in der Play Console das Zurücksetzen des Uploadschlüssels beantragen.
Build-Prozess so konfigurieren, dass Ihre App automatisch signiert wird
In Android Studio können Sie Ihr Projekt so konfigurieren, dass die Release-Version Ihrer App während des Build-Prozesses automatisch signiert wird. Dazu erstellen Sie eine Signaturkonfiguration und weisen sie Ihrem Release-Buildtyp zu. Eine Signaturkonfiguration besteht aus einem Schlüsselspeicherort, einem Schlüsselspeicherpasswort, einem Schlüsselalias und einem Schlüsselpasswort. So erstellen Sie mit Android Studio eine Signaturkonfiguration und weisen sie Ihrem Release-Buildtyp zu:
- Klicken Sie im Fenster Projekt mit der rechten Maustaste auf Ihre App und dann auf Moduleinstellungen öffnen.
- Klicken Sie im Fenster Projektstruktur im linken Bereich unter Module auf das Modul, das Sie signieren möchten.
- Klicken Sie auf den Tab Signatur und dann auf Hinzufügen .
-
Wählen Sie die Schlüsselspeicherdatei aus, geben Sie einen Namen für diese Signaturkonfiguration ein (da Sie möglicherweise mehrere erstellen) und geben Sie die erforderlichen Informationen ein.
- Klicken Sie auf den Tab Build-Typen.
- Klicken Sie auf den Build Release.
-
Wählen Sie unter Signaturkonfiguration die gerade erstellte Signaturkonfiguration aus.
- Klicken Sie auf OK.
Wenn Sie jetzt in Android Studio unter Build > Build-Bundles/APKs erstellen eine Option für den Build-Typ auswählen, wird Ihre App automatisch mit der von Ihnen angegebenen Signaturkonfiguration signiert. Sie finden das signierte APK oder App-Bundle im Verzeichnis build/outputs/
im Projektverzeichnis für das Modul, das Sie erstellen.
Wenn Sie eine Signaturkonfiguration erstellen, werden Ihre Signaturinformationen in Ihren Gradle-Builddateien im Klartext enthalten. Wenn Sie in einem Team arbeiten oder Ihren Code öffentlich freigeben, sollten Sie Ihre Signaturinformationen schützen, indem Sie sie aus den Build-Dateien entfernen und separat speichern. Weitere Informationen zum Entfernen Ihrer Signaturinformationen aus Ihren Build-Dateien finden Sie unter Signaturinformationen aus Build-Dateien entfernen. Weitere Informationen zum Schutz Ihrer Signaturinformationen finden Sie unten im Abschnitt Schlüssel schützen.
Jede Produktvariante anders signieren
Wenn Ihre App Produktvarianten verwendet und Sie jede Variante unterschiedlich signieren möchten, können Sie zusätzliche Signaturkonfigurationen erstellen und sie nach Variante zuweisen:
- Klicken Sie im Fenster Projekt mit der rechten Maustaste auf Ihre App und dann auf Moduleinstellungen öffnen.
- Klicken Sie im Fenster Projektstruktur im linken Bereich unter Module auf das Modul, das Sie signieren möchten.
- Klicken Sie auf den Tab Signatur und dann auf Hinzufügen .
-
Wählen Sie die Schlüsselspeicherdatei aus, geben Sie einen Namen für diese Signaturkonfiguration ein (da Sie möglicherweise mehrere erstellen) und geben Sie die erforderlichen Informationen ein.
- Wiederholen Sie die Schritte 3 und 4 nach Bedarf, bis Sie alle Signaturkonfigurationen erstellt haben.
- Klicken Sie auf den Tab Varianten.
- Klicken Sie auf die Variante, die Sie konfigurieren möchten, und wählen Sie dann im Drop-down-Menü Signing Config (Signaturkonfiguration) die entsprechende Signaturkonfiguration aus.
Wiederholen Sie diesen Vorgang, um weitere Produktvarianten zu konfigurieren.
- Klicken Sie auf OK.
Sie können Ihre Signatureinstellungen auch in Gradle-Konfigurationsdateien angeben. Weitere Informationen finden Sie unter Signatureinstellungen konfigurieren.
Bericht zur Unterschrift erstellen
Wenn Sie Signaturinformationen für jede Variante Ihrer App abrufen möchten, führen Sie in Android Studio die Gradle-Aufgabe signingReport
aus:
- Wählen Sie Ansicht > Toolfenster > Gradle aus, um das Gradle-Toolfenster zu öffnen.
- Wählen Sie YourApp > Aufgaben > Android > signingReport aus, um den Bericht auszuführen.
Eigenen Signaturschlüssel verwalten
Wenn Sie die Play App-Signatur nicht aktivieren (nur für Apps, die vor August 2021 erstellt wurden), können Sie Ihren eigenen App-Signaturschlüssel und Schlüsselspeicher verwalten. Sie sind für die Sicherheit des Schlüssels und des Schlüsselspeichers verantwortlich. Außerdem kann Ihre App keine Android App Bundles, Play Feature Delivery und Play Asset Delivery unterstützen.
Wenn Sie bereit sind, Ihren eigenen Schlüssel und Schlüsselspeicher zu erstellen, wählen Sie zuerst ein starkes Passwort für den Schlüsselspeicher und ein separates starkes Passwort für jeden im Schlüsselspeicher gespeicherten privaten Schlüssel aus. Sie müssen den Schlüsselspeicher an einem sicheren Ort aufbewahren. Wenn Sie den Zugriff auf Ihren App-Signaturschlüssel verlieren oder Ihr Schlüssel manipuliert wurde, kann Google den App-Signaturschlüssel nicht für Sie abrufen. Sie können dann keine neuen Versionen Ihrer App als Updates der ursprünglichen App für Nutzer veröffentlichen. Weitere Informationen finden Sie unten unter Schlüssel schützen.
Wenn Sie Ihren eigenen App-Signaturschlüssel und Schlüsselspeicher verwalten, signieren Sie Ihr APK lokal mit Ihrem App-Signaturschlüssel und laden das signierte APK wie in Abbildung 12 dargestellt direkt zum Vertrieb in den Google Play Store hoch.
Wenn Sie die Play App-Signatur verwenden, schützt Google Ihren Signaturschlüssel und sorgt dafür, dass Ihre Apps korrekt signiert sind und während ihrer gesamten Lebensdauer Updates erhalten können. Wenn Sie sich jedoch dafür entscheiden, Ihren App-Signaturschlüssel selbst zu verwalten, sollten Sie einige Dinge beachten.
Hinweise zur Signatur
Sie sollten Ihre App während der gesamten Lebensdauer mit demselben Zertifikat signieren. Dafür gibt es mehrere Gründe:
- App-Update:Wenn das System ein Update für eine App installiert, werden die Zertifikate in der neuen Version mit denen in der vorhandenen Version verglichen. Das System erlaubt das Update, wenn die Zertifikate übereinstimmen. Wenn Sie die neue Version mit einem anderen Zertifikat signieren, müssen Sie der App einen anderen Paketnamen zuweisen. In diesem Fall installiert der Nutzer die neue Version als völlig neue App.
- App-Modularität: Android ermöglicht es, APKs, die mit demselben Zertifikat signiert sind, im selben Prozess auszuführen, wenn die Apps dies anfordern. Das System behandelt sie dann als einzelne App. So können Sie Ihre App in Modulen bereitstellen und Nutzer können jedes der Module unabhängig aktualisieren.
- Code-/Datenfreigabe über Berechtigungen:Android bietet eine signaturbasierte Berechtigungsdurchsetzung, sodass eine App Funktionen für eine andere App freigeben kann, die mit einem bestimmten Zertifikat signiert ist. Wenn Sie mehrere APKs mit demselben Zertifikat signieren und signaturbasierte Berechtigungsprüfungen verwenden, können Ihre Apps Code und Daten auf sichere Weise freigeben.
Wenn Sie Upgrades für eine App unterstützen möchten, muss die Gültigkeitsdauer Ihres App-Signaturschlüssels die erwartete Lebensdauer dieser App überschreiten. Wir empfehlen eine Gültigkeitsdauer von mindestens 25 Jahren. Wenn die Gültigkeitsdauer Ihres Schlüssels abgelaufen ist, können Nutzer nicht mehr nahtlos auf neue Versionen Ihrer App umsteigen.
Wenn Sie Ihre Apps bei Google Play veröffentlichen möchten, muss der Schlüssel, mit dem Sie Ihre App signieren, eine Gültigkeitsdauer haben, die nach dem 22. Oktober 2033 endet. Google Play setzt diese Anforderung durch, damit Nutzer Apps nahtlos aktualisieren können, wenn neue Versionen verfügbar sind.
Schlüssel sicher aufbewahren
Wenn Sie Ihren App-Signaturschlüssel und Ihren Schlüsselspeicher selbst verwalten und schützen möchten (anstatt die Play App-Signatur zu aktivieren), ist die Sicherheit Ihres App-Signaturschlüssels sowohl für Sie als auch für die Nutzer von entscheidender Bedeutung. Wenn Sie jemandem erlauben, Ihren Schlüssel zu verwenden, oder Ihren Schlüsselspeicher und Ihre Passwörter an einem ungesicherten Ort aufbewahren, an dem Dritte sie finden und verwenden können, werden Ihre Autorisierungsidentität und das Vertrauen der Nutzer beeinträchtigt.
Wenn es einem Dritten gelingt, Ihren App-Signaturschlüssel ohne Ihr Wissen oder Ihre Erlaubnis zu stehlen, könnte er Apps signieren und vertreiben, die Ihre authentischen Apps böswillig ersetzen oder beschädigen. Diese Person könnte auch Apps unter Ihrer Identität signieren und vertreiben, die andere Apps oder das System selbst angreifen oder Nutzerdaten beschädigen oder stehlen.
Ihr privater Schlüssel ist erforderlich, um alle zukünftigen Versionen Ihrer App zu signieren. Wenn Sie Ihren Schlüssel verlieren oder verlegen, können Sie keine Updates für Ihre vorhandene App veröffentlichen. Sie können einen zuvor generierten Schlüssel nicht neu generieren.
Ihr Ruf als Entwickler hängt davon ab, dass Sie Ihren App-Signaturschlüssel jederzeit ordnungsgemäß schützen, bis er abgelaufen ist. Hier sind einige Tipps, wie Sie Ihren Schlüssel schützen können:
- Wählen Sie starke Passwörter für den Schlüsselspeicher und den Schlüssel aus.
- Geben Sie Ihren privaten Schlüssel nicht an Dritte weiter und verleihen Sie ihn nicht. Geben Sie auch Ihren Schlüsselspeicher und Ihre Schlüsselpasswörter nicht an unbefugte Personen weiter.
- Bewahren Sie die Schlüsselspeicherdatei mit Ihrem privaten Schlüssel an einem sicheren Ort auf.
Wenn Sie beim Generieren, Verwenden und Speichern Ihres Schlüssels einige grundlegende Vorsichtsmaßnahmen beachten, ist er in der Regel sicher.
Signaturinformationen aus Ihren Build-Dateien entfernen
Wenn Sie eine Signaturkonfiguration erstellen, fügt Android Studio den build.gradle
-Dateien des Moduls Ihre Signaturinformationen im Klartext hinzu. Wenn Sie mit einem Team zusammenarbeiten oder Ihren Code als Open Source veröffentlichen, sollten Sie diese vertraulichen Informationen aus den Build-Dateien entfernen, damit sie nicht leicht zugänglich sind. Dazu sollten Sie eine separate Properties-Datei zum Speichern vertraulicher Informationen erstellen und in Ihren Build-Dateien wie unten beschrieben darauf verweisen:
- Erstellen Sie eine Signaturkonfiguration und weisen Sie sie einem oder mehreren Buildtypen zu. In dieser Anleitung wird davon ausgegangen, dass Sie eine einzelne Signaturkonfiguration für Ihren Release-Buildtyp konfiguriert haben, wie oben im Abschnitt Buildprozess für die automatische Signatur Ihrer App konfigurieren beschrieben.
- Erstellen Sie im Stammverzeichnis Ihres Projekts eine Datei mit dem Namen
keystore.properties
. Diese Datei sollte Ihre Signaturinformationen enthalten:storePassword=myStorePassword keyPassword=mykeyPassword keyAlias=myKeyAlias storeFile=myStoreFileLocation
- Fügen Sie in der
build.gradle
-Datei Ihres Moduls Code hinzu, um Ihrekeystore.properties
-Datei vor dem Blockandroid {}
zu laden.Groovy
... // Create a variable called keystorePropertiesFile, and initialize it to your // keystore.properties file, in the rootProject folder. def keystorePropertiesFile = rootProject.file("keystore.properties") // Initialize a new Properties() object called keystoreProperties. def keystoreProperties = new Properties() // Load your keystore.properties file into the keystoreProperties object. keystoreProperties.load(new FileInputStream(keystorePropertiesFile)) android { ... }
Kotlin
... import java.util.Properties import java.io.FileInputStream // Create a variable called keystorePropertiesFile, and initialize it to your // keystore.properties file, in the rootProject folder. val keystorePropertiesFile = rootProject.file("keystore.properties") // Initialize a new Properties() object called keystoreProperties. val keystoreProperties = Properties() // Load your keystore.properties file into the keystoreProperties object. keystoreProperties.load(FileInputStream(keystorePropertiesFile)) android { ... }
Hinweis:Sie können die
keystore.properties
-Datei auch an einem anderen Speicherort ablegen, z. B. im Modulordner statt im Stammverzeichnis des Projekts oder auf dem Build-Server, wenn Sie ein Tool zur kontinuierlichen Integration verwenden. In diesem Fall sollten Sie den Code oben so ändern, dasskeystorePropertiesFile
mit dem tatsächlichen Speicherort der Dateikeystore.properties
initialisiert wird. - Sie können mit der Syntax
keystoreProperties['propertyName']
auf inkeystoreProperties
gespeicherte Properties verweisen. Ändern Sie densigningConfigs
-Block derbuild.gradle
-Datei Ihres Moduls, um mit dieser Syntax auf die inkeystoreProperties
gespeicherten Signaturinformationen zu verweisen.Groovy
android { signingConfigs { config { keyAlias keystoreProperties['keyAlias'] keyPassword keystoreProperties['keyPassword'] storeFile file(keystoreProperties['storeFile']) storePassword keystoreProperties['storePassword'] } } ... }
Kotlin
android { signingConfigs { create("config") { keyAlias = keystoreProperties["keyAlias"] as String keyPassword = keystoreProperties["keyPassword"] as String storeFile = file(keystoreProperties["storeFile"] as String) storePassword = keystoreProperties["storePassword"] as String } } ... }
- Öffnen Sie das Toolfenster Build-Varianten und prüfen Sie, ob der Release-Buildtyp ausgewählt ist.
- Wählen Sie unter Build > Bundles/APKs erstellen eine Option aus, um entweder ein APK oder ein App-Bundle Ihres Release-Builds zu erstellen.
Die Build-Ausgabe sollte im Verzeichnis
build/outputs/
Ihres Moduls angezeigt werden.
Da Ihre Build-Dateien keine vertraulichen Informationen mehr enthalten, können Sie sie jetzt in die Versionskontrolle aufnehmen oder in eine freigegebene Codebasis hochladen. Bewahren Sie die Datei keystore.properties
sicher auf. Dies kann auch das Entfernen aus Ihrem Versionskontrollsystem umfassen.