0.3.3-0-pre.4
This commit is contained in:
@@ -1,5 +1,5 @@
|
||||
<!-- file: docs/plans/003-V0_3_3_ANDROID_NATIVE_MULTI_ABI_PLAN.md -->
|
||||
<!-- version: 2 -->
|
||||
<!-- version: 3 -->
|
||||
|
||||
# Plan 0.3.3 — Android SDL3 natif multi-ABI et packaging Gradle
|
||||
|
||||
@@ -43,8 +43,8 @@ targetSdk 36
|
||||
minSdk candidat 21
|
||||
NDK 28.2.13676358 / r28c
|
||||
SDL3 3.4.16
|
||||
ABI par défaut arm64-v8a + x86_64
|
||||
armeabi-v7a différée sans besoin produit mesuré
|
||||
ABI par défaut arm64-v8a + armeabi-v7a + x86_64 + x86
|
||||
ABI historiques pas de armeabi/mips/mips64 : retirées des toolchains modernes
|
||||
APK test universal multi-ABI
|
||||
AAB artefact de distribution cible
|
||||
splits ABI hors chemin par défaut
|
||||
@@ -88,7 +88,7 @@ La future logique commune doit couvrir au minimum :
|
||||
4. linkage Rust contre la SDL extraite ;
|
||||
5. invocation de `cargo ndk` avec `CARGO_NDK_PLATFORM=21` ;
|
||||
6. mapping strict de chaque module vers exactement une feature `snake` ou `reflex` ;
|
||||
7. build des ABI demandées, `arm64-v8a` et `x86_64` par défaut ;
|
||||
7. build des quatre ABI Android encore supportées : `arm64-v8a`, `armeabi-v7a`, `x86_64` et `x86` ;
|
||||
8. staging de `libSDL3.so` et `libgame_android_entrypoint.so` dans un répertoire `jniLibs` généré ;
|
||||
9. branchement de ce répertoire à la variante Android avant packaging ;
|
||||
10. inputs/outputs Gradle assez précis pour un rebuild incrémental ;
|
||||
@@ -101,9 +101,11 @@ Le projet Android natif déclare `minimumGradleVersion=9.6.0` et refuse au charg
|
||||
|
||||
Le support CPU et le support de versions Android restent deux axes séparés.
|
||||
|
||||
`arm64-v8a` est la cible productive obligatoire. `x86_64` est la cible AVD obligatoire de la matrice de développement. Ces deux ABI doivent être présentes dans l'APK universal de validation et dans l'AAB tant qu'aucune décision ultérieure ne restreint la distribution.
|
||||
`0-pre.4` révise la politique ABI : le projet vise le maximum raisonnable de compatibilité matérielle, y compris les architectures 32 bits encore supportées. La matrice obligatoire devient `arm64-v8a`, `armeabi-v7a`, `x86_64` et `x86`.
|
||||
|
||||
`armeabi-v7a` n'est pas introduite par défaut : elle ne permet pas de descendre sous API 21 avec SDL3, agrandit la matrice et ne répond à aucun besoin utilisateur mesuré à ce stade.
|
||||
`arm64-v8a` reste la cible appareil productive principale et `x86_64` la cible AVD principale, mais elles ne constituent plus à elles seules le contrat de packaging. `armeabi-v7a` et `x86` sont également construites et packagées afin de conserver la compatibilité avec du matériel plus ancien.
|
||||
|
||||
Les ABI abandonnées par les toolchains Android modernes (`armeabi`, `mips`, `mips64`) restent hors contrat : les réintroduire exigerait une toolchain historique/forkée et ne correspondrait plus au pipeline Android courant.
|
||||
|
||||
Le plancher OS candidat est Android 5.0 / API 21. La version doit tenter un smoke sur API 21 si une image exploitable est raisonnablement disponible. À défaut, elle teste la plus ancienne API localement disponible et consigne explicitement la lacune ; elle ne transforme pas un smoke absent en validation fictive.
|
||||
|
||||
@@ -127,7 +129,7 @@ Pendant les tranches d'implémentation, les validations restent ciblées : audit
|
||||
|
||||
Les smokes de packaging deviennent plus larges seulement quand le jalon produit un artefact installable :
|
||||
|
||||
- APK universal : inspection ARM64/x86_64 + AVD x86_64 + appareil ARM64 ;
|
||||
- APK universal : inspection des quatre ABI + AVD x86_64 + appareil ARM64 ; les ABI 32 bits sont fumées seulement si un device/AVD compatible est disponible ;
|
||||
- compatibilité basse : AVD API 21 si raisonnablement disponible, sinon plus ancienne API disponible avec écart documenté ;
|
||||
- AAB : inspection du bundle et des bibliothèques natives, y compris compatibilité 16 KB ;
|
||||
- beta/RC : gate workspace large planifiée, rebuild reproductible et smokes finaux.
|
||||
@@ -154,7 +156,13 @@ Retirer le wrapper natif introduit pour la preuve `0-pre.2`, déclarer et contr
|
||||
|
||||
La factorisation commune étant réduite au mapping `module -> feature`, ajouter Reflex comme second consommateur avec les mêmes deux ABI, sans nouvelle architecture.
|
||||
|
||||
### `0-pre.4` — AAB, minSdk et fermeture du chemin historique
|
||||
### `0-pre.4` — matrice ABI Android complète
|
||||
|
||||
Étendre Snake et Reflex aux quatre ABI encore supportées par Android NDK/SDL3/Rust : `arm64-v8a`, `armeabi-v7a`, `x86_64`, `x86`. Produire des APK Debug universal et vérifier mécaniquement les huit bibliothèques attendues par application.
|
||||
|
||||
Les smokes matériels restent ciblés sur les environnements disponibles ; l'absence d'un device/AVD 32 bits ne doit pas être transformée en fausse preuve runtime.
|
||||
|
||||
### `0-pre.5` — AAB, minSdk et fermeture du chemin historique
|
||||
|
||||
Ajouter/valider le chemin `bundleRelease` sans secret, inspecter le bundle et la compatibilité 16 KB, exécuter la stratégie de smoke du plancher Android et supprimer `scripts/build_android_rust.py` si toutes ses responsabilités ont effectivement migré.
|
||||
|
||||
@@ -176,7 +184,7 @@ Promotion mécanique de la RC validée. Aucun changement fonctionnel ou architec
|
||||
|
||||
## Sizing
|
||||
|
||||
Le scope reste raisonnable pour une seule version si les quatre prereleases conservent leurs frontières verticales. Les zones susceptibles de forcer un split de version sont uniquement une incompatibilité profonde de `cargo-ndk` avec AGP/Gradle, une SDL3 AAR non exploitable par Prefab comme prévu, ou une exigence produit nouvelle pour le 32 bits.
|
||||
Le scope reste raisonnable pour une seule version avec cinq prereleases techniques avant beta, la nouvelle `0-pre.4` isolant volontairement l'extension 32 bits du packaging AAB/16 KB. Les zones susceptibles de forcer un split de version sont uniquement une incompatibilité profonde de `cargo-ndk` avec AGP/Gradle, une SDL3 AAR non exploitable par Prefab comme prévu, ou une incompatibilité effective d'une des deux ABI 32 bits encore supportées.
|
||||
|
||||
Un simple besoin de `.fix.N` après validation ne remet pas ce sizing en cause.
|
||||
|
||||
@@ -206,7 +214,7 @@ La politique a été révisée après validation de `0-pre.2` : le projet Androi
|
||||
`0.3.3` peut entrer en RC lorsque :
|
||||
|
||||
- un build Gradle Android natif n'exige plus `scripts/build_android_rust.py` ;
|
||||
- Snake produit un APK universal ARM64/x86_64 par un seul chemin Gradle ;
|
||||
- Snake et Reflex produisent un APK universal contenant `arm64-v8a`, `armeabi-v7a`, `x86_64` et `x86` par un seul chemin Gradle ;
|
||||
- l'AAB de distribution est constructible sans secret embarqué ;
|
||||
- les bibliothèques natives finales sont vérifiées pour la contrainte 16 KB ;
|
||||
- le minSdk soutenu et la preuve de smoke disponible sont documentés sans surpromesse ;
|
||||
|
||||
Reference in New Issue
Block a user