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
<a href="https://support.google.com/androidauto/answer/6395843">Learn more</a>
</string>
Vous reconnaissez sans doute <
et >
, 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.