## Minifier et optimiser le code ### Identifiants // TODO ### Catégories | Cycle de vie | Tiers | Responsable | |:-------------:|:----:|:----:| | 4. Production | Utilisateur/Terminal | Développeur/Développeuse | ### Indications | Degré de priorité | Mise en oeuvre | Impact écologique | |:-------------------:|:-------------------------:|:---------------------:| | 4 | 3 | 4 | | Ressources Economisées | |:----------------------:| | Processeur / Mémoire vive / Stockage | ### Description Utiliser un outil de minification et d'optimisation de code permet de réduire considérable la taille de l'application. Sur android, cet outil se décompose en quatre processus : -La minification, qui consiste à supprimer les espaces inutiles, les commentaires, les sauts de ligne, les délimiteurs de blocs et ainsi réduire la taille de l'application finale. - La suppression des ressources non utilisées dans notre code mais également dans les bibliothèques tierces incluses dans notre projet, par exemple si notre code n'utilise qu'une petite partie de celles-ci. - L'obfuscation. Ce processus réduit le nom des classes et de ses membres, augmentant la sécurité et réduisant par la même occasion la taille des fichiers. Par exemple la classe : `com.monpackage.MaClass` devient une fois compilée : `a.a.B` - L'optimisation. Ce processus inspecte et optimize le code pour supprimer le code qui n'est jamais exécutée. Par exemple il peut détecter que la branche `else` d'une condition n'est jamais empruntée, et donc la supprimer du code compilé. Pour activer et configurer ces processus, il faut activer les paramètres `isShrinkResources` et `isMinfyEnabled` dans le fichier Gradle de l'application, dans les paramètres du build qui sera déployé. Au-delà de ses paramètres, il faut ensuite spécifier les processus qui doivent s'appliquer et sur quelles classes dans le fichier `proguard-rules.pro` du projet. ### Exemple ```kotlin android { buildTypes { getByName("release") { // Enables code shrinking, obfuscation, and optimization for the release build type isMinifyEnabled = true // Enables resource shrinking, which is performed by the Android Gradle plugin. isShrinkResources = true // Includes the default ProGuard rules files proguardFiles( getDefaultProguardFile("proguard-android-optimize.txt"), "proguard-rules.pro" ) } } ... } ``` ### Principe de validation | Le nombre ... | est inférieur ou égal à | |------------------------------------|:-----------------------:| | de fichiers non minifiés/optimisés | 25 |