Hammed Abass 50d43a3867 feat(send): share folders as multi-file collections
Add folder pickers on Android, iOS, and desktop. Desktop and iOS walk
directory paths in Rust; Android expands SAF trees to per-file FDs
with relative collection paths because directory FDs are unsupported.
2026-07-12 17:57:00 +02:00
2026-07-03 01:19:15 +02:00

This is a Kotlin Multiplatform project targeting Android, iOS, Desktop (JVM).

  • /iosApp contains an iOS application. Even if youre sharing your UI with Compose Multiplatform, you need this entry point for your iOS app. This is also where you should add SwiftUI code for your project.

  • /shared is for code that will be shared across your Compose Multiplatform applications. It contains several subfolders:

    • commonMain is for code thats common for all targets.
    • Other folders are for Kotlin code that will be compiled for only the platform indicated in the folder name. For example, if you want to use Apples CoreCrypto for the iOS part of your Kotlin app, the iosMain folder would be the right place for such calls. Similarly, if you want to edit the Desktop (JVM) specific part, the jvmMain folder is the appropriate location.

Running the apps

Use the run configurations provided by the run widget in your IDE's toolbar. You can also use these commands and options:

  • Android app: ./gradlew :androidApp:assembleDebug
  • Desktop app:
    • Hot reload: ./gradlew :desktopApp:hotRun --auto
    • Standard run: ./gradlew :desktopApp:run
  • iOS app: open the /iosApp directory in Xcode and run it from there.

Running tests

Use the run button in your IDE's editor gutter, or run tests using Gradle tasks:

  • Android tests: ./gradlew :shared:testAndroidHostTest
  • Desktop tests: ./gradlew :shared:jvmTest
  • iOS tests: ./gradlew :shared:iosSimulatorArm64Test

Learn more about Kotlin Multiplatform

Languages
Kotlin 40.3%
Rust 22.3%
Swift 19.7%
Shell 9.3%
TypeScript 4.5%
Other 3.8%