3.7 KiB
Historique 0.3.3-0-pre.5
Statut
0.3.3-0-pre.5 a été validé par l'utilisateur le 2026-09-21. La tranche ferme le chemin Android natif historique : Gradle possède les variantes Debug/Release, les AAB quatre ABI sont produits, minSdk 21 dispose d'une preuve runtime, la compatibilité 16 KB 64 bits est vérifiée et scripts/build_android_rust.py est supprimé.
Aucun 0-pre.5.fix.N n'est requis. La suite ouvre 0.3.3-2-beta.1.
Toolchain réellement validée
OpenJDK / Temurin 25.0.4.1 LTS
Gradle 9.7.1
AGP 9.4.0
NDK 28.2.13676358 / r28c
Le pipeline utilise le JDK et le Gradle de l'environnement ; aucun JAVA_HOME JDK 17 ni wrapper Gradle natif n'est requis.
Gates statiques et Rust
La première exécution de l'audit de distribution a détecté deux anciens répertoires générés laissés localement par le chemin historique :
Android/game-reflex-poc/src/main/jniLibs
Android/game-snake-poc/src/main/jniLibs
Ils ont été supprimés puis l'audit a été rejoué avec succès :
Distribution layout audit: clean (49 required path(s), 8 forbidden path(s) absent)
Les autres gates fournies sont propres :
General Rust rule audit: clean
Rust export completeness audit: 0 candidate(s)
games.sasedev workspace audit: clean
Markdown table audit: clean (5 table(s), 241 file(s))
cargo fmt --all: clean
cargo fmt --all -- --check: clean
cargo check --workspace: clean
cargo clippy --workspace --all-targets --all-features -- -D warnings: clean
L'échec initial de layout provenait donc de résidus locaux non versionnés, pas d'un retour du builder Python dans le delta.
Release et AAB quatre ABI
Les commandes suivantes terminent avec BUILD SUCCESSFUL :
:game-snake-poc:bundleRelease
:game-reflex-poc:bundleRelease
Pour les deux jeux, Gradle exécute les builds Rust Release pour :
arm64-v8a
armeabi-v7a
x86_64
x86
Les deux AAB contiennent exactement les couples attendus sous base/lib/<abi>/ :
libSDL3.so
libgame_android_entrypoint.so
pour chacune des quatre ABI.
Packaging et pages 16 KB
zipalign -c -P 16 -v 4 réussit sur les APK Debug Snake et Reflex.
Les contrôles ELF Debug et Release montrent :
arm64-v8a -> LOAD align 2**14
x86_64 -> LOAD align 2**14
armeabi-v7a -> LOAD align 2**12
x86 -> LOAD align 2**12
pour SDL3 et libgame_android_entrypoint.so.
Le critère 16 KB est appliqué aux ABI/appareils 64 bits, conformément à l'exigence Google Play. Les alignements 2**12 des ABI 32 bits ne constituent donc pas un échec.
Preuve Android 5.0 / API 21
Un AVD basé sur :
system-images/android-21/google_apis/x86/
retourne :
API 21
ABI x86
KernelPageSize 4 kB
L'APK Snake universal est installé avec succès et SnakeActivity démarre. minSdk 21 dispose donc d'une preuve runtime réelle sur x86 32 bits.
Preuve Android 15 / 16 KB
Un AVD basé sur :
system-images/android-35/google_apis_playstore_ps16k/x86_64/
retourne :
API 35
ABI x86_64
getconf PAGE_SIZE = 16384
L'APK Snake s'installe, SnakeActivity démarre et pidof com.sasedev.games.snake retourne un PID actif.
Une lecture séparée de /proc/self/smaps retourne KernelPageSize: 4 kB pour le mapping inspecté. Cette valeur n'est pas utilisée comme mesure du mode global du device ; la preuve de taille de page de l'environnement repose sur getconf PAGE_SIZE=16384.
Conséquence
Le scope d'implémentation 0-pre.* est fermé. La beta peut se concentrer sur la validation large, la reproductibilité du packaging quatre ABI et les smokes de référence sans introduire de nouvelle fonctionnalité.