Si vous utilisez toujours le plug-in de fonctionnalité Android Gradle obsolète
(com.android.feature
) pour vos modules d'appli instantanée Android :
migrer vers le plug-in d'application de base (com.android.application
) ;
Plug-in de fonctionnalités dynamiques (com.android.dynamic-feature
).
Sur le plug-in Android Gradle 3.3.0 et versions ultérieures, le plug-in d'application de base est compatible avec pour des expériences instantanées. Autrement dit, si le module de base de l'application répond aux exigences pour bénéficier d'une expérience instantanée, vous en bénéficiez automatiquement. Vous pouvez ensuite inclure des fonctionnalités supplémentaires téléchargeables à la demande, grâce au plug-in de fonctionnalités dynamiques. Cette configuration permet plus facile de prendre en charge à la fois une expérience d'appli installée et une expérience d'appli instantanée à partir d'une seule et vous permet de publier des contenus via Android App Bundle :
Le tableau suivant décrit mieux les plug-ins vers lesquels vous allez migrer:
Description du module | Ancien plug-in | Plug-in actuel |
---|---|---|
Module qui comprend le code de base, les ressources et les fonctionnalités pour votre expérience d'appli installée ou instantanée. | com.android.feature (avec baseFeature = true )
|
com.android.application
Remarque:Ce module inclut tous les fichiers manifestes les informations de signature requises pour compiler et empaqueter votre application en tant qu'application App Bundle ou APK. |
Fonctionnalités modulaires supplémentaires que les utilisateurs peuvent télécharger à la demande | com.android.feature |
com.android.dynamic-feature (avec
dist:instant="true" et
dist:onDemand="false" dans le fichier manifeste du module) |
Code et ressource d'une fonctionnalité disponibles uniquement pour la version installée de votre application. | com.android.application |
com.android.dynamic-feature (avec
dist:instant="false" et dist:onDemand="false"
dans le fichier manifeste du module) |
Cette page vous explique comment migrer votre projet d'appli instantanée existant pour créer un Android App Bundle activé pour une appli instantanée. Il décrit également comment créer, tester et publier un Android App Bundle permettant une utilisation instantanée.
Si vous créez des expériences instantanées pour votre application, consultez plutôt Créez un module de fonctionnalité permettant une utilisation instantanée.
Comprendre les modifications
Lorsque vous migrez votre projet pour utiliser le plug-in de fonctionnalités dynamiques, Le format Android App Bundle offre une nouvelle façon de créer et de publier votre application qui simplifie considérablement la distribution d'APK optimisés à vos utilisateurs.
Les app bundles simplifient la distribution en empaquetant tout le code compilé de votre application et ressources pour l'importation, mais reporte la génération de l'APK et sa signature sur Google Play. Le nouveau modèle de diffusion d'applications de Google Play App bundle pour générer et diffuser des APK optimisés pour l'appareil de chaque utilisateur de sorte qu'ils ne téléchargent que le code et les ressources nécessaires votre application. Vous n'avez plus besoin de compiler, de signer ni de gérer plusieurs APK pour prendre en charge différents appareils, et les utilisateurs obtiennent des téléchargements plus petits et plus optimisés.
Lors de l'utilisation du plug-in de fonctionnalité désormais obsolète, la création d'une appli instantanée était requise la création d'un module de fonctionnalité de base, qui contenait le code et les ressources partagés pour tous vos modules, y compris votre module d'appli instantanée. Le reste de votre code a été inclus dans plusieurs modules de fonctionnalités non standards, qui contenaient des points d'entrée pour vos expériences instantanées. Pour la version installée de votre application, votre projet comportait peut-être un module d'application distinct, qui contenait le code et activités requises uniquement pour votre application installée.
Lorsque vous migrez votre application pour qu'elle soit compatible avec le format Android App Bundle, votre module d'application récupère le rôle du module de base, et vous organisez les ressources supplémentaires des expériences instantanées sous forme de modules de fonctionnalité. C'est-à-dire que votre projet est maintenant plus ressemble beaucoup à un projet d'application standard, avec un module de base permettant une utilisation instantanée et la possibilité d'inclure des expériences instantanées supplémentaires modulaires.
Pour migrer votre projet d'appli instantanée existant et adopter le format Android App Bundle plus optimisé, suivez les étapes décrites dans les sections ci-dessous.
Convertir le module de fonctionnalité de base en module d'application
Vous devez d'abord modifier le fichier build.gradle
du module de fonctionnalité de base avant
en le convertissant en module d'application principal, comme suit:
- Supprimez la ligne
baseFeature true
. Supprimez toutes les dépendances qui utilisent la dépendance
feature
ouapplication
. de configuration.Groovy
dependencies { ... // delete any lines that look like // feature project(":foo") // feature project(":bar") // application project(":app") }
Kotlin
dependencies { ... // delete any lines that look like // feature(project(":foo")) // feature(project(":bar")) // application(project(":app")) }
Déplacez
applicationId
, ainsi que toute autre configuration de script de compilation que vous doit se trouver dans votre module d'application de base, à partir de la version actuellecom.android.application
au modulecom.android.feature
. Un peu exemples sont présentés ci-dessous. Pour cette étape, en fonction de votrebuild.gradle
, il peut être plus simple de copier et coller leandroid
le blocbuild.gradle
du module d'application précédent dans la nouvelle application le fichierbuild.gradle
du module. Toutefois, vous devez faire preuve de prudence lorsque vous faites donc.Groovy
android { ... defaultConfig { // You need to move the application ID from the app module // to your feature module. applicationId "com.example.myapp" ... } // Some additional build configurations you might want to // copy from your current ‘app’ module may include ProGuard // rules and code shrinking settings. buildTypes { release { minifyEnabled true proguardFiles getDefaultProguardFile( 'proguard-android-optimize.txt'), 'proguard-rules.pro' } } }
Kotlin
android { ... defaultConfig { // You need to move the application ID from the app module // to your feature module. applicationId = "com.example.myapp" ... } // Some additional build configurations you might want to // copy from your current ‘app’ module may include ProGuard // rules and code shrinking settings. buildTypes { getByName("release") { minifyEnabled = true proguardFiles( getDefaultProguardFile("proguard-android-optimize.txt"), "proguard-rules.pro" ) } } }
Marquer le module de fonctionnalité comme permettant une utilisation instantanée en ajoutant le bundle approprié de distribution dans le fichier manifeste, comme indiqué ci-dessous.
<manifest ... xmlns:dist="http://schemas.android.com/apk/distribution"> <dist:module dist:instant="true" /> ... </manifest>
Convertissez le module de fonctionnalité en module d'application de base en modifiant son plug-in saisissez
com.android.application
:Groovy
// Replace "plugins { id 'com.android.feature' }" // with the following plugins { id 'com.android.application' }
Kotlin
// Replace "plugins { id("com.android.feature") }" // with the following plugins { id("com.android.application") }
Convertir l'ancien module d'application en module de fonctionnalité au moment de l'installation
Si vous n'avez pas de code ni de ressources dans l'ancien module d'application, vous pouvez les supprimer, car les étapes que vous avez suivies dans la section précédente ont converti dans le module de base de votre application.
Toutefois, si l'ancien module d'application contient du code et des ressources des fonctionnalités que vous souhaitez proposer aux utilisateurs lorsqu'ils installent votre application, Suivez les étapes de cette section pour convertir le module d'application en module de fonctionnalité.
Pour créer un module de fonctionnalité, vous devez modifier le type de plug-in
De com.android.application
à com.android.dynamic-feature
, ainsi que quelques
autres modifications de build.gradle
, comme suit:
Remplacez le type de plug-in
com.android.application
parcom.android.dynamic-feature
Groovy
// Replace "plugins { id 'com.android.feature' }" // with the following: plugins { id 'com.android.dynamic-feature' }
Kotlin
// Replace "plugins { id("com.android.application") }" // with the following: plugins { id("com.android.dynamic-feature") }
Comme décrit dans la section précédente, assurez-vous d'avoir déplacé la compilation requises par le plug-in
com.android.application
pour module d'application de base, comme les règlesapplicationId
ouproguardFiles
.Renommez le module "installed_feature" par exemple. comme suit:
- Ouvrez le volet Project (Projet) en sélectionnant View > Fenêtres d'outil > Projet dans la barre de menu.
- Effectuez un clic droit sur le module de fonctionnalité, puis sélectionnez Refactor > Refactor > Renommer.
- Dans la boîte de dialogue qui s'affiche, sélectionnez Renommer le module, puis cliquez sur OK.
- Saisissez le nouveau nom du module et cliquez sur OK.
Comme à l'étape 3, renommez le nouveau module d'application que vous avez créé à l'étape par exemple "application".
Ajoutez une dépendance d'implémentation au module "app" de la fonctionnalité. le fichier
build.gradle
du module, comme indiqué ci-dessous.Groovy
dependencies { ... // In the feature module, add an implementation dependency // on the base app module. implementation project(":app") }
Kotlin
dependencies { ... // In the feature module, add an implementation dependency // on the base app module. implementation(project(":app")) }
Ajoutez la fonctionnalité au fichier
build.gradle
du nouveau module d'application.Groovy
android { ... // In the base app module, specify each feature module. dynamicFeatures = [":installed_feature"] }
Kotlin
android { ... // In the base app module, specify each feature module. dynamicFeatures.addAll(listOf(":installed_feature")) }
Dans le fichier manifeste du module de fonctionnalité, marquez-le comme un module installable en ajoutant les tags de distribution de bundle appropriés au fichier fichier manifeste.
<manifest ... xmlns:dist="http://schemas.android.com/apk/distribution"> <dist:module dist:instant="false" dist:onDemand="false" dist:title="@string/title_dynamic_feature"> <dist:fusing dist:include="true" /> </dist:module> ... </manifest>
Convertir d'autres modules de fonctionnalités en modules de fonctionnalités permettant une utilisation instantanée
Si vous avez modularisé des fonctionnalités supplémentaires de votre application en plusieurs modules, vous devez suivre les étapes de cette section pour les convertir en modules de fonctionnalités permettant une utilisation instantanée.
Pour chaque module de fonctionnalité restant dans votre projet, procédez comme suit pour convertir en fonctionnalités permettant une utilisation instantanée:
Remplacez le type de plug-in dans le fichier
build.gradle
parcom.android.dynamic-feature
, comme indiqué ci-dessous:Groovy
// Replace 'com.android.feature' with 'com.android.dynamic-feature' plugins { id 'com.android.dynamic-feature' }
Kotlin
// Replace "com.android.feature" with "com.android.dynamic-feature" plugins { id("com.android.dynamic-feature") }
Marquez chaque module de fonctionnalité comme permettant une utilisation instantanée en ajoutant les éléments suivants : au fichier manifeste.
<manifest ... xmlns:dist="http://schemas.android.com/apk/distribution"> <dist:module dist:instant="true" dist:onDemand="false" dist:title="@string/title_dynamic_feature"> <dist:fusing dist:include="true" /> </dist:module> ... </manifest>
Ajoutez le module de fonctionnalité au fichier
build.gradle
du nouveau module d'application où vous avez ajoutéinstalled_feature
à la liste des modules de fonctionnalités.Groovy
android { ... dynamicFeatures = [":installed_feature", ":feature_1", ":feature_2"] // or whichever name exists for the instant enabled feature module }
Kotlin
android { ... dynamicFeatures.addAll(listOf(":installed_feature", ":feature_1", ":feature_2")) // or whichever name exists for the instant enabled feature module }
Créer, tester et publier un nouvel app bundle permettant une utilisation instantanée
Une fois les étapes de cette page terminées, votre projet est en mesure de générer une un artefact unique, un Android App Bundle, que vous pouvez utiliser pour publier à la fois installée et instantanée de votre application dans la Google Play Console, puis lancez séparément pour les canaux instantanés et installés. De plus, avec l'application vous avez la possibilité de diffuser des APK optimisés pour la configuration de l'appareil de chaque utilisateur, de sorte qu'il ne télécharge que le code et dont elles ont besoin pour exécuter votre application. Autrement dit, vous n'avez plus à construire, signer, et gérer plusieurs APK pour prendre en charge différents appareils, et les utilisateurs deviennent plus petits, des téléchargements optimisés.
Pour commencer à créer et à tester votre app bundle activé pour une appli instantanée, accédez à Créez l'app bundle.