mobile-best-practice/chapters/MBP_010_fr.md

65 lines
2.7 KiB
Markdown

## 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 |