Kotlin Multiplatform 库在运行时未解决的依赖关系

Kotlin Multiplatform library unresolved dependency at runtime

我正在制作一个私有的 Kotlin Multiplatform 库,该库将位于托管在 Bitbucket 上的私有存储库中。

我的库依赖于另一个名为 Krypto 的库。

所以,自然地,我在库的公共模块中有以下依赖:

val commonMain by getting {
    dependencies {
        api("com.soywiz.korlibs.krypto:krypto:2.2.0")
    }
}

现在,当我通过 Cocoapods 将库导入 iOS 项目时,它工作得非常好。但是,当我将 .jar 文件作为依赖项插入到我的 Android 项目时:

implementation files('libs/MyLibrary-jvm-1.0.0.jar')

它可以编译,但在运行时崩溃并出现以下错误:

java.lang.NoClassDefFoundError: Failed resolution of: Lcom/soywiz/krypto/SHA256Kt

如果我将 Krypto 依赖项添加到我的 Android 项目中,一切正常,但我希望这些依赖项已包含在我的库中。怎么做?

我也尝试添加 java-library 插件并在 java 构建块中添加依赖项,但它没有改变任何东西。

解决方案一直在文档中...https://kotlinlang.org/docs/multiplatform-build-native-binaries.html#export-dependencies-to-binaries

在特定平台的二进制文件的 Gradle 配置中,我们需要使用 export() 来包含依赖项。为了还包括依赖项的依赖项,我们需要做 export(dep, transitiveExport = true).

kotlin {
    sourceSets {
        commonMain by getting {
            dependencies {
                api(project(":dependency"))
            }
        }
    }
    java().binaries {
        framework {
            export(project(":dependency"), transitiveExport = true)
        }
    }
}