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:
parent
5ad0719105
commit
a8a9ee47c8
@ -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")
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
16
app/proguard-rules.pro
vendored
16
app/proguard-rules.pro
vendored
@ -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.** { *; }
|
||||
|
||||
@ -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)
|
||||
|
||||
|
||||
@ -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) ;
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user