Application Wear OS 5 qui suit la navigation initiée par OsmAnd+ (Android).
Documentation d'architecture : documentation/architecture.md + diagrammes
PlantUML dans documentation/puml/.
Toutes les commandes suivantes sont vertes sur cette machine :
./gradlew :wear:assembleDebug # APK debug
./gradlew :wear:testDebugUnitTest # 11 tests unitaires (parseur)
./gradlew :wear:lint # lint Android
java -jar /tmp/opencode/plantuml.jar -checkonly documentation/puml/*.puml
org.jetbrains.kotlin.plugin.compose ; ne PAS ajouter
composeOptions.kotlinCompilerExtensionVersion, compilateur Compose intégré
au plugin Kotlin 2.x).~/Android/Sdk (cmdline-tools,
platforms;android-35, build-tools;35.0.0). local.properties (non
versionné) pointe dessus. Si le SDK manque : voir l'historique git, les
étapes sdkmanager sont dans le commit d'initialisation.javac, ce qui
fait échouer Gradle 8.11 sur les tâches Java. ~/.gradle/gradle.properties
(hors dépôt) définit
org.gradle.java.home=/home/aston/tools/jdk-21.0.12.1+1. Si ce chemin
disparaît, télécharger Temurin 21 via
https://api.adoptium.net/v3/binary/latest/21/ga/linux/x64/jdk/hotspot/normal/eclipse.KaCallableMemberCall). Ne pas revenir à 8.7.x.2025.08.00 (Compose 1.9.0) : c'est la version attendue
par Wear Compose 1.6.2 (qui dépend de compose.ui:1.9.0). Avec une BOM
plus ancienne (1.8.x) les versions Compose deviennent mixtes et le rendu
casse. Ne pas redescendre.SwipeDismissableNavHost, utiliser impérativement
androidx.wear.compose.navigation.composable — et NON
androidx.navigation.compose.composable. Avec le mauvais import les
destinations ne s'affichent jamais : l'app démarre sur un écran noir
(aucune exception, surface dessinée mais vide). C'était la cause du bug
d'écran noir d'octobre 2026.modifier = Modifier.fillMaxSize() à
SwipeDismissableNavHost : sans contrainte de taille explicite il peut
mesurer 0.adb exec-out screencap -p +
analyse des pixels (voir scripts/), puis comparer avec le NavHost
standard androidx.navigation.compose.NavHost qui, lui, rend correctement.Settings.ACTION_NOTIFICATION_LISTENER_SETTINGS n'existe
pas sur cette ROM (cmd package resolve-activity → No activity found).
Le bouton « Ouvrir les réglages » enchaîne donc un repli :
APPLICATION_DETAILS_SETTINGS → SETTINGS, via try/catch
ActivityNotFoundException (NotificationAccess.kt).Conséquence : sur cette montre l'utilisateur ne peut probablement pas
activer l'accès aux notifications depuis l'UI. Pour les tests, l'activer via
adb (surveiller le enabled_notification_listeners) :
adb shell cmd notification allow_listener \
fr.barteam.watchosm/fr.barteam.watchosm.data.OsmAndNotificationListener
adb shell settings get secure enabled_notification_listeners
cmd notification post ne permet pas de choisir le package émetteur : on ne
peut pas simuler une notification OsmAnd par adb pour tester le listener.
.puml) dans documentation/puml/.java -jar /tmp/opencode/plantuml.jar -checkonly documentation/puml/*.puml
(le jar, téléchargé dans /tmp/opencode/, n'est pas versionné ; le retirer
si absent, il se re-télécharge depuis
https://github.com/plantuml/plantuml/releases).wear/ (application montre autonome). Le module phone/
(compagnon Android : listener renforcé + API AIDL OsmAnd + Data Layer) est
prévu en phase 2, pas encore créé.fr.barteam.watchosm.OsmAndNotificationParser) est le seul point
fragile face aux mises à jour d'OsmAnd — toute régression de format se
corrige là, avec un test dans OsmAndNotificationParserTest.