HormoneTrack/app/proguard-rules.pro
Siphonight 76a9c0eb63 Fix #64 : « Tracé labs » vide en release seule (R8 full mode) + étape émulateur obligatoire
- 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.
2026-09-13 03:43:11 +02:00

33 lines
1.9 KiB
Prolog
Raw Blame History

This file contains invisible Unicode characters

This file contains invisible Unicode characters that are indistinguishable to humans but may be processed differently by a computer. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

# 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 { *; }