Files
games/deltas/0.1.0/0-pre.7.fix.1.md

3.5 KiB

Delta 0.1.0-0-pre.7.fix.1

Base

Base déclarée : 0.1.0-0-pre.7, non validée intégralement.

Validation du delta précédent

L'utilisateur a exécuté les validations de 0.1.0-0-pre.7 le 2026-09-16.

Résultats propres :

  • cargo fmt --all ;
  • cargo fmt --all -- --check ;
  • audit Rust/workspace ;
  • audit Markdown : 1 table(s), 51 file(s) ;
  • cargo check --workspace ;
  • cargo clippy --workspace --all-targets --all-features -- -D warnings ;
  • cargo test -p game-android-entrypoint --no-default-features ;
  • cargo-ndk 4.1.2 installé ;
  • target Rust aarch64-linux-android installé ;
  • builds Gradle Reflex et Snake propres.

Échec du build natif Android

Les deux commandes :

python3 scripts/build_android_rust.py reflex
python3 scripts/build_android_rust.py snake

ont échoué avant cross-compilation avec :

jni/arm64-v8a/libSDL3.so is missing from Android/libs/SDL3-3.4.16.aar

La cause est une hypothèse incorrecte du script.

L'AAR SDL3 officiel expose ses bibliothèques natives via Prefab, sous une structure de type :

prefab/modules/SDL3/libs/android.arm64-v8a/libSDL3.so

et non obligatoirement sous jni/arm64-v8a/.

Correctif

Le script build_android_rust.py :

  • recherche d'abord la structure Prefab officielle ;
  • conserve un fallback jni/<abi>/libSDL3.so ;
  • sait détecter une unique variante compatible sous */libs/android.<abi>/libSDL3.so ;
  • extrait libSDL3.so dans le répertoire de liaison temporaire ;
  • stage aussi libSDL3.so dans le jniLibs/<abi>/ de l'application ;
  • vérifie après cargo ndk que libgame_android_entrypoint.so existe réellement.

Les versionName Android passent à 0.1.0-0-pre.7.fix.1.

ADB et NDK

L'absence initiale de adb n'est pas considérée comme un défaut du projet.

Préflight recommandé :

"${ANDROID_HOME}/cmdline-tools/latest/bin/sdkmanager" "ndk;28.2.13676358" "platform-tools"
export PATH="${ANDROID_HOME}/platform-tools:${PATH}"
adb version

Le NDK r28c correspond à 28.2.13676358.

Validation à exécuter par l'utilisateur

Le fix modifie un script Python et des fichiers Gradle, mais aucun fichier Rust.

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

Build natif :

python3 scripts/build_android_rust.py reflex
python3 scripts/build_android_rust.py snake

Vérifier :

test -f Android/game-reflex-poc/src/main/jniLibs/arm64-v8a/libSDL3.so
test -f Android/game-reflex-poc/src/main/jniLibs/arm64-v8a/libgame_android_entrypoint.so
test -f Android/game-snake-poc/src/main/jniLibs/arm64-v8a/libSDL3.so
test -f Android/game-snake-poc/src/main/jniLibs/arm64-v8a/libgame_android_entrypoint.so

Puis :

cd Android
gradle :game-reflex-poc:assembleDebug
gradle :game-snake-poc:assembleDebug
cd ..

Le smoke appareil est demandé seulement si adb et un appareil/émulateur sont disponibles :

adb devices

puis installation/lancement des deux APK.

Règle de transition

Si les gates légères, les deux builds Rust Android et les deux APK sont propres, 0.1.0-0-pre.7.fix.1 peut être validé même sans appareil disponible.

Si un appareil/émulateur est disponible, le premier smoke runtime Android doit également être exécuté avant de passer à 0.1.0-0-pre.8.

En cas d'échec imputable au projet, produire 0.1.0-0-pre.7.fix.2.