3.5 KiB
Delta 0.1.0-0-pre.8
Base
Base validée : 0.1.0-0-pre.7.fix.1.
Validation du delta précédent
0.1.0-0-pre.7.fix.1 a été validée le 2026-09-16.
Les gates légères, les deux builds Rust Android, la présence des bibliothèques natives et les deux builds APK sont propres.
adb est installé et fonctionnel, mais aucun appareil ou émulateur n'était attaché. Le smoke runtime Android n'était donc pas requis pour accepter ce jalon.
Objectifs
- introduire un input tactile portable dans le moteur ;
- utiliser les événements SDL3 Android plutôt qu'un bridge JNI pour les touch events ;
- rendre le bridge Java/JNI minimal réellement vérifiable ;
- conserver une exception FFI Rust strictement bornée.
Input tactile
engine-v1-common introduit PointerState :
- état actif/inactif ;
- coordonnées normalisées
xety; - bornage dans
[0.0, 1.0].
InputState transporte désormais ce pointeur.
engine-v1-sdl maintient l'état tactile entre les frames :
FingerDownetFingerMotionactivent/mettent à jour le pointeur ;FingerUpetFingerCanceledle désactivent ;- un pointeur actif active également
GameAction::Primarydans cette baseline.
Bridge Java/JNI
NativeBridge expose :
public static native int nativeContractVersion();
La bibliothèque Rust exporte le symbole JNI correspondant et retourne 1.
SaseGameActivity.onCreate() appelle NativeBridge.requireCompatibleContract() après l'initialisation SDL.
Le bridge est ainsi réellement vérifié au premier lancement Android disponible.
Exception FFI
L'exception Rust du crate game-android-entrypoint autorise désormais exactement deux exports :
SDL_main;Java_com_sasedev_games_common_NativeBridge_nativeContractVersion.
Les blocs unsafe, fonctions unsafe, déréférencements de pointeurs bruts et autres attributs unsafe restent interdits.
Validation Rust à exécuter
Le delta modifie du Rust :
cargo fmt --all
cargo fmt --all -- --check
python3 scripts/audit_rust_workspace_rules.py
python3 scripts/audit_markdown_tables.py README.md RULES.md ROADMAP.md CHANGELOG.md docs prompts crates Android deltas history
cargo check --workspace
cargo clippy --workspace --all-targets --all-features -- -D warnings
Tests ciblés :
cargo test -p engine-v1-common --all-targets --all-features
cargo test -p engine-v1-sdl --all-targets --all-features
cargo test -p game-android-entrypoint --no-default-features
Validation Android
Reconstruire les bibliothèques natives :
python3 scripts/build_android_rust.py reflex
python3 scripts/build_android_rust.py snake
Puis les APK :
cd Android
gradle :game-reflex-poc:assembleDebug
gradle :game-snake-poc:assembleDebug
cd ..
Smoke appareil
Si un appareil ou émulateur est attaché :
adb devices
installer puis lancer les deux applications.
Critères supplémentaires de ce delta :
- aucun
UnsatisfiedLinkErrorsurNativeBridge.nativeContractVersion; - aucune erreur de contrat JNI ;
- un contact tactile ne provoque aucun crash ;
- SDL3 continue à recevoir les événements tactiles.
Si aucun device n'est disponible, les builds peuvent valider le delta mais le smoke runtime reste explicitement en attente dans l'historique.
Règle de transition
Si les gates Rust et Android sont propres, passer automatiquement à 0.1.0-0-pre.9.
En cas d'échec imputable au projet, produire 0.1.0-0-pre.8.fix.1.