Instant-fähiges App Bundle erstellen

Google Play Instant wird durch die Einbindung in ein Android App Bundle erstellt. Ein solches Bundle wird als Instant-fähiges App-Bundle bezeichnet. In diesem Dokument wird beschrieben, wie Sie die Entwicklungsumgebung für Instant-fähige App Bundles einrichten und ein App Bundle mit Instant-Version konfigurieren, erstellen, testen und veröffentlichen.

Wenn Sie bereits ein Instant-App-Projekt haben, in dem das eingestellte Feature-Plug-in (com.android.feature) verwendet wird, erfahren Sie hier, wie Sie Ihre Instant App migrieren, damit sie Android App Bundles unterstützt.

Entwicklungsumgebung einrichten

Wenn Sie eine Instant-Funktion in einem App-Bundle bereitstellen möchten, benötigen Sie Zugriff auf das Google Play Instant Development SDK. Sie können das SDK mit einer der folgenden Methoden installieren:

  • Installieren Sie Android Studio 3.6 oder höher. Öffnen Sie Android Studio und laden Sie das Google Play Instant Development SDK im SDK Manager über den Tab SDK Tools herunter.
  • Installation über die Befehlszeile:

    cd path/to/android/sdk/tools/bin && \
      ./sdkmanager 'extras;google;instantapps'
    

Wenn Sie die Instant-Funktion lokal testen möchten, benötigen Sie außerdem Zugriff auf ein physisches oder ein virtuelles Gerät.

Weitere Informationen zu den erforderlichen Ausführungsbedingungen

Google Play Instant führt Instant-fähige App Bundles für zusätzliche Sicherheit in einer speziellen Art von SELinux-Sandbox aus. Diese Sandbox ermöglicht einen Teil der Berechtigungen sowie eingeschränkte Arten von Interaktionen mit anderen Apps. In den folgenden Abschnitten werden die Eigenschaften dieser Sandbox ausführlicher erläutert.

Unterstützte Berechtigungen und Vorgänge

In App Bundles mit aktivierter Instant-Version können nur Berechtigungen aus der folgenden Liste verwendet werden:

Umgang mit allgemeinen nicht unterstützten Berechtigungen

Im Folgenden finden Sie eine Liste allgemeiner, nicht unterstützter Berechtigungen, die Sie aus Ihrer Anwendung entfernen müssen, sowie den empfohlenen Migrationspfaden für diese Berechtigungen:

  • ACCESS_WIFI_STATE: Verwenden Sie ACCESS_NETWORK_STATE, das Informationen ähnlich wie ACCESS_WIFI_STATE liefern sollte.
  • BILLING: Dies ist eine verworfene Berechtigung. Verwende die Google Play Billing Library, für die die Berechtigung com.android.vending.BILLING nicht mehr erforderlich ist.
  • READ/WRITE_EXTERNAL_STORAGE: Instant Apps haben keinen Zugriff auf externen Speicher. Verwende stattdessen den internen Speicher.
  • com.google.android.c2dm.permission.RECEIVE und permission.C2D_MESSAGE: C2DM wurde eingestellt. Migrieren Sie zu Firebase Cloud Messaging (FCM). FCM benötigt keine zusätzlichen Berechtigungen.

Außerdem ist bei App Bundles mit Instant-Version Folgendes nicht möglich:

Zugriff auf installierte Apps

Beachten Sie bei der Entwicklung einer Instant-Funktion, dass diese nur dann mit installierten Apps auf einem Gerät interagieren kann, wenn eine der folgenden Bedingungen zutrifft:

  • Für mindestens eine Aktivität in einer installierten App wurde das Element android:visibleToInstantApps auf true gesetzt. Dieses Element ist für Apps mit Android 8.0 (API-Level 26) oder höher verfügbar.
  • Eine installierte App enthält einen Intent-Filter, der CATEGORY_BROWSABLE enthält.
  • Die Instant-Version sendet einen Intent mit der Aktion ACTION_SEND, ACTION_SENDTO oder ACTION_SEND_MULTIPLE.

Projekt für Instant-Versionen konfigurieren

Zur Kompatibilität mit Google Play Instant musst du mehrere Aspekte deines App Bundles mit Instant-Version sorgfältig konfigurieren. Diese Überlegungen werden in den folgenden Abschnitten beschrieben.

Projektabhängigkeiten deklarieren

Um die Google Play Instant APIs in deiner App zu verwenden, füge die folgende Deklaration in die build.gradle-Konfigurationsdatei deines App-Moduls ein:

Groovig

implementation "com.google.android.gms:play-services-instantapps:17.0.0"

Kotlin

implementation("com.google.android.gms:play-services-instantapps:17.0.0")

Die richtigen Versionscodes definieren

Der Versionscode der Instant-Funktion Ihrer App muss kleiner als der Versionscode der installierbaren App sein. Es wird erwartet, dass Nutzer von der Google Play Instant-Version zur App wechseln und die App herunterladen und auf ihrem Gerät installieren. Im Android-Framework wird diese Umstellung als App-Update betrachtet.

Damit Sie dem von den Nutzern erwarteten Versionierungsschema folgen, können Sie eine der folgenden Strategien anwenden:

  • Starten Sie die Versionscodes für Google Play Instant noch einmal auf 1.
  • Erhöhe den Versionscode des installierbaren APKs um eine große Zahl, z. B. 1.000, damit genügend Speicherplatz für die Versionsnummer der Instant-Version vorhanden ist.

Sie können Ihre Instant-App und Ihre installierbare App in zwei separaten Android Studio-Projekten entwickeln. In diesem Fall müssen Sie jedoch die folgenden Schritte ausführen, um Ihre App bei Google Play zu veröffentlichen:

  1. Verwenden Sie in beiden Android Studio-Projekten denselben Paketnamen.
  2. Laden Sie in der Google Play Console beide Varianten in dieselbe App hoch.

Weitere Informationen zum Festlegen der App-Version finden Sie unter App versionieren.

Sandbox-Zielversion aktualisieren

Die Datei AndroidManifest.xml deiner Instant-App muss aktualisiert werden, um sie auf die von Google Play Instant unterstützte Sandbox-Umgebung auszurichten. Sie können diese Aktualisierung abschließen, indem Sie das Attribut android:targetSandboxVersion in das <manifest>-Element Ihrer App einfügen, wie im folgenden Code-Snippet gezeigt:

<manifest
   xmlns:android="http://schemas.android.com/apk/res/android"
  ...
   android:targetSandboxVersion="2" ...>

Weitere Informationen finden Sie in der Dokumentation zum Attribut targetSandboxVersion.

Instant-fähige App-Module deklarieren

Mit einer der folgenden Methoden können Sie deklarieren, dass Ihr App-Bundle Instant-Funktionen unterstützt:

  • Wenn Sie bereits ein App-Bundle haben, das nur ein Basismodul enthält, können Sie das App-Bundle so aktivieren:

    1. Öffnen Sie den Bereich Projekt, indem Sie in der Menüleiste Ansicht > Toolfenster > Projekt auswählen.
    2. Klicken Sie mit der rechten Maustaste auf Ihr Basismodul, das in der Regel den Namen "app" hat, und wählen Sie Refactor > Instant Apps Support aktivieren aus.
    3. Wählen Sie im angezeigten Dialogfeld Ihr Basismodul aus dem Dropdown-Menü aus.
    4. Klicke auf OK.

    Android Studio fügt dem Manifest des Moduls die folgende Deklaration hinzu:

    <manifest ... xmlns:dist="http://schemas.android.com/apk/distribution">
        <dist:module dist:instant="true" />
        ...
    </manifest>
    
  • Wenn Sie bereits ein App-Bundle haben, das mehrere Module enthält, können Sie ein Featuremodul mit Instant-Version erstellen. Durch diesen Vorgang wird auch das Basismodul Ihrer App Instant aktiviert, sodass Sie die Möglichkeit haben, mehrere Instant-Einstiegspunkte innerhalb Ihrer App zu unterstützen.

Unterstützung für die Anmeldung hinzufügen

Wenn die Instant-Funktion es Nutzern ermöglicht, sich anzumelden, muss das Instant-fähige App-Bundle Smart Lock für Passwörter unter Android unterstützen. Wenn Sie ein Instant-Game erstellen, sollten Sie sich stattdessen über die Google Play-Spieldienste anmelden.

Ausführungsumgebung unterstützen

Beachten Sie beim Erstellen des App-Bundles mit Instant-Version Folgendes, um die Kompatibilität mit der SELinux-Sandbox zu gewährleisten, in der Instant-Funktionen ausgeführt werden:

  • Geben Sie den Wert von myUid() nicht weiter. Das ist die vom Kernel zugewiesene UID Ihres Anwendungsprozesses.
  • Wenn deine App auf Android 8.1 (API-Level 27) oder niedriger ausgerichtet ist, erstelle eine Datei für die Netzwerksicherheitskonfiguration und setze cleartextTrafficPermitted auf false. Instant-Funktionen unterstützen keinen HTTP-Traffic. Für Apps, die auf Android 9 oder höher ausgerichtet sind, ist Klartext-Traffic standardmäßig deaktiviert.
  • Die Instant-Funktion bleibt auf das Gerät eines Nutzers heruntergeladen, bis der Cache der Instant-Funktion geleert wurde. Dies ist in folgenden Situationen der Fall:

    • Der Instant-Erlebnis-Cache wird automatisch bereinigt, weil auf dem Gerät nur noch wenig Speicherplatz verfügbar ist.
    • Der Nutzer startet sein Gerät neu.

    Wenn einer der beiden Prozesse auftritt, muss der Nutzer die Instant-Version noch einmal herunterladen, um damit interagieren zu können.

  • Wenn auf dem System nur noch wenig Speicherplatz verfügbar ist, werden die Nutzerdaten der Instant-Version möglicherweise aus dem internen Speicher entfernt. Daher wird empfohlen, Nutzerdaten regelmäßig mit dem Anwendungsserver zu synchronisieren, damit der Fortschritt des Nutzers erhalten bleibt.

Logik für Workflows für Instant-Funktionen hinzufügen

Nachdem Sie Ihr App-Bundle für Instant-Versionen konfiguriert haben, fügen Sie die in den folgenden Abschnitten gezeigte Logik hinzu.

Prüfen, ob die Instant-Funktion in der App ausgeführt wird

Wenn ein Teil der Anwendungslogik davon abhängt, ob der Nutzer mit der Instant-Funktion interagiert, rufen Sie die Methode isInstantApp() auf. Diese Methode gibt true zurück, wenn der aktuell ausgeführte Prozess sofort verfügbar ist.

Installationsaufforderung anzeigen

Wenn Sie eine Testversion Ihrer App oder Ihres Spiels erstellen, können Sie mit Google Play Instant eine Aufforderung in der Instant-Funktion einblenden, um Nutzer aufzufordern, die gesamte Version auf ihrem Gerät zu installieren. Verwenden Sie zum Anzeigen dieser Eingabeaufforderung die Methode InstantApps.showInstallPrompt(), wie im folgenden Code-Snippet gezeigt:

Kotlin

class MyInstantExperienceActivity : AppCompatActivity {
    // ...
    private fun showInstallPrompt() {
        val postInstall = Intent(Intent.ACTION_MAIN)
                .addCategory(Intent.CATEGORY_DEFAULT)
                .setPackage(your-installed-experience-package-name)

        // The request code is passed to startActivityForResult().
        InstantApps.showInstallPrompt(this@MyInstantExperienceActivity,
                postInstall, request-code, /* referrer= */ null)
    }
}

Java

public class MyInstantExperienceActivity extends AppCompatActivity {
    // ...
    private void showInstallPrompt() {
        Intent postInstall = new Intent(Intent.ACTION_MAIN)
                .addCategory(Intent.CATEGORY_DEFAULT)
                .setPackage(your-installed-experience-package-name);

        // The request code is passed to startActivityForResult().
        InstantApps.showInstallPrompt(MyInstantExperienceActivity.this,
                postInstall, request-code, /* referrer= */ null);
    }
}

Daten auf eine installierte Website übertragen

Wenn dem Nutzer die Instant-Version gefällt, entscheidet er sich möglicherweise möglicherweise, Ihre App zu installieren. Für eine gute Nutzererfahrung ist es wichtig, dass die Daten des Nutzers aus der Instant-Version in die Vollversion der App übertragen werden.

Wenn der Nutzer ein Gerät mit Android 8.0 (API-Level 26) oder höher verwendet und in deiner App ein targetSandboxVersion-Wert von 2 angegeben ist, werden die Daten des Nutzers automatisch an die Vollversion deiner App übertragen. Andernfalls musst du die Daten manuell übertragen. Verwenden Sie dazu eine der folgenden APIs:

  • Verwende für Nutzer, die Geräte mit Android 8.0 (API-Level 26) und höher verwenden, die Beispiel-App der Cookie-API.
  • Wenn Nutzer auf Geräten mit Android 7.1 (API-Level 25) und niedriger mit Ihren Inhalten interagieren können, fügen Sie Unterstützung für die Storage API hinzu (Beispiel-App).

App Bundle erstellen

Sie können entweder Android Studio oder die Befehlszeile verwenden, um Ihr Instant-fähiges App-Bundle zu erstellen.

Android Studio

Wählen Sie in Android Studio Build > Build Bundle(s)/APK(s) > Build Bundle(s) (Build > Build-Bundles/APKs > Build-Bundles) aus. Weitere Informationen zum Erstellen eines Projekts finden Sie unter Projekt erstellen.

Befehlszeile

Sie können das App-Bundle auch über die Befehlszeile erstellen. Verwenden Sie dazu Gradle.

64-Bit-Architekturen unterstützen

Bei Google Play veröffentlichte Apps müssen 64-Bit-Architekturen unterstützen. Durch das Hinzufügen einer 64-Bit-Version deiner App wird die Leistung verbessert und du kannst Geräte mit Nur-64-Bit-Hardware verwenden. Weitere Informationen zur 64-Bit-Unterstützung

Instant-Version testen

Bevor Sie das Instant-fähige App-Bundle veröffentlichen, können Sie die Instant-Funktion an einem der folgenden Standorte testen, um die Funktionalität zu prüfen:

Android Studio

So testen Sie die Instant-Funktion Ihrer App auf einem lokalen Computer mithilfe von Android Studio:

  1. Wenn du eine Version deiner App auf deinem Testgerät installiert hast, deinstalliere sie.
  2. Klicken Sie in Android Studio im Dialogfeld Run/Debug Configurations in den Installationsoptionen auf dem Tab General (Allgemein) das Kästchen Deploy as Instant App (Als Instant-App bereitstellen) an.
  3. Wählen Sie in der Menüleiste Ausführen > Ausführen aus oder klicken Sie in der Symbolleiste auf Ausführen und wählen Sie dann das Gerät aus, auf dem Sie die Instant-Funktionen Ihrer App testen möchten. Die Instant-Funktion Ihrer App wird auf dem ausgewählten Testgerät geladen.

Befehlszeile

Führen Sie die folgenden Schritte aus, um die Instant-Funktion Ihrer App über die Befehlszeile auf einem lokalen Computer zu testen:

  1. Wenn du eine Version deiner App auf deinem Testgerät installiert hast, deinstalliere sie.
  2. Führen Sie den folgenden Befehl aus, um die Instant-App auf dem Testgerät zu übertragen und auszuführen:
ia run output-from-build-command

Interner Test-Track

Wenn du die Instant-Funktion deiner App im Play Store oder über ein Banner auf deiner Website testen möchtest, veröffentliche die App im internen Test-Track in der Play Console.

So veröffentlichen Sie Ihre App im internen Test-Track:

  1. Laden Sie Ihr App Bundle hoch. Folgen Sie dazu der Anleitung unter App Bundle in die Play Console hochladen.
  2. Bereiten Sie das hochgeladene Bundle für den Release im Interner-Test-Track vor. Weitere Informationen finden Sie im Hilfeartikel Releases vorbereiten und einführen.
  3. Melden Sie sich auf einem Gerät in einem internen Testerkonto an und starten Sie dann die Instant-Funktion über eine der folgenden Oberflächen:

    • Über die Schaltfläche Jetzt testen im Play Store-Eintrag Ihrer App
    • Ein Link von einem Banner auf der Website Ihrer App.

App Bundle im Produktions-Track veröffentlichen

Führen Sie die folgenden Schritte aus, um Ihr Instant-fähiges App-Bundle zu veröffentlichen:

  1. Falls noch nicht geschehen, signieren Sie Ihr App-Bundle mit einem Releaseschlüssel und laden Sie das App-Bundle in die Play Console hoch.
  2. Öffnen Sie in der Play Console Release-Verwaltung > Android Instant Apps und gehen Sie dann zum Track Instant-App-Produktion.
  3. Wählen Sie Aus Bibliothek aktualisieren und dann das Instant-fähige App-Bundle aus, das Sie hochgeladen haben.

Wählen Sie aus, wo die Instant-Version veröffentlicht werden soll

Es ist möglich, eine Instant-Version Ihrer App in einer Teilmenge der Länder und Regionen zu starten, in denen Nutzer Ihre App installieren können. Diese Funktion ist nützlich, wenn Sie Nutzern in bestimmten Ländern und Regionen die Instant-Funktion Ihrer App präsentieren möchten.

Weitere Informationen

Weitere Informationen zum Erstellen von Instant-Apps und Android App Bundles finden Sie in den folgenden Ressourcen:

Video: Eine App in Sekundenschnelle bündeln
In dieser Session vom Android Dev Summit 2018 erfährst du, wie du einem Android App Bundle eine Instant-Funktion hinzufügen kannst.
Video: Mit dem Android App Bundle kleinere Apps veröffentlichen
Hier erfährst du, wie du mit App Bundles deine App schneller entwickeln und kleinere APKs für deine Nutzer erstellen kannst.
Codelab: Dein erstes Android App Bundle
Eine detaillierte Anleitung zum Erstellen eines Android App Bundles und zum Hinzufügen von Funktionen.
Das Android App Bundle-Format
Hier finden Sie weitere Informationen dazu, wie das bundletool-Befehlszeilentool ein App Bundle aus dem Code und den Ressourcen Ihrer App organisiert.