如何在 Kotlin Multiplatform 中为 linuxX64 等原生目标捆绑和访问资源?

问题描述 投票:0回答:1

我想将一个文件与我的 Kotlin Multiplatform 库捆绑在一起。该库同时支持 JVM 和 linuxX64 目标。

在 JVM 上,我可以使用

MyClass::class.java.getResourceAsStream()
和朋友访问捆绑文件。

但是在linuxX64上,我们怎么办呢?我们只需要获得捆绑资源的路径。之后,打开文件并阅读它应该很容易。

  • 是否支持资源捆绑?
  • 如果支持,我们如何获取捆绑资源文件的路径?

Compose Multiplatform 似乎有一些捆绑资源的解决方案,如下所述: https://github.com/JetBrains/compose-jb/blob/master/tutorials/Native_distributions_and_local_execution/README.md

但是

  • 这只适用于应用程序,不适用于库
  • 适用于使用 Compose 的应用程序

我也知道

moko-resource
之类的项目,但它也没有针对本地库的解决方案。它只支持 iOS、Android 和 Web 上的应用程序。

谢谢。

kotlin resources kotlin-multiplatform kotlin-native
1个回答
0
投票

不幸的是 KMM 现在没有为此提供解决方案(并且可能不会在最近的将来提供),它需要为 Kotlin/Native 创建某种资源管理器。这是一个重大的架构决策,看起来现在不是优先事项。您可以在 Kotlin 的 Youtrack 中跟踪这方面的进展。

作为解决方法,您可以创建任务,在库的 Gradle 构建中将资源添加到

.klib
.klib
已经有特殊的
resources
文件夹,您可以为此使用它,默认情况下它对于非 JVM 目标是空的),但是您的图书馆消费者应该以某种方式将这些资源与最终的可执行文件打包在一起(参见示例)。

© www.soinside.com 2019 - 2024. All rights reserved.