0.1.0-2-beta.1.fix.4
This commit is contained in:
@@ -1,5 +1,5 @@
|
||||
<!-- file: docs/development/007-ANDROID_JNI_BRIDGE.md -->
|
||||
<!-- version: 2 -->
|
||||
<!-- version: 3 -->
|
||||
|
||||
# Bridge Java/JNI Android
|
||||
|
||||
@@ -14,7 +14,7 @@ L'input tactile de base ne passe pas par JNI : SDL3 fournit directement les év
|
||||
La baseline expose un unique appel Java vers Rust :
|
||||
|
||||
```text
|
||||
NativeBridge.nativeContractVersion() -> 2
|
||||
NativeBridge.nativeContractVersion() -> 3
|
||||
```
|
||||
|
||||
`SaseGameActivity` vérifie ce contrat après `SDLActivity.onCreate()`.
|
||||
@@ -48,17 +48,14 @@ Si un futur service nécessite de manipuler réellement `JNIEnv`, il devra faire
|
||||
|
||||
## Back Android
|
||||
|
||||
Le contrat v2 ajoute un pont Java/JNI explicite pour Back :
|
||||
Back n'est pas une commande JNI du jeu pour la launcher Activity racine.
|
||||
|
||||
Sur Android 16 / API 36+, `SaseGameActivity` enregistre uniquement un observer :
|
||||
|
||||
```text
|
||||
SaseGameActivity
|
||||
-> NativeBridge.requestPlatformBack()
|
||||
-> nativeRequestPlatformBack()
|
||||
-> engine-v1-sdl::request_platform_back()
|
||||
-> EngineGame::quit_requested(QuitSource::PlatformBack)
|
||||
OnBackInvokedDispatcher.PRIORITY_SYSTEM_NAVIGATION_OBSERVER
|
||||
```
|
||||
|
||||
Sur API 33+, `SaseGameActivity` enregistre un `OnBackInvokedCallback`.
|
||||
Sur les versions antérieures, `onBackPressed()` reste le fallback.
|
||||
Cet observer écrit un événement logcat mais ne consomme pas la navigation. Android conserve donc son comportement système, notamment le Back-to-home et son animation prédictive.
|
||||
|
||||
Cette voie remplace la dépendance au mapping variable du bouton Back vers `SDL_SCANCODE_AC_BACK`.
|
||||
Le moteur SDL conserve parallèlement la prise en charge de `AcBack` lorsqu'une plateforme SDL produit réellement cet événement.
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
<!-- file: docs/rules/RULES_PROJECT.md -->
|
||||
<!-- version: 9 -->
|
||||
<!-- version: 10 -->
|
||||
|
||||
# Règles spécifiques games.sasedev
|
||||
|
||||
@@ -73,5 +73,5 @@
|
||||
|
||||
- **GAME-BUILD-001** — Les artefacts générés Cargo, Tauri, Vite et caches frontend sont placés hors de la racine du dépôt, sous `../builds/sasedev-games/`; un répertoire racine `builds/` dans le dépôt est interdit.
|
||||
|
||||
- **GAME-PLATFORM-014** — Android API 33+ traite Back via `OnBackInvokedCallback`; le bridge Java/JNI doit convertir cette action en `QuitSource::PlatformBack` et laisser `EngineGame::quit_requested` décider.
|
||||
- **GAME-PLATFORM-014** — Pour une launcher Activity Android racine, Back reste une navigation système. Le projet ne doit pas enregistrer de callback consommant Back uniquement pour logger ou exécuter de la logique métier ; sur API 36+, un `PRIORITY_SYSTEM_NAVIGATION_OBSERVER` peut observer l'action sans bloquer le Back-to-home.
|
||||
- **GAME-PLATFORM-015** — Les exécutables Android initialisent le subscriber partagé et envoient les événements `tracing` vers logcat ; `stderr` n'est pas la destination Android de référence.
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
<!-- file: docs/rules/RULES_RUST.md -->
|
||||
<!-- version: 6 -->
|
||||
<!-- version: 7 -->
|
||||
|
||||
# Règles Rust générales
|
||||
|
||||
@@ -8,7 +8,7 @@
|
||||
- **RUST-BASE-001** — L'édition Rust est Rust 2024.
|
||||
- **RUST-BASE-002** — Chaque `lib.rs` et `main.rs` active `missing_docs`, `unreachable_pub` et interdit `unsafe_code`, sauf exception FFI explicitement définie par cette règle.
|
||||
- **RUST-BASE-003** — Les lints communs sont déclarés au workspace et hérités par les crates ; une crate FFI exceptée peut déclarer localement le même profil avec uniquement le niveau `unsafe_code` ajusté.
|
||||
- **RUST-BASE-004** — Les blocs `unsafe` et fonctions `unsafe` sont interdits. L’unique exception actuelle est `crates/apps/game-android-entrypoint/src/lib.rs`, autorisé à porter uniquement les attributs `#[unsafe(export_name = "SDL_main")]` , `#[unsafe(export_name = "Java_com_sasedev_games_common_NativeBridge_nativeContractVersion")]` et `#[unsafe(export_name = "Java_com_sasedev_games_common_NativeBridge_nativeRequestPlatformBack")]` nécessaires aux frontières SDL Android et JNI. Cette exception n’autorise aucun déréférencement de pointeur brut, aucun autre attribut unsafe, aucun bloc `unsafe` et aucune fonction `unsafe`.
|
||||
- **RUST-BASE-004** — Les blocs `unsafe` et fonctions `unsafe` sont interdits. L’unique exception actuelle est `crates/apps/game-android-entrypoint/src/lib.rs`, autorisé à porter uniquement les attributs `#[unsafe(export_name = "SDL_main")]` et `#[unsafe(export_name = "Java_com_sasedev_games_common_NativeBridge_nativeContractVersion")]` nécessaires aux frontières SDL Android et JNI. Cette exception n’autorise aucun déréférencement de pointeur brut, aucun autre attribut unsafe, aucun bloc `unsafe` et aucune fonction `unsafe`.
|
||||
- **RUST-BASE-005** — Tout fichier Rust possède les en-têtes `// file: ...` et `// version: N`.
|
||||
- **RUST-DEP-001** — Une dépendance tierce partagée déclare uniquement sa contrainte de version canonique sous `[workspace.dependencies]`, sauf exception normative explicitement documentée.
|
||||
- **RUST-DEP-002** — Les features d'une dépendance tierce sont activées dans le `Cargo.toml` de la crate qui en a réellement besoin, via `workspace = true`; elles ne sont pas activées globalement au workspace par commodité.
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
<!-- file: docs/testing/002-BETA_VALIDATION_MATRIX.md -->
|
||||
<!-- version: 2 -->
|
||||
<!-- version: 3 -->
|
||||
|
||||
# Matrice de validation beta 0.1.0
|
||||
|
||||
@@ -143,6 +143,13 @@ Android utilise un subscriber `tracing` dédié à logcat.
|
||||
|
||||
## Back Android 16
|
||||
|
||||
Les applications ciblent API 36. Le Back système est donc traité via `OnBackInvokedCallback` sur API 33+ puis converti en `QuitSource::PlatformBack`.
|
||||
Les applications ciblent API 36 et laissent Android exécuter la navigation Back système.
|
||||
|
||||
Le fallback `onBackPressed()` reste réservé aux versions Android antérieures.
|
||||
Pour la launcher Activity racine :
|
||||
|
||||
- aucun callback `PRIORITY_DEFAULT` ne consomme Back ;
|
||||
- `android:enableOnBackInvokedCallback="true"` reste explicitement activé ;
|
||||
- sur API 36+, `PRIORITY_SYSTEM_NAVIGATION_OBSERVER` trace l'action sans bloquer le Back-to-home ;
|
||||
- le bouton Back injecté par `adb shell input keyevent 4` constitue un smoke système valide si le contrôle graphique de l'AVD ne relaie pas correctement Back.
|
||||
|
||||
Le moteur SDL conserve `AcBack` pour les plateformes qui émettent cet événement.
|
||||
|
||||
Reference in New Issue
Block a user