140 lines
4.9 KiB
Markdown
140 lines
4.9 KiB
Markdown
<!-- file: deltas/0.3.3/2-beta.1.md -->
|
|
<!-- version: 1 -->
|
|
|
|
# Delta 0.3.3-2-beta.1
|
|
|
|
## Objectif
|
|
|
|
Entrer en beta avec le pipeline Android SDL3 natif feature-complete : quatre ABI, APK universal, AAB Release, API 21 prouvée, compatibilité 16 KB 64 bits prouvée et aucun orchestrateur Python de build.
|
|
|
|
Cette tranche n'ajoute aucune fonctionnalité. Elle synchronise la version technique, consolide les preuves `0-pre.5` et exécute la validation large prévue avant RC.
|
|
|
|
## Baseline acceptée
|
|
|
|
`0.3.3-0-pre.5` est validée par l'utilisateur le 2026-09-21.
|
|
|
|
La baseline acceptée comprend :
|
|
|
|
- audits Rust/Markdown propres ;
|
|
- audit de distribution propre après suppression de deux anciens `src/main/jniLibs` locaux ;
|
|
- `cargo check --workspace` et Clippy workspace strict propres ;
|
|
- `bundleRelease` réussi pour Snake et Reflex ;
|
|
- AAB quatre ABI pour les deux jeux ;
|
|
- `zipalign -P 16` réussi sur les APK Debug ;
|
|
- ELF `arm64-v8a` et `x86_64` alignés `2**14` pour SDL3 et la bibliothèque Rust ;
|
|
- smoke Snake réussi sur Android 5.0/API 21 x86 ;
|
|
- smoke Snake réussi sur Android 15/API 35 x86_64 `ps16k` avec `getconf PAGE_SIZE=16384` ;
|
|
- suppression du builder `scripts/build_android_rust.py`.
|
|
|
|
`history/0.3.3/0-pre.5.md` consigne le détail.
|
|
|
|
## Changements
|
|
|
|
- passage de `workspace.package.version` à `0.3.3-2-beta.1` ;
|
|
- ajout de l'historique validé `0-pre.5` ;
|
|
- correction documentaire du périmètre 16 KB : exigence Play portée sur les appareils 64 bits, sans imposer artificiellement `2**14` aux ABI 32 bits ;
|
|
- consolidation du plan actif avec les preuves API 21 et `ps16k` réellement obtenues ;
|
|
- aucune modification de gameplay, moteur, JNI, Java, logique Gradle, ABI, API Android, dépendance ou asset.
|
|
|
|
`CHANGELOG.md` et `ROADMAP.md` restent inchangés : la synthèse publiée est réservée à la RC/stable et le scope macro `0.3.3` n'est pas encore clos.
|
|
|
|
## Validation beta — statique et workspace
|
|
|
|
Depuis la racine :
|
|
|
|
```bash
|
|
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
|
|
cargo test --workspace --all-targets --all-features
|
|
```
|
|
|
|
La suite workspace complète est volontairement exécutée ici : `2-beta.1` constitue la gate large planifiée de la version.
|
|
|
|
## Rebuild Android beta
|
|
|
|
Nettoyer les outputs Gradle des applications, puis reconstruire les deux formes d'artefact :
|
|
|
|
```bash
|
|
(cd Android && gradle :game-snake-poc:clean :game-reflex-poc:clean)
|
|
|
|
(cd Android && gradle :game-snake-poc:assembleDebug)
|
|
(cd Android && gradle :game-reflex-poc:assembleDebug)
|
|
|
|
(cd Android && gradle :game-snake-poc:bundleRelease)
|
|
(cd Android && gradle :game-reflex-poc:bundleRelease)
|
|
```
|
|
|
|
Pour chaque APK Debug et AAB Release, vérifier les quatre ABI :
|
|
|
|
```bash
|
|
for game in game-snake-poc game-reflex-poc; do
|
|
APK="Android/${game}/build/outputs/apk/debug/${game}-debug.apk"
|
|
AAB="Android/${game}/build/outputs/bundle/release/${game}-release.aab"
|
|
|
|
test -f "$APK"
|
|
test -f "$AAB"
|
|
|
|
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"
|
|
unzip -Z1 "$AAB" | grep -Fx "base/lib/${abi}/libSDL3.so"
|
|
unzip -Z1 "$AAB" | grep -Fx "base/lib/${abi}/libgame_android_entrypoint.so"
|
|
done
|
|
done
|
|
```
|
|
|
|
Revalider le packaging 16 KB :
|
|
|
|
```bash
|
|
ZIPALIGN="$(find "$ANDROID_HOME/build-tools" -mindepth 2 -maxdepth 2 -type f -name zipalign -print | sort -V | tail -n 1)"
|
|
test -x "$ZIPALIGN"
|
|
|
|
"$ZIPALIGN" -c -P 16 -v 4 Android/game-snake-poc/build/outputs/apk/debug/game-snake-poc-debug.apk
|
|
"$ZIPALIGN" -c -P 16 -v 4 Android/game-reflex-poc/build/outputs/apk/debug/game-reflex-poc-debug.apk
|
|
```
|
|
|
|
Les preuves ELF 64 bits et les smokes de frontière API 21/16 KB viennent d'être établis en `0-pre.5`; ils ne sont pas rejoués mécaniquement dans cette beta tant qu'aucune logique native/Gradle n'a changé.
|
|
|
|
## Smokes beta de référence
|
|
|
|
Revalider **Snake et Reflex** sur :
|
|
|
|
1. l'AVD x86_64/API 36 de référence ;
|
|
2. l'appareil ARM64 réel de référence.
|
|
|
|
Pour chaque jeu et chaque device :
|
|
|
|
```bash
|
|
adb -s <serial> install -r <apk>
|
|
adb -s <serial> shell am start -n <package>/<activity>
|
|
```
|
|
|
|
Vérifier au minimum :
|
|
|
|
- démarrage ;
|
|
- rendu SDL3 ;
|
|
- contrôles/tactile ;
|
|
- assets ;
|
|
- absence de crash/panic immédiat ;
|
|
- Back système et sortie propre.
|
|
|
|
Les packages/activities actuels sont :
|
|
|
|
```text
|
|
Snake : com.sasedev.games.snake/.SnakeActivity
|
|
Reflex : com.sasedev.games.reflex/.ReflexActivity
|
|
```
|
|
|
|
## Transition
|
|
|
|
Si la gate workspace, les rebuilds quatre ABI, le packaging et les quatre smokes de référence sont propres, ne pas créer de beta supplémentaire : ouvrir directement `0.3.3-3-rc.1`.
|
|
|
|
Toute régression imputable au projet produit d'abord `0.3.3-2-beta.1.fix.N`.
|