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

Pour créer une expérience Google Play Instant, vous devez l'inclure dans un Android App Bundle. Un tel app 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, et comment configurer, compiler, tester et publier un app bundle permettant une utilisation instantanée.

Si vous avez un projet d'appli instantanée existant qui utilise le plug-in de fonctionnalité obsolète (com.android.feature), découvrez comment migrer votre application instantanée pour la rendre compatible avec le format Android App Bundle.

Configurer l'environnement de développement

Pour fournir une expérience instantanée dans un app bundle, vous devez accéder au SDK de développement Google Play Instant. Vous pouvez installer le SDK en utilisant 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.
  • Effectuez l'installation à 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 localement, accédez à un appareil physique ou virtuel.

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

Google Play Instant exécute des app bundles permettant une utilisation instantanée dans un type spécial de bac à sable SELinux pour une sécurité renforcée. Ce bac à sable autorise un sous-ensemble d'autorisations, ainsi que des types limités d'interactions avec d'autres applications. Les sections suivantes décrivent 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 des sources suivantes:

Gérer les autorisations courantes non compatibles

Vous trouverez ci-dessous une liste des autorisations courantes et 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: autorisation obsolète. utiliser 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 à la mémoire de 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.

En outre, les app bundles permettant une utilisation instantanée ne peuvent pas:

Accès aux applis installées

Lorsque vous développez une expérience instantanée, n'oubliez pas qu'elle ne peut interagir avec les applications installées sur un appareil que dans les cas suivants:

  • Une ou plusieurs activités d'une application installée ont défini son é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 des 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 considérations.

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 à celui de l'application installable. Les utilisateurs s'attendent à ce 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 des stratégies suivantes:

  • Redémarrez les codes de version pour l'expérience Google Play Instant à 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 votre appli instantanée et votre application installable dans deux projets Android Studio distincts. Dans ce cas, vous devez toutefois 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 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 terminer cette mise à jour, ajoutez l'attribut android:targetSandboxVersion à l'élément <manifest> de votre application, comme indiqué 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'attribut targetSandboxVersion.

Déclarer des 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 l'activer instantanément comme suit:

    1. Ouvrez le panneau Projet en sélectionnant 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 avez un app bundle existant contenant plusieurs modules, vous pouvez créer un module de fonctionnalité permettant une utilisation instantanée. Ce processus permet également une 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 activé doit prendre en charge Smart Lock pour les mots de passe sur Android. Si vous créez un jeu instantané, utilisez plutôt la connexion aux services de jeux Google Play.

Prendre en charge l'environnement d'exécution

Pour assurer la compatibilité avec le bac à sable SELinux dans lequel les expériences instantanées s'exécutent, tenez compte des points suivants lorsque vous créez votre app bundle permettant une utilisation instantanée:

  • Ne partagez pas la valeur de myUid(), qui est l'UID attribué par le noyau à votre application.
  • Si votre application cible Android 8.1 (niveau d'API 27) ou une 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 qui ciblent 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 des expériences instantanées

Après avoir 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 exécute l'expérience instantanée

Si une partie de la logique de votre application dépend de l'engagement de l'utilisateur dans votre expérience instantanée, appelez la méthode isInstantApp(). 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 méthode InstantApps.showInstallPrompt(), comme indiqué 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 bonne expérience utilisateur, 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 la targetSandboxVersion 2, les données de l'utilisateur sont transférées automatiquement vers la version complète de votre application. Sinon, vous devez les transférer manuellement. Pour ce faire, utilisez l'une des API suivantes:

  • Pour les utilisateurs d'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).

Créer l'app bundle

Vous pouvez utiliser Android Studio ou l'interface de ligne de commande pour créer 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 création de votre projet, consultez la section Créer votre projet.

Interface de ligne de commande

Vous pouvez également créer 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 en vérifier le fonctionnement:

Android Studio

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

  1. Si une version installée de votre application est installée sur votre appareil de test, désinstallez-la.
  2. Dans Android Studio, parmi 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'application 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 un ordinateur local à l'aide de la ligne de commande, procédez comme suit:

  1. Si une version installée de votre application est installée sur votre appareil de test, désinstallez-la.
  2. Téléchargez et exécutez votre application instantanée sur votre appareil de test indépendamment 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 via une bannière sur votre site Web, publiez l'application dans le canal de test interne de la Play Console.

Pour publier votre application dans 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 publication dans le canal de test interne. Pour en savoir plus, consultez l'article d'assistance sur la préparation et le déploiement des versions.
  3. Connectez-vous à un compte de testeur interne sur un appareil, puis lancez votre expérience instantanée depuis l'une des surfaces suivantes:

    • Le bouton Essayer figurant sur la fiche Play Store de votre application
    • Lien issu d'une bannière sur le site Web de votre application.

Publier l'app bundle en version de production

Pour publier votre app bundle activé pour une appli instantanée, procédez comme suit:

  1. Si vous ne l'avez pas déjà fait, signez votre app bundle avec une clé de version 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 de l'appli instantanée.
  3. Sélectionnez Mettre à jour à partir de la bibliothèque, puis sélectionnez l'app bundle activé pour une appli instantanée que vous avez importé.

Choisissez où publier votre expérience instantanée

Il est possible de 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: Créer une application groupée en une seule appli instantanée
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 moins volumineuses avec 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 par étapes 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.