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

2.1 KiB

Android

Le frontend Android est un projet Gradle multi-module séparé du workspace Cargo.

Modules

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 :

SDL3-3.4.16.aar

dans :

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 :

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.