You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何将KMM项目作为模块集成到Android主应用中?

将KMM项目作为模块集成到Android主应用的可行方案与问题解决

可行性说明

完全可行。KMM的核心设计目标之一就是支持跨平台代码共享,将其作为Android Library模块集成到主应用是常规使用场景,不存在技术障碍。

具体实现步骤

  • 确认KMM项目的Android模块配置合规:KMM项目中的android模块本质是标准Android Library,检查其build.gradle.kts(或.gradle)文件,确保已引入必要插件:
    plugins {
        id("com.android.library")
        id("kotlin-android")
        id("kotlinx-serialization") // 若用到序列化等KMM扩展插件,按需添加
    }
    
  • 在Android主应用的settings.gradle.kts中添加模块引用:
    若KMM项目与主应用在同一根目录下,直接声明模块;若不在同一目录,指定模块路径:
    include(":kmm-shared-android")
    // 若KMM项目在主应用上级目录的MyKMMProject文件夹中
    project(":kmm-shared-android").projectDir = file("../MyKMMProject/android")
    
  • 在主应用的build.gradle.kts中添加依赖:
    dependencies {
        implementation(project(":kmm-shared-android"))
        // 若KMM共享模块用到其他跨平台依赖,按需添加Android端对应依赖
    }
    
  • 同步Gradle,完成模块集成。

库依赖报错的常见修复方案

  • 统一核心依赖版本:主应用与KMM模块的Kotlin版本、Android Gradle Plugin版本、Jetpack等核心库版本必须完全一致,版本不匹配是最常见的冲突根源。比如主应用build.gradle.kts中kotlin("android")的版本,要和KMM项目shared/build.gradle.kts中kotlin("multiplatform")的版本保持相同。
  • 检查跨平台依赖的expect/actual实现:KMM共享模块中用expect声明的依赖,Android端的actual实现必须正确引入对应Android库,且确保这些库能通过模块依赖传递到主应用。例如网络库ktor,Android端需在android模块中引入io.ktor:ktor-client-android。
  • 排除冲突依赖:若出现重复依赖或版本冲突,在主应用的依赖声明中排除冲突部分:
    implementation(project(":kmm-shared-android")) {
        exclude(group = "com.squareup.okhttp3", module = "okhttp")
    }
    
  • 验证本地发布配置(若用Maven本地引入):如果KMM模块是通过maven-publish插件发布到本地仓库后引入的,需确保发布的aar包含完整的依赖元数据,主应用能正确解析拉取。
  • 清理Gradle缓存:执行./gradlew clean,再通过Android Studio的File -> Invalidate Caches / Restart清理缓存,解决缓存导致的依赖识别异常。

内容的提问来源于stack exchange,提问作者Alexandru Spasenie

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.20 16:42:12