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

Kotlin多平台库依赖不传递:Android应用无法识别Instant类

解决KMM库AAR在Android应用中无法解析返回类型的问题

问题原因

你的KMM库中对kotlinx.datetime使用了implementation依赖,这种依赖不会传递给下游的Android应用模块。当Android应用调用库的getDateTime方法时,虽然能找到方法本身,但找不到返回值类型Instant的定义,因此出现编译错误。另外,从你提供的库构建配置来看,commonMain的依赖块里并未显式添加kotlinx.datetime的依赖,这也是需要补全的遗漏点。

解决方案

1. 修改KMM库的依赖声明

在库的commonMain依赖中,将kotlinx.datetime的依赖从implementation改为api,并确保依赖已正确添加:

sourceSets {
    val commonMain by getting {
        dependencies {
            implementation(libs.kotlin.stdlib)
            // 用api替代implementation,让依赖能传递给消费方
            api(libs.kotlinx.datetime)
        }
    }
    val commonTest by getting {
        dependencies {
            implementation(libs.kotlin.test)
        }
    }
}
  • api关键字会将该依赖标记为公开传递依赖,下游模块(你的Android应用)在引入库时会自动拉取这个依赖,无需手动添加。
  • implementation仅在当前库内部生效,下游模块无法访问其依赖的类。

2. 补全版本配置(若未配置)

确保你的libs.versions.toml(或版本管理文件)中已正确配置kotlinx.datetime的版本:

[versions]
kotlinx-datetime = "0.4.1" # 替换为你实际使用的版本

[libraries]
kotlinx-datetime = { module = "org.jetbrains.kotlinx:kotlinx-datetime", version.ref = "kotlinx-datetime" }

3. 重新发布库到本地仓库

执行Gradle发布任务(通常是publishToMavenLocal),将修改后的库重新发布到本地仓库,覆盖旧版本。

4. 同步Android应用的依赖

在Android应用项目中点击Gradle同步按钮,让应用拉取更新后的库及其传递依赖,之后重新编译项目,Instant类型即可正常解析。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.08 20:37:37