当前位置: 首页 > 知识库问答 >
问题:

可在多个MPP中重用的Kotlin公共库

梁丘经艺
2023-03-14

我正在设置一个静态编程语言多平台项目,以便我可以在多个平台中为单个应用程序重用公共代码。在为应用程序构建公共代码时,我提取了一些基类,我希望能够在多个多平台项目中作为库重用。我正在尝试将库作为依赖项添加到Common Main中。有几件事我不明白。

首先:这目前可能吗?

如果是:默认的 stdlib-common 是 jar 文件,对吗?如果没有Java可以在那里使用,为什么jar可以在commonMain中被引用为依赖项?或者可以使用从纯Kotlin编译的jar,只要它只有Kotlin依赖项?

如何编译一个纯静态编程语言jar,该jar可以像使用stdlib-Common一样在Common Main中使用?是否有关于如何打包的示例build.gradle项目或指南?

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

提前谢谢。

共有1个答案

艾俊晖
2023-03-14

我得到了它的工作,主要是通过看这个线程和看这个例子。尽管其中一些可能已经过时,但它帮助我理解了以下内容:

MPP1可以有另一个MPP2作为依赖项。这里有一个MPP库的列表供参考。

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

MPP2 生成平台工件以及描述它们的模块文件。然后,MPP1 可以使用以下配置。多亏了模块文件,不需要显式添加每个平台的相应依赖项,依赖项只需要在commonMain中声明。

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