3.5 KiB
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 :
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
sasedevRustAndroidAbisetndk.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.3redécoupé :0-pre.4est consacré aux quatre ABI,0-pre.5prendra 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 :
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 :
aarch64-linux-android
armv7-linux-androideabi
x86_64-linux-android
i686-linux-android
Pour chaque APK :
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.