Files
games/deltas/0.3.3/0-pre.4.md
2026-09-21 10:47:57 +02:00

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 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 :

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.