问题标签 [kotlin-multiplatform]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
1 回答
941 浏览

android - 如何在 Kotlin Multiplatform 项目的 iOS 模块中将字符串转换为字节数组?

这是我对 Kotlin Multiplatform 的第一次实验,似乎我还没有完全掌握一些东西。

我的后端通过 UDP 多播中的套接字发送通知消息(我可能需要在每个平台上实现这部分,因为我认为 Kotlin 不会为我做这件事)。然后我想将此消息(以字节数组的形式)传递给我的公共模块。该模块负责解析消息并将结果返回给平台。

只是为了简化我的工作,我希望每个平台都返回 ByteArray 的test消息。

这是我的common.kt文件:

这是安卓文件:

我的问题是iOS部分原因。我不知道如何将字符串转换为 ByteArray。有toCharArray()功能但没有toByteArray()。此外,还有toByte()功能。

0 投票
1 回答
352 浏览

node.js - kotlin multiplateforme to js:生成 package.json

我使用插件“org.jetbrains.kotlin.multiplatform”来在java和js中生成一个lib

任何人都有一段代码来构建包含所有依赖项的 package.json 吗?

0 投票
2 回答
1530 浏览

kotlin - 在 kotlin js 中加载资源文件(json)

鉴于此代码,我应该将 file.json 放在哪里才能在运行时中找到?

我尝试将它放在 src/main/resources/ 下,但没有运气。我还使用 Gradle 将 kotlin 编译为带有kotlin2js插件的 js。

0 投票
0 回答
156 浏览

android - 关于 Kotlin 多平台依赖项的 Gradle 警告

我正在构建一个 Kotlin 多平台项目。在我的主 build.gradle文件中,我定义了几个模块及其依赖项:

尽管项目构建并运行良好,但 IDEA 会针对所有这些依赖项显示警告:

关于 Kotlin 多平台依赖项的 Gradle 警告

知道为什么会出现这些警告,例如项目设置中的问题吗?有没有办法让它们消失?

0 投票
1 回答
479 浏览

kotlin - 如何在 Kotlin Multiplatform(纯 kotlin)中进行延迟

纯 Kotlin 中是否有与 JVM 的 Thread.sleep() 等效的用于 MPP 项目?这可以在每个平台上使用 实现expected,但我问的是不使用该方法的解决方案。

0 投票
2 回答
794 浏览

gradle - 如何将项目依赖项添加到由 `kotlin-multiplatform` 插件创建的特定平台目标?

以前,使用 Gradle 构建多平台项目依赖于每个目标平台的单独 Gradle 插件:kotlin-platform-commonkotlin-platform-jskotlin-platform-jvm.

从 Kotlin 1.3 开始,现在统一使用一个kotlin-multiplatform插件。当前文档指定了如何使用这种方法设置多平台项目

但是,在我的项目中,我有多个多平台项目,它们之间存在一些依赖关系。使用旧的多平台配置,每个不同的平台都是一个单独的模块,并且在项目之间添加依赖项需要将每个特定于平台的模块中的项目引用添加到另一个项目中的相应模块:例如,project(':some-library:some-library-js')从另一个 JS 中添加对 JS 模块的依赖项模块。

在迁移到新的多平台配置时,我现在需要将使用旧配置方法配置的项目的依赖项添加到使用新kotlin-multiplatform插件配置的项目中。

鉴于平台特定的模块现在由新插件指定和管理,我该怎么做?

0 投票
1 回答
704 浏览

gradle - Ktor 和 Kotlin 多平台的胖 jar 问题

我有一个针对 Android 和 iOS 的 kotlin 多平台项目,并且最近集成了 ktor,以便共享库可以加载 Web 资源。它在 iOS 上运行,但在 Android 上出现此错误:

java.lang.NoClassDefFoundError: Failed resolution of: Lio/ktor/client/HttpClientJvmKt

我猜我的构建管道正在创建一个不包含 ktor 需要的所有依赖项的 jar。所以我正在尝试使用 gradle shadow 插件(com.github.jengelman.gradle.plugins:shadow:2.0.4)制作一个胖罐子。这是我的任务:

jar 从 300Kb 跃升至 8.5Mb。

结果是一个新的错误:More than one file was found with OS independent path 'kotlinx/coroutines/CoroutineExceptionHandler.kotlin_metadata'

您会注意到我已尝试从 中排除文件shadowJar,但它不起作用。

0 投票
1 回答
744 浏览

kotlin - 如何在 Kotlin Multiplatform 中使用 BigDecimal?

我按照教程https://kotlinlang.org/docs/tutorials/native/mpp-ios-android.html,然后我成功创建了 androidmain、iosmain 和 commonmain 的文件夹。
但是,当我想在 commonmain 中实现数据类型 BigDecimal 时。它行不通。我需要货币的十进制数据类型。

0 投票
1 回答
19709 浏览

kotlin - 在 kotlin-multiplatform 上生成 UUID?

是否有任何 kotlin-multiplatform 常用函数来获取 UUID/GUID?

我不希望使用 expect-actual 制作单独的 Android 和 iOS 版本。

0 投票
1 回答
1712 浏览

android - 如何将字节从 Swift (iOS) 传递到 Kotlin 通用模块?

为了在 android 和 iOS 应用程序之间共享协议的实现,我正在尝试使用 Kotlin Multiplatform。我设置了一个基本的多平台项目,如此所述。

它定义了共享模块中的通用代码...

... 可以在 iOS 项目中使用CommonKt.createApplicationScreenMessage()

现在我想在 common 模块中进行 IO 操作。我为此找到了 Kotlinx-io,并且可以在公共模块中使用它。

但是如何正确设计 kotlin 代码和 swift 代码之间的 api,以便我可以将 InputStream/ByteArray/ByteReadPacket 等价物从 Swift 传递到 kotlin 模块?

例如像 ByteReadPacket 这样的 kotlinx-io 类型:

Kotlin 常用模块:

斯威夫特 iOS 应用

此示例不起作用,因为 swift byteArray 无法与 KotlinByteArray 互操作。

我如何实现这一目标?我是否需要为每个平台定义 api 端点,例如在这种情况下在 Kotlin 多平台项目的 ios 模块中?还是有帮助方法从 ios 数据类型创建 kotlinx-io 数据类型?