Réduire la taille de votre appli instantanée

Google Play Instant offre des expériences natives riches d'un simple geste sur un lien Web. Les utilisateurs peuvent profiter de votre application sans installation préalable, ce qui permet un niveau d'engagement supérieur et une meilleure qualité. Toutefois, pour qu'une application instantanée se charge aussi rapidement qu'une page Web mobile classique, vous devez créer une application instantanée efficace et bien structurée. Plus le binaire de votre application instantanée est petit, plus son chargement est rapide et plus l'expérience utilisateur est fluide.

Ce document présente les bonnes pratiques à suivre pour gérer la structure et la taille du fichier binaire de votre application afin de proposer une expérience d'application instantanée fluide. Vous pouvez également appliquer ces mêmes pratiques pour profiter de votre application installable.

Refactoriser en plusieurs modules de fonctionnalités

La plus grande amélioration de la taille binaire de votre application est constatée lorsque vous la refactorisez en plusieurs modules de fonctionnalités. Commencez par un module de fonctionnalité de base, puis extrayez des workflows associés à un thème dans leurs propres modules de fonctionnalités. Attribuez une activité de démarrage et une URL unique à chaque module de fonctionnalité afin que les utilisateurs puissent mener à bien le workflow du module.

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

Bonnes pratiques

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

Utiliser le même codebase pour les deux types d'applications
Vous pouvez simplifier le processus de gestion de projet de votre application en utilisant le même codebase modulaire pour créer à la fois votre application installée et vos applis instantanées.
Concevoir pour plusieurs modules de fonctionnalités
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 recommandé 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 focalisez pas sur la taille maximale des modules de fonctionnalités au début
Les limites de taille des modules de fonctionnalités ne s'appliquent pas aux binaires créés localement. Vous pouvez également publier une application instantanée via le canal de test interne, qui applique une limite de 15 Mo à la taille des modules de fonctionnalités. Seules les versions alpha et production appliquent la limite de 15 Mo.

Mettre à jour les ressources de l'application

Certaines applications, en particulier celles qui ont des historiques de codebase plus longs, contiennent des ressources que les binaires de votre application n'utilisent plus. Lorsque vous cherchez à réduire la taille des modules de votre application, tenez compte des sources de code inutiles suivantes.

Réduire la taille des fichiers image

Vous pouvez réduire considérablement la taille totale des drawables de votre application en utilisant le format de fichier WebP au lieu de PNG. Google Play Instant offre une compatibilité complète avec WebP, y compris la transparence et la compression sans perte, de sorte que la qualité d'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 disponible dans plusieurs langues, réduisez autant de ressources localisées que possible. Cette étape est particulièrement utile si vous utilisez une bibliothèque de compatibilité d'application, telle que android.support.v7.appcompat. Cette bibliothèque contient des messages dans de nombreuses langues, dont certaines ne sont peut-être pas compatibles avec votre application.

Pour en savoir plus, découvrez comment supprimer les autres ressources inutilisées, en particulier les langues inutilisées.

Supprimer des fichiers en trop

Il est possible que votre application n'utilise 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 cet outil, procédez comme suit:

  1. Appuyez sur les touches 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 Ressources inutilisées pour lancer le processus d'inspection de l'utilisation des ressources.

S'il reste des ressources volumineuses dans votre application, demandez-vous s'il est possible de les décompresser et de les télécharger sous forme de fichiers autonomes après que l'utilisateur a commencé à interagir avec votre application. Ce type de report de chargement d'image nécessite généralement une modification du code, mais il peut réduire considérablement la taille du fichier de votre application instantanée en ne téléchargeant que les ressources explicitement demandées par l'utilisateur.

Supprimer les bibliothèques inutilisées

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

  • Bibliothèques natives:bibliothèques contenant du code natif que votre application instantanée n'exécute jamais.
  • Dépendances transitives:bibliothèques dont dépendent les bibliothèques importées de 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'analyseur d'APK pour comparer différents builds, y compris les builds d'appli instantanée.

Une fois que vous avez déterminé les bibliothèques dont votre application n'a pas besoin, excluez-les en ajoutant des lignes semblables aux suivantes à 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 savoir comment réduire la taille d'importation totale des dépendances de votre application, consultez le guide Gradle sur la gestion des dépendances.

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

Si vous devez encore réduire la taille, vous devrez peut-être recourir à la diffusion des éléments dans le cloud.