Files
games/Android/README.md
2026-09-16 09:29:19 +02:00

73 lines
2.1 KiB
Markdown

<!-- file: Android/README.md -->
<!-- version: 4 -->
# Android
Le frontend Android est un projet Gradle multi-module séparé du workspace Cargo.
## Modules
```text
Android/
├── common/
├── game-reflex-poc/
└── game-snake-poc/
```
`common` est une Android Library Java qui fournit la frontière commune. Elle compile contre l'AAR SDL3 avec une dépendance `compileOnly` afin que son propre AAR reste valide.
Chaque module `game-*` est une application Android indépendante ; il dépend du module `common` et package directement l'AAR SDL3 dans son APK via `implementation`.
## Toolchain de référence
Pour la baseline `0.1.0-0-pre.6` :
- Android Gradle Plugin `9.4.0` ;
- Gradle `9.6.0` attendu par AGP 9.4 ;
- JDK `17` ;
- `compileSdk 36` ;
- `targetSdk 36` ;
- `minSdk 21` ;
- SDL3 Android AAR `3.4.16`.
Le NDK n'est pas encore utilisé directement dans ce delta. Le prochain jalon introduira la compilation Rust Android `cdylib` et figera la configuration NDK réellement nécessaire.
## SDL3 AAR
L'archive n'est pas vendorizée dans le dépôt.
Placer :
```text
SDL3-3.4.16.aar
```
dans :
```text
Android/libs/
```
Le module `common` consomme cet artefact et `SaseGameActivity` étend désormais `org.libsdl.app.SDLActivity`.
## Limite volontaire de ce jalon
Les APK peuvent être compilés côté Java/SDL3 une fois l'AAR disponible, mais ne disposent pas encore du `cdylib` Rust contenant le point d'entrée de jeu.
Le lancement fonctionnel sur appareil/émulateur appartient donc au delta suivant.
## Rust Android natif
Le crate `game-android-entrypoint` produit `libgame_android_entrypoint.so`. Il est compilé séparément pour chaque jeu avec une feature Cargo et copié dans le `jniLibs` du module Android concerné.
Pour `arm64-v8a` :
```bash
rustup target add aarch64-linux-android
cargo install cargo-ndk
python3 ../scripts/build_android_rust.py reflex
python3 ../scripts/build_android_rust.py snake
```
Le script extrait temporairement `libSDL3.so` de l'AAR uniquement pour fournir le chemin de linkage à `rustc`; l'AAR reste responsable du packaging SDL3 dans l'APK.