Skip to content

Build : Passage aux R classes non transitives (suppression de android.nonTransitiveRClass=false).#61

Open
Spriana wants to merge 1 commit into
FranckRJ:masterfrom
Spriana:build-cleanup-nontransitive-rclass
Open

Build : Passage aux R classes non transitives (suppression de android.nonTransitiveRClass=false).#61
Spriana wants to merge 1 commit into
FranckRJ:masterfrom
Spriana:build-cleanup-nontransitive-rclass

Conversation

@Spriana

@Spriana Spriana commented Jun 26, 2026

Copy link
Copy Markdown
Contributor

Modification de juste deux lignes nécessaire pour passer au futur voulu par AGP. Slack a un article sympa sur les R classes non transitives, mais leur app n’a rien à voir en scope avec RespawnIRC. Pas d’amélioration du temps de build pour RespawnIRC car il n’y a qu’un module.

Le flag android.nonTransitiveRClass=false, ajouté par l'assistant de migration AGP, forçait des R classes transitives ; le non transitif est le défaut depuis AGP 8. Le seul code qui en dépendait référençait un attribut de bibliothèque via le R de l'app : R.attr.colorPrimary dans AbsThemedActivity, colorPrimary étant déclaré par appcompat et non par l'app.

Migration : R.attr.colorPrimary -> androidx.appcompat.R.attr.colorPrimary (2 occurrences, lignes 37 et 39). Même ID de ressource (un seul attribut colorPrimary dans les ressources fusionnées, l'app n'en déclare aucun), donc comportement runtime identique.

Vérifications :

  • L'app ne déclare aucun attribut colorPrimary, ni dans les ressources actuelles (aucun ni declare-styleable) ni dans tout l'historique git.
  • En mode non transitif, la compilation ne cassait qu'à ces 2 références (énumération exhaustive par le compilateur).
  • :app:assembleRelease (compilation + R8 + packaging) réussit en mode non transitif.

….nonTransitiveRClass=false).

Le flag android.nonTransitiveRClass=false, ajouté par l'assistant de migration AGP, forçait des R classes transitives ; le non transitif est le défaut depuis AGP 8. Le seul code qui en dépendait référençait un attribut de bibliothèque via le R de l'app : R.attr.colorPrimary dans AbsThemedActivity, colorPrimary étant déclaré par appcompat et non par l'app.

Migration : R.attr.colorPrimary -> androidx.appcompat.R.attr.colorPrimary (2 occurrences, lignes 37 et 39). Même ID de ressource (un seul attribut colorPrimary dans les ressources fusionnées, l'app n'en déclare aucun), donc comportement runtime identique.

Vérifications :
- L'app ne déclare aucun attribut colorPrimary, ni dans les ressources actuelles (aucun <attr name="colorPrimary"> ni declare-styleable) ni dans tout l'historique git.
- En mode non transitif, la compilation ne cassait qu'à ces 2 références (énumération exhaustive par le compilateur).
- :app:assembleRelease (compilation + R8 + packaging) réussit en mode non transitif.

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