Android-Konzepte (für Webentwickler)

Peter Conn
Peter Conn
Joyce Toh
Joyce Toh

Wenn Sie Webentwickler sind und neu bei Android und Google Play sind, sollten Sie sich mit einigen Details vertraut machen. Es gibt bereits viele Ressourcen und Dokumentationen zu diesem Thema (danke an das Android-Team). Hier möchten wir jedoch einige wichtige Konzepte und ihre Beziehung zu Bubblewrap hervorheben.

Uploadschlüssel und Signaturschlüssel

Wenn Sie Bubblewrap verwenden möchten, um ein Android App Bundle (AAB) zu generieren (Hinweis: Ab August 2021 müssen alle neuen Apps bei Google Play im Android App Bundle-Format veröffentlicht werden) oder ein APK zum Hochladen und Veröffentlichen bei Google Play, müssen Sie Ihre App mit einem Signaturschlüssel signieren. Bei Google Play haben Sie zwei Möglichkeiten:

  • Play App-Signatur (sehr empfohlen): Google verwaltet und schützt den Signaturschlüssel Ihrer App. Er wird zum Signieren Ihrer APKs für den Vertrieb verwendet. Für die Play App-Signatur werden zwei Schlüssel verwendet. Der „App-Signaturschlüssel“, der von Google für Sie verwaltet wird, und der „Uploadschlüssel“, den Sie aufbewahren und für den Sie allein verantwortlich sind. Mit dem Uploadschlüssel signieren Sie Ihre App für den Upload in die Play Console. Mit diesem System können Sie Ihren Uploadschlüssel zurücksetzen, falls er verloren geht oder manipuliert wird. Wenden Sie sich dazu einfach an das Play-Supportteam. Derzeit können Sie Ihre App bei Google Play als AAB oder APK hochladen:
    • Android App Bundle (AAB): Wenn Sie ein AAB in die Play Console hochladen, wird das Erstellen und Generieren von APKs an den Google Play Store weitergeleitet. Wenn ein Nutzer Ihre App herunterlädt und installiert, wird sie von Google Play als signiertes APK an ihn verteilt. Daher muss die Signatur der APKs auch von Google Play durchgeführt werden. Wenn Sie Ihre App also als AAB in die Play Console hochladen, müssen Sie standardmäßig die Play App-Signatur verwenden.
    • APK: Bei APKs haben Sie die Möglichkeit, Play App Signing zu aktivieren. Wir empfehlen Ihnen dringend, die Play App-Signatur zu aktivieren, da dadurch die Sicherheit Ihres Signaturschlüssels erhöht wird. Wie bereits erwähnt, müssen alle neuen Apps bei Google Play bald im AAB-Format hochgeladen werden. Wir empfehlen Ihnen daher, dies zu tun, anstatt APKs hochzuladen.
  • Eigenen Signaturschlüssel verwalten: Wenn Sie Ihren eigenen Schlüssel verwalten und die Play App-Signatur nicht aktivieren, sind Sie für den Signaturschlüssel Ihrer App voll verantwortlich. Im Gegensatz zur Play App-Signatur ist es nicht möglich, den Schlüssel zurückzusetzen, wenn Sie ihn verlieren. Wenn Sie also den Signaturschlüssel Ihrer App verlieren, können Sie Ihre App nicht mehr aktualisieren.

Wenn Sie bei der Einrichtung von bubblewrap init den Abschnitt Informationen zum Signaturschlüssel (5/5) erreichen, werden Sie aufgefordert, einen Speicherort für den Schlüsselspeicher und einen Schlüsselnamen einzugeben oder die Standardeinstellungen zu verwenden. Der Standardspeicherort des Schlüsselspeichers ist die Datei android.keystore im Projektverzeichnis und der Standardschlüsselname ist android. Wenn Bubblewrap an diesem Speicherort keinen vorhandenen Schlüsselspeicher mit diesem Schlüsselnamen findet, wird ein solcher für Sie erstellt und Sie werden aufgefordert, Passwörter anzugeben. Notieren Sie sich die von Ihnen eingegebenen Passwörter, da Sie sie während des Build-Prozesses (bubblewrap build) benötigen, in dem der Schlüssel zum Signieren Ihrer App verwendet wird. Wenn Sie Play App Signing aktivieren, wird der von Bubblewrap generierte und zum Signieren Ihrer App verwendete Signaturschlüssel zum „Uploadschlüssel“. Unabhängig davon, ob Sie den von Bubblewrap generierten Schlüssel als Signatur- oder Uploadschlüssel verwenden, sollten Sie ihn schützen und vertraulich behandeln. Wir empfehlen nicht, sie in die Versionskontrolle aufzunehmen. Beschränken Sie stattdessen die Anzahl der Personen, die Zugriff darauf haben.

Digital Asset Links sind erforderlich, um die Beziehung zwischen Ihrer Website und Ihrer Android-App anzugeben. Damit Ihre von Bubblewrap generierte Android-App ordnungsgemäß überprüft und als vertrauenswürdige Webaktivität (anstelle eines benutzerdefinierten Chrome-Tabs) gestartet wird, müssen Sie der assetlinks.json-Datei den entsprechenden Schlüssel hinzufügen. Laden Sie sie dann unter .well-known/assetlinks.json auf Ihre Website hoch (relativ zum Stammverzeichnis). Ihre assetlinks.json-Datei sollte diesem Format entsprechen:

[{
 "relation": ["delegate_permission/common.handle_all_urls"],
 "target": {
   "namespace": "android_app",
   "package_name": "com.your.package_name",
   "sha256_cert_fingerprints": [
     "XX:XX:XX:..."
   ]
 }
}]

SHA256-Zertifikatfingerabdruck abrufen

Zum Erstellen der assetlinks.json-Datei benötigen Sie den SHA-256-Zertifikatfingerabdruck, der mit dem Signaturschlüssel Ihrer App verknüpft ist. Wichtig ist, dass die Fingerabdrücke, die mit Ihren Signatur- und Uploadschlüsseln verknüpft sind, unterschiedlich sind. Diese Unterscheidung ist wichtig, insbesondere wenn Sie feststellen, dass Ihre App als benutzerdefinierter Tab in Chrome gestartet wird (mit sichtbarer Browserleiste). In diesem Fall enthält Ihre assetlinks.json-Datei wahrscheinlich nicht den Fingerabdruck, der dem entsprechenden Schlüssel entspricht.

Es ist hilfreich, sowohl den Fingerabdruck des Signatur- als auch des Uploadzertifikats in assetlinks.json anzugeben, um Ihre App lokal leichter debuggen zu können. Weitere Informationen dazu, wie Sie beide Schlüssel in der assetlinks.json-Datei angeben, finden Sie unten im Abschnitt Weitere Schlüssel hinzufügen.

Es gibt verschiedene Möglichkeiten, den Fingerabdruck zu erhalten. Diese werden in den folgenden Abschnitten beschrieben. Sie sollten alle dieselben Fingerabdrücke liefern. Wählen Sie daher die Methode aus, die für Sie am praktischsten ist.

Über die Play Console

Je nachdem, ob Sie die Play App-Signatur aktivieren, haben Sie möglicherweise einen oder zwei Schlüssel. So rufen Sie den entsprechenden SHA256-Fingerabdruck für jeden Schlüssel ab:

  1. Rufen Sie die Play Console auf.
  2. Wählen Sie die gewünschte App aus.
  3. Klicken Sie im Navigationsmenü auf der linken Seite unter Release auf Einrichten -> App-Integrität.
  4. Kopieren Sie den SHA256 für den entsprechenden Schlüssel:

SHA256-Zertifikatfingerabdruck für Ihren Signatur- oder Uploadschlüssel abrufen

  • Signaturschlüssel: Kopieren Sie den SHA256-Fingerabdruck für das Zertifikat für den App-Signaturschlüssel. Dieser Fingerabdruck entspricht Ihrer App, wenn Sie sie aus dem Google Play Store herunterladen, da Google Play Ihre App mit dem Signaturschlüssel signiert und vertreibt.

  • Uploadschlüssel: Kopieren Sie den SHA256-Fingerabdruck für das Zertifikat des Uploadschlüssels. Dieser Fingerabdruck entspricht Ihrer App, wenn Sie sie lokal installieren (z. B. über ADB über USB). Dieses APK (auf Ihrem lokalen Computer) wurde von Bubblewrap erstellt und daher auch mit dem Schlüssel signiert, der während der init-Einrichtung für Sie erstellt wurde. Denken Sie daran, dass dies zwar der Signaturschlüssel für Ihre lokal installierte App sein kann, aber tatsächlich zum „Uploadschlüssel“ wird, sobald Sie Ihre App über Google Play veröffentlichen.

Über keytool

keytool ist ein Tool zur Schlüssel- und Zertifikatsverwaltung. Mit dem Keytool können Sie den SHA-256-Fingerabdruck extrahieren, der mit dem generierten APK oder AAB Bubblewrap verknüpft ist. Dieser Fingerabdruck bezieht sich auf den lokalen Signaturschlüssel. Wenn Sie Ihre App in den Play Store hochladen und die Play App-Signatur aktivieren, wird dieser Schlüssel zum „Uploadschlüssel“.

keytool -printcert -jarfile [path to APK or AAB] | grep SHA256

Sie können die richtige Digital Asset Links-Datei für Ihre App auch mit dem Asset Link Tool abrufen:

  1. Installieren Sie das Asset Link Tool aus dem Play Store.
  2. Laden Sie Ihre App auf demselben Gerät aus dem Google Play Store herunter oder installieren Sie sie lokal.
  3. Öffnen Sie die Asset Link Tool App. Daraufhin wird eine Liste aller auf Ihrem Gerät installierten Anwendungen nach Paketnamen angezeigt. Filtern Sie die Liste nach der Anwendungs-ID, die Sie zuvor bei bubblewrap init ausgewählt haben, und klicken Sie auf diesen Eintrag.
  4. Daraufhin wird eine Seite mit der Signatur Ihrer App und einem generierten Digital Asset Link angezeigt. Klicken Sie unten auf die Schaltflächen „Kopieren“ oder „Teilen“, um die Notiz nach Belieben zu exportieren (z.B. in Google Notizen speichern oder per E-Mail an sich selbst senden).

Das gilt auch für Signatur- oder Uploadschlüssel. Wenn Sie Ihre App über den Google Play Store installiert haben, erhalten Sie mit dem Asset Link Tool den Fingerabdruck für den Signaturschlüssel Ihrer App. Wenn Sie die App direkt von Ihrem lokalen Computer aus installiert haben, bezieht sich der Fingerabdruck auf den von Bubblewrap generierten Schlüssel.

Prüfen Sie, ob Sie nach dem Hochladen in einem Browser auf die Asset-Link-Datei zugreifen können. Prüfen Sie, ob https://example.com/.well-known/assetlinks.json auf die Datei verweist, die Sie gerade hochgeladen haben.

Jekyll-basierte Websites

Wenn Ihre Website von Jekyll generiert wird (z. B. GitHub Pages), müssen Sie eine Konfigurationszeile hinzufügen, damit das Verzeichnis .well-known in der Ausgabe enthalten ist. Weitere Informationen zu diesem Thema finden Sie in der GitHub-Hilfe. Erstellen Sie im Stammverzeichnis Ihrer Website eine Datei namens _config.yml (oder fügen Sie ihr Inhalte hinzu, falls sie bereits vorhanden ist) und geben Sie Folgendes ein:

# Folders with dotfiles are ignored by default.
include: [.well-known]

Weitere Schlüssel hinzufügen

Eine Digital Asset Link-Datei kann mehrere Apps und für jede App mehrere Schlüssel enthalten. Wenn du beispielsweise einen zweiten Schlüssel hinzufügen möchtest, verwende einfach das Asset-Link-Tool, um den Schlüssel zu ermitteln und ihn als zweiten Eintrag hinzuzufügen. Der Code in Chrome, der diese JSON-Daten parst, ist ziemlich streng. Achten Sie also darauf, dass Sie am Ende der Liste nicht versehentlich ein zusätzliches Komma einfügen.

[{
  "relation": ["delegate_permission/common.handle_all_urls"],
  "target": {
    "namespace": "android_app",
    "package_name": "com.your.package_name",
    "sha256_cert_fingerprints": [
      "XX:XX:XX:..."
    ]
  }
},{
  "relation": ["delegate_permission/common.handle_all_urls"],
  "target": {
    "namespace": "android_app",
    "package_name": "com.your.package_name",
    "sha256_cert_fingerprints": [
      "XX:XX:XX:..."
    ]
  }
}]

Fehlerbehebung

In Chrome wird der Grund für den Fehler bei der Überprüfung von Digital Asset Links protokolliert. Sie können sich die Protokolle auf einem Android-Gerät mit adb logcat ansehen. Wenn Sie unter Linux/Mac entwickeln, können Sie die relevanten Protokolle von einem verbundenen Gerät mit folgenden Tools aufrufen:

> adb logcat -v brief | grep -e OriginVerifier -e digital_asset_links

Wenn Sie beispielsweise die Meldung Statement failure matching fingerprint. sehen, sollten Sie mit dem Asset-Link-Tool die Signatur Ihrer App aufrufen und prüfen, ob sie mit der in Ihrer assetlinks.json-Datei übereinstimmt.