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