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
4210e5b21e
commit
1900cb377d
@ -23,11 +23,19 @@ android {
|
|||||||
|
|
||||||
buildTypes {
|
buildTypes {
|
||||||
release {
|
release {
|
||||||
|
// Optimisations R8 + shrink des ressources (le cœur du gain debug→release)
|
||||||
isMinifyEnabled = true
|
isMinifyEnabled = true
|
||||||
|
isShrinkResources = true
|
||||||
proguardFiles(
|
proguardFiles(
|
||||||
getDefaultProguardFile("proguard-android-optimize.txt"),
|
getDefaultProguardFile("proguard-android-optimize.txt"),
|
||||||
"proguard-rules.pro"
|
"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.** { *; }
|
-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.
|
- la `NavigationBar` consomme la barre de navigation système.
|
||||||
Le contenu remonte, les listes défilent visuellement sous la barre de statut
|
Le contenu remonte, les listes défilent visuellement sous la barre de statut
|
||||||
(comportement Material You standard).
|
(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)
|
## [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
|
(`[1.2.3]`) — première version du script cherchait `[vX.Y.Z]` et tombait sur
|
||||||
le fallback « Voir docs/CHANGELOG.md » ;
|
le fallback « Voir docs/CHANGELOG.md » ;
|
||||||
- crée la release si absente, sinon **met à jour le corps** (PATCH) ;
|
- 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`) ;
|
- lit le token Gitea dans le trousseau macOS (`security find-internet-password`) ;
|
||||||
scope requis : `write:repository` (suffit pour releases + assets, pas pour
|
scope requis : `write:repository` (suffit pour releases + assets, pas pour
|
||||||
créer un repo — cf plus haut).
|
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 :
|
Notes :
|
||||||
- L'APK est une **build debug** signée avec la clé debug locale — installable en
|
- L'APK est une **build debug** signée avec la clé debug locale — installable en
|
||||||
sideload, mises à jour entre versions OK (même signature) ;
|
sideload, mises à jour entre versions OK (même signature) ;
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user