Créer un app bundle permettant une utilisation instantanée

Avertissement : Google Play Instant ne sera plus disponible. À partir de décembre 2025, les Applis instantanées ne pourront plus être publiées sur Google Play, et toutes les API Instant des services Google Play ne fonctionneront plus. Play ne proposera plus d'Applis instantanées aux utilisateurs, quel que soit le mécanisme utilisé.

Nous apportons cette modification dans le cadre de nos investissements continus pour améliorer l'écosystème depuis l'introduction de Google Play Instant, et elle tient compte des retours des développeurs.

Pour favoriser la croissance du nombre d'utilisateurs, nous encourageons les développeurs à orienter les utilisateurs vers leur application ou leur jeu habituels à l'aide de liens profonds les redirigeant vers des parcours ou des fonctionnalités spécifiques, le cas échéant.

Pour créer une expérience Google Play Instant, vous devez l'inclure dans un Android App Bundle. Un tel bundle est appelé app bundle permettant une utilisation instantanée. Ce document explique comment configurer votre environnement de développement pour les app bundles permettant une utilisation instantanée, ainsi que comment configurer, compiler, tester et publier un tel app bundle.

Si vous disposez d'un projet d'appli instantanée existant qui utilise le plug-in de fonctionnalité obsolète (com.android.feature), découvrez comment migrer votre appli instantanée pour qu'elle soit compatible avec les Android App Bundles.

Configurer l'environnement de développement

Pour proposer une expérience instantanée dans un app bundle, vous devez avoir accès au SDK de développement Google Play Instant. Vous pouvez installer le SDK à l'aide de l'une des méthodes suivantes :

  • Installez Android Studio 3.6 ou une version ultérieure. Après avoir ouvert Android Studio, téléchargez le SDK de développement Google Play Instant depuis l'onglet SDK Tools de SDK Manager.
  • Installez-le à partir de la ligne de commande :

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

De plus, si vous souhaitez tester votre expérience instantanée en local, accédez à un appareil physique ou virtuel.

En savoir plus sur les conditions d'exécution requises

Google Play Instant exécute les app bundles permettant une utilisation instantanée dans un type spécial de bac à sable SELinux pour plus de sécurité. Ce bac à sable autorise un sous-ensemble d'autorisations, ainsi que des types d'interactions limités avec d'autres applications. Les sections suivantes expliquent plus en détail les caractéristiques de ce bac à sable.

Autorisations et opérations compatibles

Les app bundles permettant une utilisation instantanée ne peuvent utiliser que les autorisations de la liste suivante :

Gérer les autorisations courantes non compatibles

Voici une liste des autorisations courantes non compatibles que vous devez supprimer de votre application, ainsi que le chemin de migration recommandé pour chacune d'elles :

  • ACCESS_WIFI_STATE: utilisez ACCESS_NETWORK_STATE, qui devrait fournir des informations semblables à ACCESS_WIFI_STATE.
  • BILLING : il s'agit d'une autorisation obsolète. Utilisez la bibliothèque Google Play Billing, qui ne nécessite plus l'autorisation com.android.vending.BILLING.
  • READ/WRITE_EXTERNAL_STORAGE: les applis instantanées n'ont pas accès au stockage externe. Utilisez plutôt la mémoire de stockage interne.
  • com.google.android.c2dm.permission.RECEIVE et permission.C2D_MESSAGE : C2DM est obsolète. Migrez vers Firebase Cloud Messaging (FCM). FCM n'a besoin d'aucune autorisation supplémentaire pour fonctionner.

De plus, les app bundles permettant une utilisation instantanée ne peuvent pas effectuer les opérations suivantes :

Accès aux applis installées

Lorsque vous développez une expérience instantanée, gardez à l'esprit qu'elle ne peut pas interagir avec les applications installées sur un appareil, sauf si l'une des conditions suivantes est remplie :

  • Une ou plusieurs activités d'une application installée ont défini leur élément android:visibleToInstantApps sur true. Cet élément est disponible pour les applications exécutant Android 8.0 (niveau d'API 26) ou version ultérieure.
  • Une application installée contient un filtre d'intent qui inclut CATEGORY_BROWSABLE.
  • L'expérience instantanée envoie un intent à l'aide de l'action ACTION_SEND, ACTION_SENDTO, ou ACTION_SEND_MULTIPLE.

Configurer votre projet pour les expériences instantanées

Pour être compatible avec Google Play Instant, vous devez configurer soigneusement plusieurs aspects de votre app bundle permettant une utilisation instantanée. Les sections suivantes décrivent ces points à prendre en compte.

Déclarer les dépendances du projet

Pour utiliser les API Google Play Instant dans votre application, incluez la déclaration suivante dans le fichier de configuration build.gradle de votre module d'application :

Groovy

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

Kotlin

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

Définir les codes de version appropriés

Le code de version de l'expérience instantanée de votre application doit être inférieur au code de version de l'application installable. L'objectif est que les utilisateurs passent de l'expérience Google Play Instant au téléchargement et à l'installation de l'application sur leur appareil. Le framework Android considère cette transition comme une mise à jour d'application.

Pour vous assurer de suivre le schéma de gestion des versions attendu par les utilisateurs, suivez l'une de ces stratégies :

  • Redémarrez les codes de version pour l'expérience instantanée Google Play à partir de 1.
  • Augmentez le code de version du fichier APK installable avec un nombre élevé, tel que 1 000, pour vous assurer que le numéro de version de l'expérience instantanée ait suffisamment de marge pour pouvoir évoluer.

Vous pouvez développer l'appli instantanée et l'appli installable dans deux projets Android Studio distincts. Toutefois, si vous le faites, vous devez procéder comme suit pour publier votre application sur Google Play :

  1. Utilisez le même nom de package dans les deux projets Android Studio.
  2. Dans la Google Play Console, importez les deux variantes dans la même application.

Pour en savoir plus sur la définition de la version de votre application, consultez la section Gérer les versions de votre application.

Mettre à jour la version du bac à sable cible

Le fichier AndroidManifest.xml de votre appli instantanée doit être mis à jour pour cibler l'environnement de bac à sable compatible avec Google Play Instant. Pour effectuer cette mise à jour, ajoutez l'attribut android:targetSandboxVersion à l'élément <manifest> de votre application, comme illustré dans l'extrait de code suivant :

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

Pour en savoir plus, consultez la documentation concernant l' targetSandboxVersion attribut.

Déclarer les modules d'application permettant une utilisation instantanée

Vous pouvez déclarer que votre app bundle est compatible avec les expériences instantanées à l'aide de l'une des méthodes suivantes :

  • Si vous disposez d'un app bundle existant qui ne contient qu'un module de base, vous pouvez activer l'utilisation instantanée de l'app bundle comme suit :

    1. Ouvrez le panneau Project (Projet) en sélectionnant View > Tool Windows > Project (Vue > Fenêtres d'outil > Projet) dans la barre de menu.
    2. Effectuez un clic droit sur votre module de base, généralement nommé "app", puis sélectionnez Refactoriser > Activer la compatibilité avec les applis instantanées.
    3. Dans la boîte de dialogue qui s'affiche, sélectionnez votre module de base dans le menu déroulant.
    4. Cliquez sur OK.

    Android Studio ajoute la déclaration suivante au fichier manifeste du module :

    <manifest ... xmlns:dist="http://schemas.android.com/apk/distribution">
        <dist:module dist:instant="true" />
        ...
    </manifest>
    
  • Si vous disposez d'un app bundle existant qui contient plusieurs modules, vous pouvez créer un module de fonctionnalité permettant une utilisation instantanée. Ce processus active également l'utilisation instantanée du module de base de votre application, ce qui vous permet de prendre en charge plusieurs points d'entrée instantanés dans votre application.

Ajouter la prise en charge de la connexion

Si votre expérience instantanée permet aux utilisateurs de se connecter, votre app bundle permettant une utilisation instantanée doit être compatible avec Smart Lock pour les mots de passe sur Android. Si vous créez un jeu instantané, vous devez plutôt utiliser la connexion aux services Google Play Games.

Prendre en charge l'environnement d'exécution

Pour être compatible avec le bac à sable SELinux dans lequel les expériences instantanées s'exécutent, gardez les points suivants à l'esprit lorsque vous créez votre app bundle permettant une utilisation instantanée :

  • Ne partagez pas la valeur de myUid(), qui correspond à l'UID attribué au noyau du processus de votre application .
  • Si votre application cible Android 8.1 (niveau d'API 27) ou version antérieure, créez un fichier Network Security Config et définissez cleartextTrafficPermitted sur false. Les expériences instantanées ne sont pas compatibles avec le trafic HTTP. Pour les applications ciblant Android 9 ou version ultérieure, le trafic en texte clair est désactivé par défaut.
  • Votre expérience instantanée reste téléchargée sur l'appareil de l'utilisateur jusqu'à ce que son cache soit vidé, ce qui se produit dans les situations suivantes :

    • Le cache de l'expérience instantanée est soumis à une récupération de mémoire, car l'appareil manque de mémoire disponible.
    • L'utilisateur redémarre son appareil.

    Si l'un de ces processus a lieu, l'utilisateur devra télécharger à nouveau votre expérience instantanée pour pouvoir interagir avec elle.

  • Si le système manque d'espace de stockage, il est possible que les données utilisateur de votre expérience instantanée soient supprimées de la mémoire de stockage interne. Par conséquent, nous vous recommandons de synchroniser régulièrement les données utilisateur avec le serveur de votre application afin de préserver la progression de l'utilisateur.

Ajouter une logique pour les workflows d'expérience instantanée

Une fois que vous avez configuré votre app bundle pour qu'il soit compatible avec les expériences instantanées, ajoutez la logique illustrée dans les sections suivantes.

Vérifier si l'application fonctionne dans l'expérience instantanée

Si une partie de la logique de votre application dépend du fait que l'utilisateur est engagé dans votre expérience instantanée, appelez la isInstantApp() méthode. Cette méthode renvoie true si le processus en cours d'exécution est une expérience instantanée.

Afficher une invite d'installation

Si vous créez une version d'essai de votre application ou de votre jeu, Google Play Instant vous permet d'afficher une invite dans votre expérience instantanée, invitant les utilisateurs à installer l'expérience complète sur leur appareil. Pour afficher cette invite, utilisez la InstantApps.showInstallPrompt() méthode, comme illustré dans l'extrait de code suivant :

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);
    }
}

Transférer les données vers une expérience installée

Si l'utilisateur apprécie votre expérience instantanée, il peut décider d'installer votre application. Pour offrir une expérience utilisateur de qualité, il est important que les données de l'utilisateur soient transférées de votre expérience instantanée vers la version complète de votre application.

Si l'utilisateur utilise un appareil équipé d'Android 8.0 (niveau d'API 26) ou version ultérieure, et si votre application spécifie une targetSandboxVersion de 2, les données de l'utilisateur sont automatiquement transférées vers la version complète de votre application. Sinon, vous devez transférer les données manuellement. Pour ce faire, utilisez l'une des API suivantes :

  • Pour les utilisateurs qui exécutent des appareils équipés d'Android 8.0 (niveau d'API 26) ou version ultérieure, utilisez l'API Cookie (application exemple).
  • Si les utilisateurs peuvent interagir avec votre expérience sur des appareils équipés d'Android 7.1 (niveau d'API 25) ou version antérieure, ajoutez la prise en charge de l'API Storage - application exemple

Compiler l'app bundle

Vous pouvez utiliser Android Studio ou l'interface de ligne de commande pour compiler votre app bundle permettant une utilisation instantanée.

Android Studio

Avec Android Studio, vous pouvez compiler votre app bundle en sélectionnant Build > Build Bundle(s) / APK(s) > Build Bundle(s) (Compiler > Compiler des bundles/APK > Compiler des bundles). Pour en savoir plus sur la compilation de votre projet, consultez Compiler votre projet.

Interface de ligne de commande

Vous pouvez également compiler l'app bundle à partir de la ligne de commande à l'aide de Gradle.

Assurer la compatibilité avec les architectures 64 bits

Les applications publiées sur Google Play doivent être compatibles avec les architectures 64 bits. L'ajout d'une version 64 bits de votre application améliore les performances et vous permet de prendre en charge des appareils avec du matériel 64 bits uniquement. En savoir plus sur la compatibilité avec les architectures 64 bits.

Tester l'expérience instantanée

Avant de publier votre app bundle permettant une utilisation instantanée, vous pouvez tester l'expérience instantanée à partir de l'un des emplacements suivants pour vérifier son fonctionnement :

Android Studio

Pour tester l'expérience instantanée de votre application sur une machine locale à l'aide d'Android Studio, procédez comme suit :

  1. Si une version installée de votre application se trouve sur votre appareil de test, désinstallez-la.
  2. Dans Android Studio, dans les options d'installation qui s'affichent dans l'onglet General (Général) de la boîte de dialogue Run/Debug Configurations (Configurations d'exécution/de débogage), cochez la case Deploy as instant app (Déployer en tant qu'appli instantanée).
  3. Sélectionnez Run > Run (Exécuter > Exécuter) dans la barre de menu, ou cliquez sur Run (Exécuter) dans la barre d'outils, puis choisissez l'appareil sur lequel vous souhaitez tester les expériences instantanées de votre application. L'expérience instantanée de votre application se charge sur l'appareil de test que vous avez choisi.

Interface de ligne de commande

Pour tester l'expérience instantanée de votre application sur une machine locale à l'aide de la ligne de commande, procédez comme suit :

  1. Si une version installée de votre application se trouve sur votre appareil de test, désinstallez-la.
  2. Installez et exécutez votre appli instantanée sur votre appareil de test en saisissant la commande suivante :
ia run output-from-build-command

Canal de test interne

Pour tester l'expérience instantanée de votre application à partir du Play Store ou d'une bannière sur votre site Web, publiez l'application sur le canal de test interne du canal de la Play Console.

Pour publier votre application sur le canal de test interne, procédez comme suit :

  1. Importez votre app bundle en suivant les étapes du guide Importer votre app bundle dans la Play Console.
  2. Préparez le bundle importé pour une version sur le canal de test interne. Pour en savoir plus, consultez l'article d'assistance sur la façon de Préparer et déployer des versions.
  3. Connectez-vous à un compte de testeur interne sur un appareil, puis lancez votre expérience instantanée à partir de l'une des surfaces suivantes :

    • Le bouton Essayer de la fiche Play Store de votre application.
    • Un lien depuis une bannière sur le site Web de votre application.

Publier l'app bundle sur le canal de production

Pour publier votre app bundle permettant une utilisation instantanée, procédez comme suit :

  1. Si ce n'est pas déjà fait, signez votre app bundle avec une clé de release et importez-le dans la Play Console.
  2. Dans la Play Console, ouvrez Gestion des versions > Applis instantanées Android, puis accédez au canal Production d'applis instantanées.
  3. Sélectionnez Mettre à jour depuis la bibliothèque, puis sélectionnez l'app bundle permettant une utilisation instantanée que vous avez importé.

Choisir où publier votre expérience instantanée

Vous pouvez lancer une expérience instantanée de votre application dans un sous-ensemble des pays et régions où les utilisateurs peuvent installer votre application. Cette fonctionnalité est utile lorsque vous souhaitez promouvoir l'expérience instantanée de votre application auprès des utilisateurs résidant dans un ensemble spécifique de pays et de régions.

Ressources supplémentaires

Pour en savoir plus sur la création d'expériences instantanées et d'Android App Bundles, consultez les ressources suivantes :

Vidéo : App bundles et applis instantanées
Découvrez comment ajouter une expérience instantanée à un Android App Bundle dans cette session du Sommet des développeurs Android 2018.
Vidéo : Publier des applications plus petites avec l'Android App Bundle
Découvrez comment les app bundles vous aident à développer votre application plus rapidement et à créer des APK plus petits pour vos utilisateurs.
Atelier de programmation : Votre premier Android App Bundle
Guide pas à pas pour créer un Android App Bundle et y ajouter des fonctionnalités.
Format Android App Bundle
Découvrez comment le programme de ligne de commande bundletool organise un app bundle à partir du code et des ressources de votre application.