mirror of
https://github.com/openflocon/Flocon.git
synced 2026-04-28 14:30:14 +00:00
3.9 KiB
3.9 KiB
App-Multi - Module Kotlin Multiplatform
Ce module est une version multiplateforme de app utilisant Kotlin Multiplatform avec Compose Multiplatform.
Plateformes supportées
- Android - Application Android native
- Desktop (JVM) - Application Desktop (macOS, Windows, Linux)
- iOS - Support iOS (iosX64, iosArm64, iosSimulatorArm64)
Architecture
Structure des sources
app-multi/
├── src/
│ ├── commonMain/ # Code partagé entre toutes les plateformes
│ │ └── kotlin/
│ │ ├── ui/ # UI Compose Multiplatform
│ │ └── ... # Logique métier partagée
│ ├── androidMain/ # Code spécifique Android
│ │ └── kotlin/
│ │ └── MainActivity.kt
│ ├── desktopMain/ # Code spécifique Desktop/JVM
│ │ └── kotlin/
│ │ └── Main.kt
│ └── iosMain/ # Code spécifique iOS
Technologies utilisées
- Kotlin Multiplatform - Partage de code entre plateformes
- Compose Multiplatform - UI déclarative multiplateforme
- Ktor - Client HTTP (remplace OkHttp)
- Room - Base de données locale (Android uniquement)
- Flocon - Intercepteurs et outils de développement
Changements par rapport au module app
✅ Ajouts:
- Support Kotlin Multiplatform (Android, JVM, iOS)
- Compose Multiplatform pour UI partagée
- Ktor client avec support multiplateforme
❌ Retraits:
- GraphQL (Apollo)
- gRPC
- OkHttp (remplacé par Ktor)
Lancement des applications
Android
# Debug build
./gradlew :app-multi:assembleDebug
# Installer sur appareil/émulateur
./gradlew :app-multi:installDebug
# Lancer depuis IDE
# Ouvrir dans Android Studio et exécuter MainActivity
Desktop (JVM)
# Exécuter l'application Desktop (depuis le code source)
./gradlew :app-multi:run
# Ou utiliser la tâche spécifique Desktop
./gradlew :app-multi:desktopRun
# Exécuter depuis la distribution packagée
./gradlew :app-multi:runDistributable
# Créer la distribution pour la plateforme actuelle
./gradlew :app-multi:createDistributable
# Créer les packages natifs (DMG, MSI, DEB selon votre OS)
./gradlew :app-multi:packageDistributionForCurrentOS
Les distributions packagées seront dans app-multi/build/compose/binaries/main/:
.dmgpour macOS.msipour Windows.debpour Linux
iOS
# Compiler pour iOS
./gradlew :app-multi:iosX64MainKlibrary
# Pour exécuter, ouvrir dans Xcode ou utiliser Kotlin Multiplatform plugin
Structure de l'application
L'interface utilisateur est définie dans commonMain/ui/App.kt et est utilisée par:
- Android: Via
MainActivity.ktqui initialise le contexte Android - Desktop: Via
Main.ktqui crée une fenêtre Compose Desktop - iOS: Via le bridge iOS (à configurer)
Client HTTP Ktor
Le client HTTP est initialisé différemment selon la plateforme:
- Android:
OkHttpengine - Desktop:
CIOengine - iOS:
CIOengine
// Exemple d'utilisation
DummyHttpKtorCaller.callGet() // GET request
DummyHttpKtorCaller.callPost() // POST request
Développement
Ajouter du code partagé
Placer le code dans commonMain/kotlin/. Il sera disponible sur toutes les plateformes.
Ajouter du code spécifique à une plateforme
- Android:
androidMain/kotlin/ - Desktop:
desktopMain/kotlin/ - iOS:
iosMain/kotlin/
Expect/Actual
Pour les fonctionnalités spécifiques à une plateforme, utiliser le mécanisme expect/actual:
// commonMain
expect fun getPlatformName(): String
// androidMain
actual fun getPlatformName() = "Android"
// desktopMain
actual fun getPlatformName() = "Desktop"
Notes
- Room Database n'est disponible que sur Android
- SharedPreferences n'est disponible que sur Android
- L'UI Compose est 100% partagée entre Android et Desktop