我想将一个文件与我的 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
但是
我也知道
moko-resource
之类的项目,但它也没有针对本地库的解决方案。它只支持 iOS、Android 和 Web 上的应用程序。
谢谢。
不幸的是 KMM 现在没有为此提供解决方案(并且可能不会在最近的将来提供),它需要为 Kotlin/Native 创建某种资源管理器。这是一个重大的架构决策,看起来现在不是优先事项。您可以在 Kotlin 的 Youtrack 中跟踪这方面的进展。
作为解决方法,您可以创建任务,在库的 Gradle 构建中将资源添加到
.klib
(.klib
已经有特殊的 resources
文件夹,您可以为此使用它,默认情况下它对于非 JVM 目标是空的),但是您的图书馆消费者应该以某种方式将这些资源与最终的可执行文件打包在一起(参见示例)。