Corrige l'échec de build APK : setKeepOnScreenCondition n'existe pas côté natif - #26
Merged
Merged
Conversation
…côté natif CI cassée sur main (compileReleaseJavaWithJavac) : "cannot find symbol: method setKeepOnScreenCondition" sur SplashScreen. Cette méthode n'existe que sur androidx.core.splashscreen.SplashScreen (bibliothèque de compatibilité) — jamais sur android.window.SplashScreen, la classe native utilisée jusqu'ici (contrainte "pas d'AndroidX" du projet). Confusion entre les deux API lors de l'implémentation initiale, vérifiée après coup auprès de la documentation Android officielle. Remplacé par ViewTreeObserver.OnPreDrawListener sur la vue de contenu (findViewById(android.R.id.content), juste après setContentView) : reporter le dessin de la toute première frame de l'activité reporte de fait la disparition du splash, quelle que soit l'API — c'est la technique native documentée par Android pour ce cas d'usage précis (attente d'un chargement asynchrone avant la première frame), sans classe ni attribut spécifiques à l'API 31+, contrairement à la tentative précédente. Documentation corrigée dans docs/ANDROID_PACKAGING.md et docs/spec/packaging-lancement.md pour refléter le mécanisme réel. Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_012rz3jgonqVHP4fzQsJh8oP
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Summary
maina un build APK cassé depuis PR #25 :compileReleaseJavaWithJavacéchoue avecCause :
setKeepOnScreenConditionn'existe que surandroidx.core.splashscreen.SplashScreen(bibliothèque de compatibilité) —jamais sur
android.window.SplashScreen, la classe native que ce projetutilise (contrainte « pas d'AndroidX », voir
docs/ANDROID_PACKAGING.md).Confusion entre les deux API lors de l'implémentation de PR #25, repérée
seulement au build réel (non exécutable dans le sandbox de développement).
Vérifié après coup auprès de la documentation Android officielle.
Fix : remplace ce mécanisme par
ViewTreeObserver.OnPreDrawListenersurla vue de contenu (
findViewById(android.R.id.content), posé juste aprèssetContentView) — reporter le dessin de la toute première frame del'activité reporte de fait la disparition du splash, quelle que soit l'API.
C'est la technique native documentée par Android pour ce cas d'usage
précis (attente d'un chargement asynchrone avant la première frame), sans
classe ni attribut spécifiques à l'API 31+ — fonctionne identiquement à
toutes les API, contrairement à la tentative précédente qui nécessitait une
garde de version.
La condition de report reste un champ
uiReady(AtomicBoolean) mis àtrueparWebViewClient.onPageFinished(+view.invalidate()pour forcerune nouvelle passe de dessin et faire réévaluer le listener) — donc jusqu'à
ce que la première page ait réellement fini de charger dans la WebView, pas
seulement jusqu'à la réponse du serveur.
L'icône animée du splash (PR #25,
AnimatedVectorDrawable) n'est pastouchée par ce correctif — elle ne dépendait pas de ce mécanisme.
Documentation corrigée dans
docs/ANDROID_PACKAGING.mdetdocs/spec/packaging-lancement.mdpour refléter le mécanisme réel, avec lepiège tracé explicitement pour ne pas le retrancher deux fois.
Test plan
pytest(suite complète, 413 tests) — vert (changement Java uniquement)setKeepOnScreenConditionne subsiste comme code réel (uniquement en commentaire explicatif du piège)developer.android.com/develop/ui/views/launch/splash-screen) avant implémentation, pour éviter une seconde erreur du même typecd android && ./gradlew assembleDebug) pour confirmer que la compilation passe et que le splash reste visible pendant le démarrage — c'est le point critique à vérifier en priorité, puisque c'est cette étape qui a révélé l'erreur initiale🤖 Generated with Claude Code
Generated by Claude Code