问题标签 [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.
jpa - 如何在 kotlin/多平台项目中使用 JPA 注释?
我想使用 kotlin/multiplatform 实现一个项目,该项目由 jvm 上的后端和 js 中的 web-app 组成。结构将是这样的:
应用程序使用的数据类属于共享项目,但要使用 jpa,我需要 jvm-annotations。
一个解决方案是不使用 kotlin 数据类并在 jvm 中继承。我还尝试使用实验性实现 jpa 注释,@OptionalExpectation
但此后无济于事:
- 它们在使用时需要非注释类型,
typealias
而无法使用@OptionalExpectation
. - 让多平台注释从多平台注释继承是不可能的,因为 kotlin 还不支持注释继承。
我应该避免使用数据类功能并使用继承还是有更优雅的方式?
ios - JSON 序列化冻结 UI
我正在为 Android 和 iOS 制作一个 Kotlin 多平台项目。我的目标是在公共模块中进行网络和 JSON 序列化,并在目标平台中使用该数据。
但我有一个问题:它阻止了 iOS 应用程序上的 UI。下载很好,因为它是通过网络库完成的,但是当 JSON 足够大并且序列化需要一些时间时,它会冻结 UI,直到序列化完成。
这是我的步骤:
常见的
使用 ktor 库的请求方法:
带有 JSON 序列化的请求方法:
执行请求:
调度程序和协程范围:
iOS
实现DownloadListener
方法:
并调用请求
我假设它应该在主线程中异步执行而不会阻塞 UI。
我究竟做错了什么?我在调用协程时尝试使用withContext
,但没有帮助。
有没有什么办法可以在公共模块中做繁重的任务而不阻塞特定平台的UI?
kotlin - Kotlin 静态库需要在 Windows 下链接到哪些其他库?
启动一些多平台 kotlin,我的 Android 工作正常,我还可以从同一源编译静态 Windows 库。这很好:-)
但是,当链接到该静态库时,我会丢失符号错误,例如LNK2019 unresolved external symbol pthread_once referenced in function _ZN5konan5abortEv
.
现在我知道这个特定的方法来自 pthread,所以如果我下载并添加那个静态库,我可以修复这个错误。
但是,还有一些其他缺失的符号(例如LNK2019 unresolved external symbol _ZNSt15__exception_ptr13exception_ptrC1ERKS0_ referenced in function _ZL21KonanTerminateHandlerv
),我似乎无法找出它们来自哪些库。此外,我在文档中找不到任何依赖项列表。
有谁知道我需要哪些库来链接到 Kotlin Native 在 Windows 上生成的库?
json - 将 JSON 数组解析为 Map使用 Kotlinx.serialization
我正在编写一个 Kotlin 多平台项目 (JVM/JS),我正在尝试使用 Kotlinx.serialization 将 HTTP Json 数组响应解析为 Map
JSON是这样的:
到目前为止,我能够将该 JSON 作为字符串,但我找不到任何文档来帮助我构建地图或其他类型的对象。所有这些都说明了如何序列化静态对象。
我不能使用@SerialName
,因为密钥不固定。
当我尝试返回 aMap<String, String>
时,我收到此错误:
最后,我想得到 aMap<String, String>
或 aList<MyObject>
我的对象可能在的地方MyObject(val id: String, val value: String)
有没有办法做到这一点?否则我只想写一个字符串阅读器来解析我的数据。
gradle - Gradle 无法解析符号
我有以下 build.gradle 文件:
import org.jetbrains.kotlin.gradle.tasks.FatFrameworkTask
用红色标记有错误
无法解析符号“FatFrameworkTask”
尽管一切正常,但我不喜欢在我的项目中出现错误。
gradle-kotlin-dsl - Kotlin 多平台:使用 Gradle Kotlin dsl 跳过某些平台的发布
我有 Kotlin 多平台项目。我想将部分工件发布到存储库,跳过另一部分。我正在使用以下配置:
例如,我想跳过 iosX64,因为我做了一个“胖框架”并且我想发布它。如何配置 Gradle Kotlin dsl 以避免发布?
kotlin - Kotlin 多平台编程中的数据类
我是 kotlin 的新手,想构建一个多平台应用程序。对于公共部分,我想使用包含平台特定功能的数据类。
是否可以在特定于平台的声明中使用 kotlin 数据类?
就像是
此致
unit-testing - Kotlin 多平台项目在 IDEA 中运行 JVM 模块测试
我正在使用具有以下源集的 kotlin 多平台项目:
- 常见的主要
- 普通测试
- iosArm64Main
- jvmMain
- jvmTest
我想使用“绿色箭头”在 Idea 下的 jvmTest 中运行单元测试。运行测试 Idea 不会将 jvmTest 下的测试资源文件夹复制到 build 文件夹。如果我使用 Idea 设置“将 IDE 构建/运行操作委托给 Gradle”并使用“Gradle Test Runner”运行测试,则资源将复制到 processesResources 下。但是Idea仍然看不到它们并且测试失败了。
当我使用 Gradle 构建测试时运行良好。
知道如何解决吗?
kotlin - 无法在 kotlin 多平台中访问预期的类构造函数参数
我目前正在使用 kotlin 开发一个多平台模块。为此,我依靠expect
/actual
机制。
我声明了一个简单的类Common.kt
:
我想在通用方法中使用定义的类(也存在于 中Common.kt
):
实际实现定义在Jvm.kt
:
问题是我的hello
函数中出现以下错误
未解决的参考:名称
我究竟做错了什么?
kotlin - 如何使用针对 linuxX64 的 ktor-client-core 修复“未解决的参考:HttpClient”
我正在尝试在第一步中构建一个针对 linuxX64 的 Kotlin Multiplatform 命令行应用程序。因此,我想构建一个基于通用模块中使用的 Ktor 的客户端。
这是我相当简单的设置:
版本概述
- 克托尔 1.1.5
- Kotlin 多平台 1.3.31
- 摇篮 5.3.1
构建.gradle.kts
src/linuxMain/kotlin/Main.kt
src/commonMain/kotlin/MyClient.kt
当我构建项目时,我得到以下构建问题:
我是 Kotlin Native/Mutliplatform 和 Ktor 的新手。如果我的设置有误,请耐心等待...