Kotlin Multiplatform vs. Native Android: 2025 Library Cheat Sheet for Devs

Android vs. Kotlin Multiplatform (KMP) Libraries - 2025 Edition

Overview

This comparison highlights key libraries and tools for Android and Kotlin Multiplatform (KMP) development in 2025. It covers architecture, networking, data, UI, and more, helping developers choose based on project needs.

Android vs. Kotlin Multiplatform

Category Android Kotlin Multiplatform (KMP)
🧱 Dependency Injection Hilt / Dagger Koin / Kodein (multiplatform)
🧱 State Management ViewModel, LiveData, StateFlow Jetpack ViewModel (KMP), StateFlow, Decompose
🧱 Multimodule Architecture Gradle Modules Multiplatform Modules (Shared + Targets)
🧱 Concurrency Kotlinx Coroutines Kotlinx Coroutines (shared)
🧱 Flow / Reactive Streams Kotlin Flow, LiveData Kotlin Flow (shared), SharedFlow
🌐 Networking Client Retrofit Ktor Client
🌐 HTTP Core OkHttp CIO (Ktor Coroutine I/O)
🌐 WebSocket OkHttp WebSocket Ktor WebSocket
🌐 JSON Serialization Gson / Moshi kotlinx.serialization
🌐 API Error Handling Retrofit Call Adapters Ktor Feature Pipelines
🗄️ Local Database Room SQLDelight / Room (stable KMP)
🗄️ Key-Value Storage SharedPreferences / DataStore MultiplatformSettings
🗄️ Encrypted Storage Jetpack Security Krypto / Encrypted-MP-Storage
🗄️ Filesystem Access Android File APIs Okio Multiplatform
📸 UI Framework Jetpack Compose / XML Compose Multiplatform (Android/iOS/Desktop/Web)
📸 Navigation Jetpack Navigation Decompose / Voyager
📸 Dialogs / Popups AlertDialog / MaterialDialogs Compose MPP Dialog Libraries
📸 Gesture Handling Compose Gesture APIs Compose MPP - Supported
📸 Image Loading Coil / Glide Kamel / Coil (MPP)
🎛️ Permissions Accompanist Permissions KMP-Permissions / Wrappers
🎛️ Sensors Android SensorManager Expect/Actual Wrappers
🎛️ Bluetooth / BLE Android Bluetooth API Expect/Actual
🎛️ Location / GPS FusedLocationProvider Expect/Actual, Moko-Geo
🎛️ Camera / Media CameraX Expect/Actual Wrappers
🎛️ Notifications Android NotificationManager Firebase / Local Wrappers
🎛️ Push Notifications Firebase Messaging Firebase (Shared)
🎛️ Battery / Device Info Android APIs Moko-System / Expect/Actual
🎛️ Network State ConnectivityManager Moko-Network
🔐 Security / Cipher AndroidX Security Krypto / SecureStore-KMP
🔐 Analytics Firebase Analytics Firebase Wrappers / Segment-KMP
🔐 Crash Reporting Firebase Crashlytics Firebase / Sentry-KMP
🔐 Payments / Billing Google Play Billing Stripe SDK / Native Wrappers
🧪 Unit Testing JUnit, Mockito Kotlin.Test, Kotest, MockMP
🧪 UI Testing Espresso / Compose Testing Compose MPP Test Tools
🧪 Integration Testing Robolectric Native + Expect/Actual
🧪 Logging Timber, Logcat Napier / Expect/Actual
🧪 Benchmarking Jetpack Benchmark Platform-Specific
🧰 Build System Gradle Gradle Multiplatform Plugin
🧰 Code Sharing N/A (Single Target) Expect/Actual, Source Sets
🧰 Lint & Static Analysis Android Lint, Detekt Detekt (MP), Ktlint
🧰 CI/CD GitHub Actions / Bitrise Same + KMM Targets
🧰 Dependency Management Gradle (KTS/Groovy) Gradle + MP Plugin
🧰 IDE Support Android Studio Android Studio / IntelliJ
📦 Library Sources MavenCentral, Google Maven MavenCentral (MP Libs)
📦 Shared Code Platform-Specific Modules Shared Code (commonMain)
📦 SDK Coverage Full Android SDK Partial SDK Wrappers
📦 Open Source Libraries Very Rich Ecosystem Growing, Focused Ecosystem
🧑‍💻 Learning Curve Medium High (Expect/Actual Setup)
🧑‍💻 Productivity High for Android Apps High for Shared Logic/UI
🧑‍💻 Community Support Huge (SO, Reddit) Growing (Kotlin Slack, GitHub)
🧑‍💻 Documentation Extensive Official Docs Official + Community Blogs
🧑‍💻 Debugging Well-Supported Needs Multi-Platform Experience
🔑 Authentication Firebase Auth Firebase Wrappers / Supabase-KMP
🔑 Offline Support WorkManager KMP Workers / Expect/Actual
🔑 Animations Lottie / Compose Animations Compose MPP Animations / Lottie-KMP
🔑 Internationalization Android Resources Moko-Resources

Category Explanations

🧱 Dependency Injection

Hilt / Dagger is the go-to for type-safe DI on Android, with compile-time validation. Koin / Kodein brings multiplatform DI with lightweight runtime resolution-perfect for shared codebases.


🧱 State Management

ViewModel with LiveData/StateFlow manages lifecycle-aware state on Android. Jetpack ViewModel (KMP) and Decompose enable shared state logic across platforms.


🧱 Multimodule Architecture

Gradle Modules organize Android projects for scalability. Multiplatform Modules allow shared code with platform-specific targets in KMP.


🧱 Concurrency

Kotlinx Coroutines handles async operations on Android. Kotlinx Coroutines (shared) provides the same coroutine support across all KMP targets.


🧱 Flow / Reactive Streams

Kotlin Flow and LiveData offer reactive data streams on Android. Kotlin Flow (shared) and SharedFlow enable reactive programming in KMP codebases.


🌐 Networking Client

Retrofit is the go-to for type-safe HTTP on Android, letting you define APIs as interfaces. Ktor Client brings multiplatform HTTP with coroutine support-perfect for shared codebases.


🌐 HTTP Core

OkHttp powers most Android HTTP under the hood. For KMP, CIO is Ktor's default engine, offering a pure Kotlin solution for HTTP on any platform.


🌐 WebSocket

OkHttp WebSocket enables real-time connections on Android. Ktor WebSocket provides multiplatform WebSocket support with coroutine integration.


🌐 JSON Serialization

Gson / Moshi is a classic for converting Java/Kotlin objects to JSON and back. For KMP, kotlinx.serialization is the native choice: multiplatform, fast, and integrates tightly with Ktor.


🌐 API Error Handling

Retrofit Call Adapters manage error flows on Android. Ktor Feature Pipelines allow custom error handling in multiplatform networking.


🗄️ Local Database

Room provides an abstraction layer over SQLite with type-safe queries for Android, and from v2.7.0-alpha01, also supports Kotlin Multiplatform. SQLDelight generates Kotlin APIs from your SQL, running on Android, iOS, JVM, and JS.


🗄️ Key-Value Storage

SharedPreferences / DataStore is the default for key-value storage on Android. MultiplatformSettings brings similar functionality to KMP, supporting all major targets.


🗄️ Encrypted Storage

Jetpack Security offers encrypted preferences on Android. Krypto / Encrypted-MP-Storage provides secure, multiplatform encrypted storage.


🗄️ Filesystem Access

Android File APIs handle local file operations. Okio Multiplatform offers a unified API for filesystem access across platforms.


📸 UI Framework

Jetpack Compose / XML builds declarative UIs on Android. Compose Multiplatform enables shared UI code for Android, iOS, Desktop, and Web.


📸 Navigation

Jetpack Navigation handles screen routing on Android. Decompose / Voyager provides multiplatform navigation with shared logic.


📸 Dialogs / Popups

AlertDialog / MaterialDialogs create popups on Android. Compose MPP Dialog Libraries offer cross-platform dialog support.


📸 Gesture Handling

Compose Gesture APIs detect touches on Android. Compose MPP supports the same gestures across platforms.


📸 Image Loading

Coil / Glide are top choices for image loading on Android. Kamel / Coil (MPP) enable multiplatform image loading with caching.


🎛️ Permissions

Accompanist Permissions manage runtime permissions on Android. KMP-Permissions / Wrappers provide unified permission handling.


🎛️ Sensors

Android SensorManager accesses device sensors. Expect/Actual Wrappers enable shared sensor code in KMP.


🎛️ Bluetooth / BLE

Android Bluetooth API handles wireless connections. Expect/Actual allows platform-specific Bluetooth in shared KMP code.


🎛️ Location / GPS

FusedLocationProvider fetches accurate location on Android. Expect/Actual and Moko-Geo support multiplatform location services.


🎛️ Camera / Media

CameraX simplifies camera access on Android. Expect/Actual Wrappers enable cross-platform media capture.


🎛️ Notifications

Android NotificationManager displays alerts. Firebase / Local Wrappers provide multiplatform notification support.


🎛️ Push Notifications

Firebase Messaging handles pushes on Android. Firebase (Shared) enables cross-platform push notifications in KMP.


🎛️ Battery / Device Info

Android APIs retrieve device info. Moko-System / Expect/Actual offer shared access to battery and info.


🎛️ Network State

ConnectivityManager monitors network on Android. Moko-Network provides multiplatform connectivity checks.


🔐 Security / Cipher

AndroidX Security handles encryption. Krypto / SecureStore-KMP offer multiplatform secure storage.


🔐 Analytics

Firebase Analytics tracks users on Android. Firebase Wrappers / Segment-KMP enable shared analytics.


🔐 Crash Reporting

Firebase Crashlytics logs crashes on Android. Firebase / Sentry-KMP support multiplatform reporting.


🔐 Payments / Billing

Google Play Billing processes in-app purchases on Android. Stripe SDK / Native Wrappers handle multiplatform billing.


🧪 Unit Testing

JUnit and Mockito test code on Android. Kotlin.Test, Kotest, MockMP enable shared unit tests in KMP.


🧪 UI Testing

Espresso / Compose Testing validate UIs on Android. Compose MPP Test Tools support cross-platform UI tests.


🧪 Integration Testing

Robolectric runs integration tests on Android. Native + Expect/Actual enable multiplatform integration.


🧪 Logging

Timber simplifies logging on Android. Napier brings similar API to KMP projects.


🧪 Benchmarking

Jetpack Benchmark measures performance on Android. Platform-Specific tools handle KMP benchmarking.


🧰 Build System

Gradle builds Android apps. Gradle Multiplatform Plugin supports KMP builds.


🧰 Code Sharing

N/A for single-target Android. Expect/Actual and Source Sets enable code sharing in KMP.


🧰 Lint & Static Analysis

Android Lint and Detekt check code quality. Detekt (MP) and Ktlint work for KMP.


🧰 CI/CD

GitHub Actions / Bitrise automate Android workflows. Same tools plus KMM Targets for KMP.


🧰 Dependency Management

Gradle (KTS/Groovy) manages deps on Android. Gradle + MP Plugin handles KMP dependencies.


🧰 IDE Support

Android Studio supports Android development. Android Studio / IntelliJ for KMP.


📦 Library Sources

MavenCentral, Google Maven for Android libs. MavenCentral (MP Libs) for KMP.


📦 Shared Code

Platform-Specific Modules for Android. Shared Code (commonMain) in KMP.


📦 SDK Coverage

Full Android SDK access. Partial SDK Wrappers in KMP.


📦 Open Source Libraries

Very Rich Ecosystem for Android. Growing, Focused Ecosystem for KMP.


🧑‍💻 Learning Curve

Medium for Android. High (Expect/Actual Setup) for KMP.


🧑‍💻 Productivity

High for Android Apps. High for Shared Logic/UI in KMP.


🧑‍💻 Community Support

Huge (SO, Reddit) for Android. Growing (Kotlin Slack, GitHub) for KMP.


🧑‍💻 Documentation

Extensive Official Docs for Android. Official + Community Blogs for KMP.


🧑‍💻 Debugging

Well-Supported for Android. Needs Multi-Platform Experience for KMP.


🔑 Authentication

Firebase Auth for Android. Firebase Wrappers / Supabase-KMP for KMP.


🔑 Offline Support

WorkManager for Android. KMP Workers / Expect/Actual for KMP.


🔑 Animations

Lottie / Compose Animations for Android. Compose MPP Animations / Lottie-KMP for KMP.


🔑 Internationalization

Android Resources for Android. Moko-Resources for KMP.



If you think anything is missing or have better suggestions, feel free to comment.

1 Comments

Previous Post Next Post