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

时间:2019-11-09 23:44:31

标签: android gradle kotlin kotlin-multiplatform

我正在建立一个Kotlin多平台项目,因此我可以在一个应用程序的多个平台上重用通用代码。在为应用程序构建通用代码时,我提取了一些基类,希望将这些基类重用作 multiple 多平台项目中的库。我试图将库添加为commonMain中的依赖项。有几件事我不理解。

首先:目前有可能吗?

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

如何编译可用于commonMain的纯Kotlin jar(与使用stdlib-common相同)?是否有任何样本build.gradle项目或如何包装的指南?

否: 如果要避免重复,我必须在多个多平台项目上重用代码时有哪些选择?我实际上是否需要将所有源都保留在实际的commonMain源文件夹中?是否可以从另一个文件夹链接?我尝试添加其他内容根,但由于Gradle控制了配置,因此似乎无法正常工作,我不确定如何通过Gradle在commonMain中添加其他内容根。

enter image description here

谢谢。

1 个答案:

答案 0 :(得分:0)

主要通过查看this thread和查看this example,使它正常工作。尽管其中有些可能已经过时,但它帮助我了解了以下内容:

MPP1可以具有另一个MPP2作为依赖项。 Here是MPP库列表供参考。

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

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

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