我正在建立一个Kotlin多平台项目,因此我可以在多个平台上为单个应用程序重用通用代码。在为应用程序构建通用代码时,我提取了一些基类,希望能够将它们作为库在多个多平台项目中重用。我试图将库添加为commonMain中的依赖项。有几件事我不明白。
首先:这目前可行吗?
如果是:
默认的stdlib-common是一个jar文件,对吗?如果无法在其中使用Java,那么jar如何在commonMain中被引用为依赖项?还是可以使用从纯Kotlin编译的jar,只要它仅具有Kotlin依赖项?
如何编译可以与commonstdlib-common相同的方式用于commonMain的纯Kotlin jar?是否有任何样本build.gradle项目或如何包装的指南?
如果不是:
如果要避免重复,我必须在多个多平台项目上重用代码时有哪些选择?我是否真的需要将所有源都保留在实际的commonMain源文件夹中?是否可以从另一个文件夹链接?我尝试添加其他内容根,但由于Gradle控制了配置,因此似乎无法正常工作,我不确定如何通过Gradle在commonMain中添加其他内容根。
提前致谢。
最佳答案
我得到了它的工作,主要是通过浏览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'
}
}