- proguard-rules.pro : -keep class LabTrajectoryModel { *; } — le mapping
R8 montrait R8$$REMOVED$$CLASS (inlining du calcul + du synthétique
$default dans le producer) : courbe vide en release, debug et 191 tests
JVM aveugles. Validé émulateur §16.ter sur l'APK release re-buildé
(données réelles seedées) : ancrée + prolongée + avertissement + 0 crash.
- Checklist §16 : NOUVELLE étape 3.bis — validation émulateur sur l'APK
RELEASE obligatoire AVANT le tag (leçon #64 : jamais oublier le
simulateur) + procédure de re-tag si fix avant publication.
- §14 : bug #64 complet (symptôme, diagnostic mapping, fix) ; §2 et
CHANGELOG mis à jour.
33 lines
1.9 KiB
Prolog
33 lines
1.9 KiB
Prolog
# 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.data.backup.UserSettings { <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.** { *; }
|
||
|
||
# --- Moteur PK : « Tracé labs » (v1.6.0, bug #64 — trouvé en émulateur) ---
|
||
# Symptôme : en RELEASE SEULE, la courbe « Tracé labs » restait vide (ni
|
||
# dessinée ni légendée) alors que le même calcul fonctionne en debug et
|
||
# donne 276 points sur les mêmes données (régression web-miroir). Cause
|
||
# Prouvée au mapping R8 : `LabTrajectoryModel -> R8$$REMOVED$$CLASS$$...` —
|
||
# R8 full mode a SUPPRIMÉ la classe en inlinant computeLabAnchoredCurve
|
||
# (et son synthétique $default des paramètres par défaut) dans le call
|
||
# site du producer Compose ; le résultat n'y était plus correct. FIX :
|
||
# garder la classe ENTIÈRE — c'est le cœur scientifique de l'app (fonctions
|
||
# pures, zéro réflexion) : coût = quelques Ko de dex non compactés.
|
||
# ⚠️ Toute nouvelle fonctionnalité du pk/ qui « ne marche qu'en debug » :
|
||
# vérifier le mapping (`app/build/outputs/mapping/release/mapping.txt`)
|
||
# et étendre cette garde si besoin.
|
||
-keep class com.hormonetrack.pk.LabTrajectoryModel { *; }
|