This is a biased Kotlin Multi Platform project template that has an Android, iOS and a JS client.
- Setup tests
- Setup code obfuscation / optimization
- JVM client
- Native client
Gradle:
Kotlin DSL
buildSrc
for custom plugins- Version catalogs
Shared code
- Kotlin IR
- Kotlin Multi Platform with hierarchical setup: common, mobileCommon
Android:
- Kotlin, Compose
- Dependency management: Gradle
- Build Types, product flavors
iOS:
- Kotlin, Swift, SwiftUI
- Dependency management: cocoapods
JS:
- KotlinJS + React Wrappers
- npm
IDE
- Idea
- XCode
settings.gradle.kts
: manage repositories + subprojectsbuild.gradle.kts
: root build gradle file, initialize plugins that are not initialized inbuildSrc
gradle.properties
: gradle properties for projectslocal.properties
: properties specific to the Android Gradle pluginhttps://developer.android.com/studio/build#properties-files.libs.versions.toml
: define all libraries and plugins, see Version CatalogbuildSrc/
: conventions plugins + build helpers see buildSrcshared/
: Kotlin multi platform KMP modulesapps/
: Client applications + modules specific to target platform
- Android:
./gradlew apps:android:app installDebug
- iOS: open
apps/ios/app/iosApp.xcworkspace
with xcode and run - JS:
./gradlew apps:js:app:browserDevelopmentRun
- build dependency
graph:
./gradlew apps:android:app:generateProjectDependencyGraph
docs
- run:
./gradlew versionCatalogUpdate
- configure task in:
ROOT/build.gradle.kts
- Plugin documentation
- Resolution of the configuration :detachedConfiguration1: TODO link issue
- Configuration 'jsNpm' was resolved during configuration time.: TODO link issue