Réduire la taille des applis

La taille d'une appli constitue bien souvent un frein au téléchargement, en particulier sur les marchés émergents où la connexion réseau est mauvaise et où les appareils ne disposent pas de beaucoup de bande passante. Ces contraintes peuvent entraîner une diminution du taux d'utilisation des applications, et donc réduire la portée et la couverture de votre audience. Cependant, il existe plusieurs façons de réduire la taille de votre application.

Bonnes pratiques

Importer l'application en tant qu'Android App Bundle

Le moyen le plus simple d'économiser immédiatement de l'espace lors de la publication sur Google Play consiste à importer votre application en tant qu'Android App Bundle, un nouveau format de publication qui inclut l'ensemble du code compilé et des ressources de votre appli, et reporte la génération des APK et leur signature sur Google Play.

Réduire la taille du code d'exécution

Recherchez le code que votre application n'utilise pas au moment de l'exécution, par exemple des classes volumineuses ou du code généré automatiquement. Des optimiseurs de code tels que R8 permettent d'optimiser et de réduire la taille du code, mais ils ne peuvent pas gérer le code protégé par des constantes d'exécution. Remplacez les options de vérification par des constantes au moment de la compilation pour tirer pleinement parti des divers outils d'optimisation. Vous pouvez activer la réduction des ressources et la minification du code dans votre fichier de configuration Gradle :

android {
    buildTypes {
        getByName("release") {
            isMinifyEnabled = true
            isShrinkResources = true
        }
    }
}

Supprimer les mises en page inutiles

Fusionnez les mises en page inutilisées avec des modifications mineures de l'interface utilisateur et supprimez les mises en page inutiles pour réduire la taille globale du code de l'application. De plus, vous pouvez afficher les mises en page et les vues de manière dynamique autant que possible. Cela vous permet d'éviter de dessiner des modèles statiques et d'appliquer d'autres mises en page sans surcoût technique.

Réévaluer les fonctionnalités rarement utilisées

Optimisez votre application pour Android (édition Go) en désactivant les fonctionnalités qui présentent des métriques d'utilisateurs actifs par jour (UAJ) faibles. Cela peut inclure la suppression d'animations complexes, de fichiers GIF volumineux ou d'autres ajouts esthétiques qui ne sont pas nécessaires au succès de l'application.

Utiliser Dynamic Delivery

Play Feature Delivery utilise des fonctionnalités avancées d'app bundles, qui permettent de distribuer certaines fonctionnalités de votre application de manière conditionnelle ou de les télécharger à la demande. Vous pouvez utiliser des modules de fonctionnalités pour la diffusion personnalisée. L'un des avantages uniques des modules de fonctionnalité est la possibilité de personnaliser quand et comment différentes fonctionnalités de votre application sont téléchargées sur des appareils équipés d'Android 5.0 (niveau d'API 21) ou version ultérieure.

Réduire la taille des chaînes traduisibles

Vous pouvez utiliser la propriété Android Gradle resConfigs pour supprimer les fichiers de ressources dont votre application n'a pas besoin. Si vous utilisez une bibliothèque qui inclut des ressources linguistiques (telles qu'AppCompat ou les services Google Play), votre application inclut toutes les chaînes de langue traduites pour les messages de la bibliothèque, quelle que soit la langue de traduction de l'application. Si vous souhaitez conserver uniquement les langues officiellement compatibles avec votre application, vous pouvez les spécifier à l'aide de la propriété resConfig. Toutes les ressources pour les langues non spécifiées seront supprimées.

Pour limiter vos ressources linguistiques à l'anglais et au français, vous pouvez modifier defaultConfig comme indiqué ci-dessous :


android {
    defaultConfig {
        ...
        resConfigs "en", "fr"
    }
}

Utiliser la traduction sélective

Si une chaîne n'est pas visible dans l'UI de l'application, vous n'avez pas besoin de la traduire. Les chaînes utilisées pour le débogage, les messages d'exception ou les URL doivent être des littéraux de chaîne dans le code, et non des ressources.

Par exemple, il est inutile de traduire les URL.

<string name="car_frx_device_incompatible_sol_message">
  This device doesn\'t support Android Auto.\n
  &lt;a href="https://support.google.com/androidauto/answer/6395843"&gt;Learn more&lt;/a&gt;
</string>

Vous reconnaissez sans doute &lt; et &gt, car il s'agit de caractères d'échappement pour < et >. lls sont nécessaires ici, car si vous placez une balise <a> dans une balise <string>, le compilateur de ressources Android les supprime, car il ne reconnaît pas la balise. Toutefois, cela signifie que vous traduisez les balises HTML et les URL dans 78 langues. À la place, vous pouvez supprimer le code HTML :

<string name="car_frx_device_incompatible_sol_message">
         This device doesn\'t support Android Auto.
</string>

Combiner des binaires natifs avec des dépendances courantes

Si votre application utilise différentes implémentations JNI (Java Native Interface) avec des dépendances sous-jacentes courantes, les différents fichiers binaires augmentent la taille de l'APK avec des composants redondants. Vous pouvez combiner plusieurs binaires JNI dans un seul fichier binaire JNI tout en conservant les fichiers Java et JNI séparés. Cela peut réduire considérablement la taille de votre APK.