65 lines
2.9 KiB
Markdown
65 lines
2.9 KiB
Markdown
## Minifier 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 de code permet de réduire considérable la taille d'une application.
|
||
Sur Android, cet outil se décompose en quatre processus :
|
||
1. La suppression du code non utilisée (appelé aussi "Code shrinking"). Ce processus supprime en particulier le code non utilisé au sein des bibliothèques tierces incluses dans notre projet, par exemple si notre code n'utilise qu'une petite partie de celles-ci. (paramètre `isMinifyEnabled`).
|
||
2. L'optimisation. Ce processus inspecte et optimize le code pour supprimer plus en détail les parties du code qui ne sont jamais exécutés. 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é.
|
||
3. 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`. (paramètre `isMinifyEnabled`).
|
||
4. La suppression des ressources non utilisées dans notre code️ appelé aussi "Ressource shrinking" (paramètre `isShrinkResources`). Ce processus ne s'applique que si le paramètre `isMinifyEnabled` est activé.
|
||
|
||
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 doivent s'appliquer et sur quelles classes dans le fichier `proguard-rules.pro` du projet.
|
||
|
||
Cette pratique permet généralement de réduire la taille finale de l'application de moitié.
|
||
|
||
### 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 | 25 |
|