93 lines
3.5 KiB
Markdown
93 lines
3.5 KiB
Markdown
<!-- file: deltas/0.3.3/0-pre.4.md -->
|
|
<!-- version: 1 -->
|
|
|
|
# Delta 0.3.3-0-pre.4
|
|
|
|
## Objet
|
|
|
|
Étendre le pipeline Android SDL3 natif validé en `0-pre.3` à toutes les ABI encore supportées par la toolchain moderne, sans mélanger cette preuve avec l'AAB/16 KB.
|
|
|
|
Matrice cible obligatoire :
|
|
|
|
```text
|
|
arm64-v8a
|
|
armeabi-v7a
|
|
x86_64
|
|
x86
|
|
```
|
|
|
|
Les ABI historiques `armeabi`, `mips` et `mips64` restent hors contrat car elles ont été retirées des toolchains Android modernes.
|
|
|
|
## Base et historique
|
|
|
|
Base : `0.3.3-0-pre.3`, validée par l'utilisateur le 2026-09-21 avec Temurin 25.0.4.1, Gradle 9.7.1, audits/Cargo/Clippy propres, APK universal ARM64+x86_64 pour Snake et Reflex, puis smoke Snake réussi sur AVD x86_64 et Samsung ARM64 réel.
|
|
|
|
`history/0.3.3/0-pre.3.md` consigne cette preuve avant les changements du présent delta.
|
|
|
|
## Changements
|
|
|
|
- version workspace portée à `0.3.3-0-pre.4` ;
|
|
- Snake et Reflex déclarent maintenant les quatre ABI dans `sasedevRustAndroidAbis` et `ndk.abiFilters` ;
|
|
- l'audit de distribution exige cette matrice complète pour les deux consommateurs ;
|
|
- documentation Android/build mise à jour pour distinguer couverture de packaging et disponibilité de smokes matériels ;
|
|
- plan `0.3.3` redécoupé : `0-pre.4` est consacré aux quatre ABI, `0-pre.5` prendra l'AAB, 16 KB, minSdk et la fermeture du script Python historique ;
|
|
- l'étude de cadrage conserve sa décision initiale mais ajoute explicitement la révision de scope décidée après `0-pre.3`.
|
|
|
|
Aucune modification n'est nécessaire dans `Android/gradle/sasedev-rust-android.gradle` : cette logique possédait déjà le mapping des quatre ABI et génère une tâche par ABI configurée.
|
|
|
|
## Validation attendue
|
|
|
|
Depuis la racine, sans imposer `JAVA_HOME` :
|
|
|
|
```bash
|
|
java -version
|
|
(cd Android && gradle --version)
|
|
rustup target list --installed
|
|
|
|
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 Web deltas history
|
|
python3 scripts/audit_distribution_layout.py
|
|
cargo check --workspace
|
|
cargo clippy --workspace --all-targets --all-features -- -D warnings
|
|
|
|
(cd Android && gradle :game-snake-poc:assembleDebug)
|
|
(cd Android && gradle :game-reflex-poc:assembleDebug)
|
|
```
|
|
|
|
Les targets Rust nécessaires sont :
|
|
|
|
```text
|
|
aarch64-linux-android
|
|
armv7-linux-androideabi
|
|
x86_64-linux-android
|
|
i686-linux-android
|
|
```
|
|
|
|
Pour chaque APK :
|
|
|
|
```bash
|
|
for game in game-snake-poc game-reflex-poc; do
|
|
APK="$(find "Android/${game}/build/outputs/apk/debug" \
|
|
-maxdepth 1 -type f -name '*.apk' -print -quit)"
|
|
|
|
test -n "$APK"
|
|
printf 'APK=%s\n' "$APK"
|
|
unzip -Z1 "$APK" | grep '^lib/' | sort
|
|
|
|
for abi in arm64-v8a armeabi-v7a x86_64 x86; do
|
|
unzip -Z1 "$APK" | grep -Fx "lib/${abi}/libSDL3.so"
|
|
unzip -Z1 "$APK" | grep -Fx "lib/${abi}/libgame_android_entrypoint.so"
|
|
done
|
|
done
|
|
```
|
|
|
|
La gate échoue si une des huit entrées natives par application manque. Aucun smoke 32 bits n'est revendiqué sans appareil/AVD 32 bits disponible. Les smokes déjà validés ARM64/x86_64 ne sont pas invalidés par l'ajout de la matrice 32 bits.
|
|
|
|
## Suite
|
|
|
|
Si les deux builds et l'inspection des quatre ABI sont propres, ouvrir `0.3.3-0-pre.5` pour le chemin release/AAB, le contrôle 16 KB, la consolidation minSdk et la suppression de `scripts/build_android_rust.py` lorsque toutes ses responsabilités sont effectivement remplacées.
|
|
|
|
Toute défaillance spécifique à cette tranche produit `0.3.3-0-pre.4.fix.N` avant `0-pre.5`.
|