0.1.0-0-pre.7-fix.1
This commit is contained in:
129
deltas/0.1.0/0-pre.7.fix.1.md
Normal file
129
deltas/0.1.0/0-pre.7.fix.1.md
Normal file
@@ -0,0 +1,129 @@
|
||||
<!-- file: deltas/0.1.0/0-pre.7.fix.1.md -->
|
||||
<!-- version: 1 -->
|
||||
|
||||
# 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 :
|
||||
|
||||
```bash
|
||||
python3 scripts/build_android_rust.py reflex
|
||||
python3 scripts/build_android_rust.py snake
|
||||
```
|
||||
|
||||
ont échoué avant cross-compilation avec :
|
||||
|
||||
```text
|
||||
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 :
|
||||
|
||||
```text
|
||||
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é :
|
||||
|
||||
```bash
|
||||
"${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.
|
||||
|
||||
```bash
|
||||
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 :
|
||||
|
||||
```bash
|
||||
python3 scripts/build_android_rust.py reflex
|
||||
python3 scripts/build_android_rust.py snake
|
||||
```
|
||||
|
||||
Vérifier :
|
||||
|
||||
```bash
|
||||
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 :
|
||||
|
||||
```bash
|
||||
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 :
|
||||
|
||||
```bash
|
||||
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`.
|
||||
Reference in New Issue
Block a user