Skip to content

Build : Suppression de android.r8.strictFullModeForKeepRules=false.#60

Open
Spriana wants to merge 1 commit into
FranckRJ:masterfrom
Spriana:build-cleanup-r8-strict-keep-rules
Open

Build : Suppression de android.r8.strictFullModeForKeepRules=false.#60
Spriana wants to merge 1 commit into
FranckRJ:masterfrom
Spriana:build-cleanup-r8-strict-keep-rules

Conversation

@Spriana

@Spriana Spriana commented Jun 26, 2026

Copy link
Copy Markdown
Contributor

Un truc de R8 dont on se fout éperdument qui a changé avec AGP 8. Claude a vérifié les logs R8 avant/après pour s’assurer qu’on puisse le retirer sans incidence.

Le mode strict des règles keep de R8 est le défaut (true) depuis AGP 8 ; ce flag, ajouté par l'assistant de migration AGP, forçait l'ancien comportement non strict. Vérifié comme sans effet sur l'artefact via un build différentiel.

Méthode : deux ./gradlew :app:assembleRelease --rerun-tasks, l'un avec le flag (strict=false), l'autre sans (strict=true par défaut), puis comparaison des sorties R8 dans app/build/outputs/mapping/release.

Résultats :

  • usage.txt (code retiré par R8) : identique.
  • configuration.txt (règles fusionnées appliquées par R8) : identique.
  • mapping.txt (renommage d'obfuscation) : identique au niveau ensemble ; les ~229 lignes de diff brut n'étaient que du réordonnancement, le set des classes renommées est rigoureusement le même (0 différence).
  • seeds.txt : seule vraie différence, 3 constructeurs androidx (RemoteActionCompat, IconCompat, CustomVersionedParcelable) perdent leur statut de seed, mais ces classes restent conservées et non renommées dans les deux cas (comptes usage.txt identiques) — simple bookkeeping, sans impact sur la sortie.

La sortie R8 étant fonctionnellement identique avec et sans le flag, et le build de release actuel fonctionnant, ce flag de compat n'a plus d'utilité.

Le mode strict des règles keep de R8 est le défaut (true) depuis AGP 8 ; ce flag, ajouté par l'assistant de migration AGP, forçait l'ancien comportement non strict. Vérifié comme sans effet sur l'artefact via un build différentiel.

Méthode : deux ./gradlew :app:assembleRelease --rerun-tasks, l'un avec le flag (strict=false), l'autre sans (strict=true par défaut), puis comparaison des sorties R8 dans app/build/outputs/mapping/release.

Résultats :
- usage.txt (code retiré par R8) : identique.
- configuration.txt (règles fusionnées appliquées par R8) : identique.
- mapping.txt (renommage d'obfuscation) : identique au niveau ensemble ; les ~229 lignes de diff brut n'étaient que du réordonnancement, le set des classes renommées est rigoureusement le même (0 différence).
- seeds.txt : seule vraie différence, 3 constructeurs androidx (RemoteActionCompat, IconCompat, CustomVersionedParcelable) perdent leur statut de seed, mais ces classes restent conservées et non renommées dans les deux cas (comptes usage.txt identiques) — simple bookkeeping, sans impact sur la sortie.

La sortie R8 étant fonctionnellement identique avec et sans le flag, et le build de release actuel fonctionnant, ce flag de compat n'a plus d'utilité.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant