v1.2.5 : builds release optimisés (R8 + shrink, 20 Mo → 2,4 Mo), APK release + debug publiés

- build release signé avec la CLÉ DEBUG (même signature → mise à jour
  par-dessus l'app installée sans perte de données) mais avec R8 full mode
  + isShrinkResources : 20 Mo → 2,4 Mo, démarrage et fluidité améliorés
- proguard-rules.pro : -keep explicites pour la réflexion Gson (data.model,
  BackupData, TConfig) — sinon export/import JSON cassé en release uniquement
- release v1.2.5 : deux APK publiés (release recommandé 2,4 Mo + debug 20 Mo)
- docs : §16.bis (deux APK par release, garde-fous R8), CHANGELOG
This commit is contained in:
Siphonight 2026-09-05 20:27:05 +02:00
parent 1a06c3c844
commit a77fd283e3
4 changed files with 43 additions and 2 deletions

View File

@ -23,11 +23,19 @@ android {
buildTypes {
release {
// Optimisations R8 + shrink des ressources (le cœur du gain debug→release)
isMinifyEnabled = true
isShrinkResources = true
proguardFiles(
getDefaultProguardFile("proguard-android-optimize.txt"),
"proguard-rules.pro"
)
// ⚠️ Signé avec la CLÉ DEBUG volontairement : l'APK release reste
// installable PAR-DESSUS l'APK debug déjà installé (même signature),
// sans désinstallation ni perte de données, tout en bénéficiant de
// R8. Si un jour on distribue largement : générer un vrai keystore
// (signature différente → migration backup→désinstall→réimport).
signingConfig = signingConfigs.getByName("debug")
}
}

View File

@ -1,2 +1,16 @@
# Keep Room entities' enum fields (auto-converters use enum names via reflection in Gson backup)
# Règles R8/ProGuard — HormoneTrack
# Build release : isMinifyEnabled + isShrinkResources actifs (v1.2.5).
# ⚠️ R8 en full mode (AGP 9) est agressif : TOUT usage de réflexion doit être
# couvert explicitement, sinon crash à l'exécution uniquement en release.
# --- Gson (backup JSON + calibration) ---
# Gson lit/écrit les champs par réflexion (noms de champs) : sans ces règles,
# l'export/import JSON produirait des objets vides ou planterait EN RELEASE SEULE.
-keepattributes Signature, InnerClasses, EnclosingMethod, *Annotation*
-keep class com.hormonetrack.data.model.** { <fields>; }
-keep class com.hormonetrack.data.backup.BackupData { <fields>; }
-keep class com.hormonetrack.pk.TConfig { <fields>; }
# Énumérations : converties en String par Room et Gson (par nom)
-keepclassmembers enum com.hormonetrack.data.model.** { *; }

View File

@ -16,6 +16,12 @@ Versionnage : [SemVer](https://semver.org/). Releases taguées dans git (`v1.2.5
- la `NavigationBar` consomme la barre de navigation système.
Le contenu remonte, les listes défilent visuellement sous la barre de statut
(comportement Material You standard).
- **Builds release optimisés** (R8 + shrink des ressources, signés avec la clé
debug → installables par-dessus sans perte de données) : l'APK passe de
**20 Mo à 2,4 Mo** et gagne en fluidité. Depuis cette release, chaque version
est publiée en deux fichiers :
- `HormoneTrack-vX.Y.Z-release.apk` ← **recommandé** (optimisé R8) ;
- `HormoneTrack-vX.Y.Z-debug.apk` (comme avant, plus lourd, pour diagnostic).
## [1.2.4] — 2026-09-05 (versionCode 7)

View File

@ -729,11 +729,24 @@ Le script :
(`[1.2.3]`) — première version du script cherchait `[vX.Y.Z]` et tombait sur
le fallback « Voir docs/CHANGELOG.md » ;
- crée la release si absente, sinon **met à jour le corps** (PATCH) ;
- attache l'APK (remplace l'asset du même nom si présent) ;
- attache l'APK (remplace l'asset du même nom si présent) — appeler le script
DEUX FOIS pour publier les deux APK (noms distincts) :
`HormoneTrack-vX.Y.Z-release.apk` (**recommandé**, R8) et
`HormoneTrack-vX.Y.Z-debug.apk` ;
- lit le token Gitea dans le trousseau macOS (`security find-internet-password`) ;
scope requis : `write:repository` (suffit pour releases + assets, pas pour
créer un repo — cf plus haut).
**Build release (v1.2.5)** : `./gradlew assembleRelease` — R8 full mode +
`isShrinkResources` + signé avec la **clé debug** (même signature que les APK
debug distribués → mise à jour par-dessus sans perte de données ; 20 Mo →
2,4 Mo). Garde-fous dans `proguard-rules.pro` : Gson lit les champs des
modèles par réflexion → `-keep` explicites sur `data.model.**`,
`BackupData`, `TConfig` (+ attributs `Signature`) — sinon l'export/import
JSON casse UNIQUEMENT en release. ⚠️ À chaque activation d'optimisation :
tester sur téléphone l'export/import de backup + les graphiques (R8 ne se
vérifie pas en tests JVM).
Notes :
- L'APK est une **build debug** signée avec la clé debug locale — installable en
sideload, mises à jour entre versions OK (même signature) ;