Réduire la taille de votre appli 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.

Google Play Instant propose des expériences natives enrichissantes via un simple lien. Les utilisateurs peuvent essayer votre application sans l'installer au préalable, ce qui permet d'améliorer le niveau et la qualité de l'engagement. Toutefois, pour qu'une appli instantanée se charge aussi rapidement qu'une page Web mobile classique, vous devez créer une appli instantanée efficace et bien structurée. Plus le binaire de votre appli instantanée est petit, plus elle se charge rapidement et plus l'expérience utilisateur est fluide.

Ce document présente les bonnes pratiques pour gérer la structure et la taille binaire de votre application afin d'offrir une expérience fluide avec l'appli instantanée. Vous pouvez également appliquer ces pratiques à votre application installable.

Refactoriser en plusieurs modules de fonctionnalité

La plus grande amélioration de la taille binaire de votre application se produit lorsque vous la refactorisez en plusieurs modules de fonctionnalité. Commencez par un module de fonctionnalité de base , puis extrayez les workflows thématiques dans leurs propres modules de fonctionnalité. Attribuez une activité de démarrage et une URL unique à chaque module de fonctionnalité afin que les utilisateurs puissent effectuer le workflow du module.

Lorsque vous créez des modules de fonctionnalité, veillez à ce que le module de fonctionnalité de base soit aussi petit que possible. En particulier, portez une attention particulière aux parties de votre application qui nécessitent un accès à vos bibliothèques dépendantes. Si un seul module de fonctionnalité utilise une bibliothèque donnée, importez cette bibliothèque dans le module de fonctionnalité lui-même, et non dans le module de fonctionnalité de base. N'oubliez pas que, pour publier une appli instantanée pour un module de fonctionnalité particulier, la taille totale de ce module de fonctionnalité et du module de fonctionnalité de base doit être inférieure à 15 Mo.

Bonnes pratiques

Lorsque vous refactorisez votre application, gardez à l'esprit les bonnes pratiques suivantes :

Utiliser la même codebase pour les deux types d'applications
Vous pouvez simplifier le processus de gestion de projet de votre application en utilisant la même codebase modulaire pour créer à la fois votre application installée et vos applis instantanées.
Concevoir pour plusieurs modules de fonctionnalité
Même si votre application ne comporte qu'un seul workflow et ne nécessite qu'un seul module de fonctionnalité pour le moment, il est toujours judicieux de concevoir pour plusieurs modules de fonctionnalité. De cette façon, vous pouvez ajouter des modules existants à votre application sans affecter la taille du module de fonctionnalité d'origine.
Ne vous concentrez pas sur la limite de taille du module de fonctionnalité au début
Les limites de taille des modules de fonctionnalité ne s'appliquent pas aux binaires créés localement. Vous pouvez également publier une appli instantanée via le canal de test interne, qui applique une limite de 15 Mo à la taille des modules de fonctionnalité. Seuls les canaux alpha et production appliquent la limite de 15 Mo.

Mettre à jour les ressources de l'application

Certaines applications, en particulier celles dont l'historique de codebase est plus long, contiennent des ressources que les binaires de votre application n'utilisent plus. Lorsque vous cherchez des moyens de réduire la taille des modules de votre application, tenez compte des sources courantes de code inutiles suivantes.

Réduire la taille des fichiers image

Vous pouvez réduire considérablement la taille totale des éléments drawables de votre application en utilisant le format de fichier WebP au lieu de PNG. Google Play Instant est entièrement compatible avec WebP, y compris la transparence et la compression sans perte, de sorte que la qualité de l'image reste la même.

Si possible, supprimez toutes les exigences de rétrocompatibilité pour l'utilisation d'autres images PNG. Si vous devez utiliser des images PNG, placez-les dans le module utilisé pour créer et installer votre application.

Supprimer les langues inutilisées

Si votre application est compatible avec plusieurs langues, réduisez autant que possible les ressources localisées. Cette étape est particulièrement utile si vous utilisez une bibliothèque "app compat", telle que android.support.v7.appcompat. Cette bibliothèque inclut des messages dans de nombreuses langues, dont certaines ne sont peut-être pas compatibles avec votre application.

Pour en savoir plus, consultez la section Supprimer les autres ressources non utilisées, en particulier les langues inutilisées.

Supprimer les fichiers supplémentaires

Votre application n'utilise peut-être plus certaines des ressources que vous avez importées dans votre projet. Pour vous aider à supprimer ces ressources, Android Studio dispose d'une vérification Lint pour cette situation spécifique. Pour utiliser l'outil, procédez comme suit :

  1. Appuyez sur Ctrl+Alt+Maj+I (Cmd+Alt+Maj+I sous Mac OS).
  2. Dans la boîte de dialogue qui s'affiche, saisissez "unused resources".
  3. Sélectionnez l'option Unused resources (Ressources inutilisées) pour lancer le processus d'inspection de l'utilisation des ressources.

Si des ressources volumineuses restent dans votre application, déterminez s'il est possible de les décompresser et de les télécharger en tant que fichiers autonomes une fois que l'utilisateur commence à interagir avec votre application. Ce type de report du chargement d'images nécessite généralement une modification du code, mais il peut réduire considérablement la taille du fichier de votre appli instantanée en ne téléchargeant que les ressources qu'un utilisateur demande explicitement.

Supprimer les bibliothèques inutilisées

À mesure qu'une application prend de l'ampleur, elle peut accumuler un nombre surprenant de dépendances, en particulier l'un des types suivants :

  • Bibliothèques natives : bibliothèques contenant du code natif que votre appli instantanée n'exécute jamais.
  • Dépendances transitives : bibliothèques dont dépendent les bibliothèques importées par votre application.

Android Studio dispose de plusieurs outils utiles pour identifier les dépendances superflues dans le projet de votre application :

Bibliothèques externes

La vue Project (Projet) d'Android Studio inclut une section External Libraries (Bibliothèques externes).

Cette section contient toutes les bibliothèques utilisées par votre application, y compris le code natif et toutes les dépendances transitives. Dans cette vue, recherchez les bibliothèques inutilisées ou en double dont votre application n'a pas besoin.

Analyseur d'APK

Vous pouvez utiliser l'outil analyseur d'APK pour comparer différentes builds, y compris les builds d'applis instantanées.

Une fois que vous avez déterminé les bibliothèques dont votre application n'a pas besoin, excluez-les en ajoutant des lignes semblables à celles ci-dessous à votre fichier de compilation Gradle :

<feature_module>/build.gradle

Groovy

dependencies {
    implementation('some-important-but-large-library') {
        exclude group: 'com.example.imgtools', module: 'native'
    }
}

Kotlin

dependencies {
    implementation('some-important-but-large-library') {
        exclude(group = "com.example.imgtools", module = "native")
    }
}

Pour en savoir plus sur la réduction de la taille totale d'importation des dépendances de votre application, consultez le guide de Gradle sur la gestion des dépendances.

Implémenter la livraison d'éléments dans le cloud

Si vous devez réduire davantage la taille, vous devrez peut-être vous appuyer sur la livraison d'éléments dans le cloud.