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 vorhaben, Bubblewrap zum Generieren eines Android App Bundles (AAB) zu verwenden (Hinweis: Ab August 2021 müssen alle neuen Apps bei Google Play das Android App Bundle-Format verwenden) oder ein APK zum Hochladen und Veröffentlichen bei Google Play verwenden, 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. Damit werden Ihre APKs für den Vertrieb signiert. 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 sich behalten sollten. Mit dem Uploadschlüssel signieren Sie Ihre App für den Upload in die Play Console. Mithilfe dieses Systems können Sie Ihren Uploadschlüssel zurücksetzen, falls er verloren geht oder manipuliert wird. Wenden Sie sich dazu an das Google 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, verschieben Sie die Erstellung und Generierung von APKs an den Google Play Store. 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 können Sie sich für die Play App-Signatur anmelden. 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 sich dafür entscheiden, Ihren eigenen Schlüssel zu verwalten und die Play App-Signatur nicht zu 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 während der bubblewrap init-Einrichtung zum Abschnitt „Signing key information (5/5)“ (Informationen zum Signierschlüssel (5/5)) gelangen, werden Sie aufgefordert, einen „Key store location“ (Standort des Schlüssels) und einen „Key name“ (Schlüsselname) einzugeben oder die Standardwerte 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 raten davon ab, sie zur Versionsverwaltung zu verwenden. Begrenzen Sie stattdessen die Anzahl der Personen, die Zugriff darauf haben.

Digital Asset Links sind erforderlich, um die Beziehung zwischen deiner Website und deiner Android-App anzugeben. Damit deine von Bubblewrap generierte Android-App ordnungsgemäß verifiziert und als vertrauenswürdige Webaktivität (anstelle eines benutzerdefinierten Chrome-Tabs) gestartet wird, musst du der Datei assetlinks.json den entsprechenden Schlüssel hinzufügen. Laden Sie es dann unter .well-known/assetlinks.json (relativ zum Stammverzeichnis) auf Ihre Website hoch. 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:..."
   ]
 }
}]

Fingerabdruck des SHA256-Zertifikats 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: Die mit Ihren Signatur- und Uploadschlüsseln verknüpften Fingerabdrücke sind unterschiedlich. Diese Unterscheidung ist wichtig, insbesondere wenn Sie feststellen, dass Ihre App als benutzerdefinierter Chrome-Tab gestartet und die Browserleiste angezeigt wird. 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 nächsten Abschnitten erläutert. Sie erhalten in der Regel dieselben Fingerabdrücke, sodass Sie die für Sie am besten geeignete Methode wählen können.

Ü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 verteilt.

  • 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. Du kannst Keytool verwenden, um den SHA 256-Fingerabdruck zu 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 Apps nach Paketnamen angezeigt. Filtern Sie die Liste nach der Anwendungs-ID, die Sie zuvor während 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 am unteren Rand auf die Schaltfläche Kopieren oder Teilen, um sie nach Belieben zu exportieren (z.B. in Google Notizen speichern oder per E-Mail an sich selbst senden).

Das gilt genauso wie bei Signatur- oder Uploadschlüsseln. 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 nach dem Hochladen, ob Sie 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-Datei parst, ist ziemlich streng. Achten Sie daher darauf, nicht versehentlich ein zusätzliches Komma am Ende der Liste einzufü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.