0.3.3-2-beta.1
This commit is contained in:
137
history/0.3.3/0-pre.5.md
Normal file
137
history/0.3.3/0-pre.5.md
Normal file
@@ -0,0 +1,137 @@
|
||||
<!-- file: history/0.3.3/0-pre.5.md -->
|
||||
<!-- version: 1 -->
|
||||
|
||||
# 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
|
||||
|
||||
```text
|
||||
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 :
|
||||
|
||||
```text
|
||||
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 :
|
||||
|
||||
```text
|
||||
Distribution layout audit: clean (49 required path(s), 8 forbidden path(s) absent)
|
||||
```
|
||||
|
||||
Les autres gates fournies sont propres :
|
||||
|
||||
```text
|
||||
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` :
|
||||
|
||||
```text
|
||||
:game-snake-poc:bundleRelease
|
||||
:game-reflex-poc:bundleRelease
|
||||
```
|
||||
|
||||
Pour les deux jeux, Gradle exécute les builds Rust Release pour :
|
||||
|
||||
```text
|
||||
arm64-v8a
|
||||
armeabi-v7a
|
||||
x86_64
|
||||
x86
|
||||
```
|
||||
|
||||
Les deux AAB contiennent exactement les couples attendus sous `base/lib/<abi>/` :
|
||||
|
||||
```text
|
||||
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 :
|
||||
|
||||
```text
|
||||
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 :
|
||||
|
||||
```text
|
||||
system-images/android-21/google_apis/x86/
|
||||
```
|
||||
|
||||
retourne :
|
||||
|
||||
```text
|
||||
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 :
|
||||
|
||||
```text
|
||||
system-images/android-35/google_apis_playstore_ps16k/x86_64/
|
||||
```
|
||||
|
||||
retourne :
|
||||
|
||||
```text
|
||||
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é.
|
||||
Reference in New Issue
Block a user