android - 可在多个 MPP 中重用的 Kotlin 公共(public)库

标签 android gradle kotlin kotlin-multiplatform

我正在建立一个 Kotlin 多平台项目,这样我就可以在多个平台中为单个应用重用通用代码。在为应用程序构建通用代码时,我提取了一些基类,我希望它们能够作为库在多个 多平台项目中重复使用。我正在尝试将库添加为 commonMain 中的依赖项。有几件事我不明白。

首先:目前这可能吗?

如果是: 默认的 stdlib-common 是一个 jar 文件,对吗?如果那里不能使用 Java,怎么能在 commonMain 中将 jar 引用为依赖项?还是可以使用从纯 Kotlin 编译的 jar,只要它只具有 Kotlin 依赖项?

如何编译一个可以在 commonMain 中使用的纯 Kotlin jar,就像使用 stdlib-common 一样?是否有关于如何打包的示例 build.gradle 项目或指南?

如果没有: 如果我想避免重复,我还有哪些选择可以在多个多平台项目中重用代码?我真的需要将所有源代码保存在实际的 commonMain 源文件夹中吗?如果是这样,它可以从另一个文件夹链接吗?我尝试添加额外的内容根,但它似乎没有用,因为 Gradle 控制配置,我不确定如何通过 Gradle 在 commonMain 中添加额外的内容根。

enter image description here

提前致谢。

最佳答案

我让它工作了,主要是通过查看 this thread看着 this example .尽管其中一些内容现在可能已经过时,但它帮助我理解了以下内容:

MPP1 可以有另一个 MPP2 作为依赖。 Here是供引用的 MPP 库列表。

MPP2 需要为 MPP1 使用的同一组平台生成 Artifact 。

MPP2 生成平台 Artifact 以及 module file它们被描述的地方。然后 MPP1 可以使用以下配置。得益于模块文件,不需要显式添加每个平台对应的依赖,只需要在commonMain中声明依赖即可。

commonMain {
    dependencies {
        implementation kotlin('stdlib-common')
        implementation 'com.company:mpp2:1.0'
    }
}

关于android - 可在多个 MPP 中重用的 Kotlin 公共(public)库,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58784557/

相关文章:

java - Gradle 'external dependencies'文件夹

java - 使用gradle将依赖信息嵌入到manifest中

linux - Gradle 不读取 gradle.properties

android - 如何重复图像的某些部分

java - EditText 在开始时具有永久缩进

android - 恢复 Activity 时 FragmentManager 中的 IndexOutOfBoundsException

安卓工作室 : always run on all connected devices

java - 无法在android java中实现自定义日历 View 库

android - 如何以编程方式获取 CPU 使用率(使用内核频率)

android - 旧值在 For each 循环中重复