android - Kotlin 通用库可在多个 MPP 中重用
问题描述
我正在建立一个 Kotlin 多平台项目,这样我就可以在多个平台上为单个应用程序重用通用代码。在为应用程序构建通用代码时,我提取了一些我希望能够在多个多平台项目中作为库重用的基类。我正在尝试将库添加为 commonMain 中的依赖项。有几件事我不明白。
首先:这目前可能吗?
如果是: 默认的 stdlib-common 是一个 jar 文件,对吗?如果不能在 commonMain 中使用 Java,怎么能在 commonMain 中将 jar 引用为依赖项?还是可以使用从纯 Kotlin 编译的 jar,只要它只有 Kotlin 依赖项?
如何编译一个可以在 commonMain 中使用的纯 Kotlin jar,就像使用 stdlib-common 一样?是否有任何关于如何打包的示例 build.gradle 项目或指南?
如果不是: 如果我想避免重复,我有哪些选择可以在多个多平台项目上重用代码?我真的需要将所有源代码保存在实际的 commonMain 源文件夹中吗?如果是这样,它可以从另一个文件夹链接吗?我尝试添加额外的内容根,但它似乎不起作用,因为 Gradle 控制配置,我不确定如何通过 Gradle 在 commonMain 中添加额外的内容根。
提前致谢。
解决方案
我得到了它的工作,主要是通过查看这个线程并查看这个示例。虽然其中一些现在可能已经过时,但它帮助我理解了以下内容:
MPP1 可以有另一个 MPP2 作为依赖项。这是 MPP 库的列表以供参考。
MPP2 需要为 MPP1 使用的同一组平台生成工件。
MPP2 生成平台工件以及描述它们的模块文件。MPP1 然后可以使用以下配置。得益于模块文件,不需要显式添加各个平台对应的依赖,只需要在commonMain中声明依赖即可。
commonMain {
dependencies {
implementation kotlin('stdlib-common')
implementation 'com.company:mpp2:1.0'
}
}
推荐阅读
- dart - 在 Dart 中切片字符串
- python - 从文章标题获取 DOI
- java - Android ROOM - 我如何观察 LiveData 变化(每次设置我的日历时)并将 LiveData 列表结果发送到我的适配器?
- c# - C# - 超时后终止任务
- sql - .Net Core MVC 从模型更新数据库错误
- github - Azupre Pipelines + Github + 无法为拉取请求创建 CHECKS
- validation - 使用 JWKS golang 进行 JWT 验证
- javascript - 如何解决此按钮未显示的错误
- javascript - html2canvas 图像未保存
- google-cloud-platform - YouTube Data API v3:无需打开浏览器即可从服务器上传视频