【问题标题】:Cant find the common jar on kotlin multi-platform project在kotlin多平台项目中找不到通用jar
【发布时间】:2020-05-07 17:57:58
【问题描述】:

我由自己的多平台项目创建,并且我有 jvmios 的实现。一旦我构建了项目,它就会生成 5 个 jars

  • 名称-jvm.jar
  • 名称-jvm-sources.jar
  • 名称-ios-sources.jar
  • 名称-metadata.jar
  • 名称-metadata-sources.jar

Name 是我的项目名称。但我无法获得Name-common.jar。因此,当我将其发布到 bintray 时,我无法通过 pom.xml 找到 Name-common.jar。 我对多平台构建的理解有什么问题

【问题讨论】:

  • KMP 中的默认发布称为metadata 而不是common。所以你应该寻找你已经指出你已经拥有的Name-metadata.jar
  • 太棒了!谢谢。一段时间后我想通了。你能帮我解决一个疑问吗,我怎样才能将所有 ios jars(不同的)平台合并到一个原生 jar 中。
  • IOS只有sources jar,因为它的二进制文件是以klib格式发布的。老实说,我还没有和 kotlin native 打过交道。所以,我不能给你更多关于拥有某种 ios fat jar 的建议
  • 谢谢!这太棒了,如果你能把这个作为答案,我会接受它!
  • @andylamax,对stackoverflow.com/questions/61920418/… 有任何帮助:)

标签: kotlin-multiplatform


【解决方案1】:

kotlin 多平台发布模块中的默认工件名称如下。

如果您的项目名为name,则每个目标都会有以下出版物


  1. 普通 -> name-metadata.jar
  2. JVM -> name-jvm.jar
  3. JS -> name-js.jar(里面有name.js)
  4. Android-> name-android.jar(用于发布构建类型)或/和name-android-debug.jar(用于调试)

我不是 kotlin/native 用户,但我相信 ios 会有这样的东西

  1. ios -> name-ios.klib 等等

所以提到你的问题,你可以使用 name-metadata.jar 或 gradle 访问你的模块,com.group.name:name-metadata:${version}

如果你打算在另一个多平台项目中使用它,你可以一直输入项目的名称(即com.group.name:name:${version})。 Gradle 元数据会将其解析为相应的目标

【讨论】:

    猜你喜欢
    • 2019-12-01
    • 2020-09-05
    • 2020-07-29
    • 1970-01-01
    • 1970-01-01
    • 2019-01-25
    • 2020-12-02
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多