65 lines
2.7 KiB
Markdown
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 |
|