43 lines
1.6 KiB
Markdown
43 lines
1.6 KiB
Markdown
<!-- file: docs/architecture/002-ANDROID_ARCHITECTURE.md -->
|
|
<!-- version: 1 -->
|
|
|
|
# Architecture Android
|
|
|
|
## Principe
|
|
|
|
Android est un frontend de plateforme autour du jeu natif Rust/SDL3. Java est retenu comme langage de glue par défaut.
|
|
|
|
```text
|
|
Android application
|
|
├── Java common layer
|
|
│ ├── SaseGameActivity
|
|
│ ├── NativeBridge
|
|
│ └── futurs Ads/Billing/Haptics managers
|
|
├── Java game-specific layer
|
|
├── SDL3 Android AAR
|
|
├── native Rust game library
|
|
├── common assets
|
|
└── game-specific assets
|
|
```
|
|
|
|
SDL3 documente un shim Java/JNI et recommande de dériver sa propre activité de `SDLActivity`. L'utilisation de l'AAR SDL3 doit être privilégiée lorsque l'intégration concrète démarre afin d'éviter de recopier les sources SDL dans chaque jeu.
|
|
|
|
## Modules Gradle
|
|
|
|
`Android/common` est destiné à devenir une Android Library réutilisable. Les modules `Android/game-*` deviennent des applications distinctes produisant chacune leur APK/AAB.
|
|
|
|
Le squelette initial ne fige volontairement pas la version d'Android Gradle Plugin ni celle de SDL3 : ces dépendances seront introduites dans le premier delta Android réellement exécutable, avec versions vérifiées au moment de l'intégration.
|
|
|
|
## JNI
|
|
|
|
Le contrat JNI doit rester petit. Les services envisagés sont notamment :
|
|
|
|
- affichage d'une publicité récompensée ;
|
|
- affichage d'un interstitiel ;
|
|
- achats intégrés ;
|
|
- partage Android ;
|
|
- haptique ;
|
|
- événements lifecycle utiles au moteur.
|
|
|
|
Une rupture interne de `engine-v1` vers `engine-v2` ne doit pas imposer une nouvelle couche Java si ce contrat reste compatible.
|