问题标签 [kotlin-multiplatform-mobile]
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.
kotlin - Ktor自定义json对象反序列化
我是 Ktor 的新手,我来自 Retrofit 背景,我想映射这个 json:
进入(实际上我不需要将json本身映射为反序列化版本):
我在官方文档中看到的样本并没有太大帮助,所以我尝试了类似的方法:
问题:
- 我是在正确的道路上,还是有更好的方法来实现它?
- 如何将此添加到我的客户?(可能仅针对特定请求)
ps:这就是我使用 Gson 的方式(忽略这是在 Java 中的事实):
kotlin-multiplatform - 扩展中的 Swift 便利构造函数如何映射到 Kotlin?
如何从 Kotlin 调用这个 Swift 扩展便利构造函数?
根据互操作文档,我期望这应该可以工作:
但是,它不能编译 ( Unresolved reference: create
),而且这种方法似乎会严重污染全局命名空间。另一方面,我真的看不到某个伴侣对象的“规范”映射......
ps 我已经读到静态扩展函数可以通过 Kotlin 中的伴随对象实现,但UIView.Companion.create(...)
似乎也不起作用。
pps:正如有人指出 Kotlin 映射基于 ObjC(现已删除):也许这是相关的:是否可以在 Objective-C 中调用 Swift 便利初始化程序(虽然没有帮助我弄清楚映射)
kotlin-coroutines - iOS 上的 KMM:没有事件循环。使用 runBlocking { ... } 启动一个
我正在尝试coroutines
在一个Kotlin Multiplatform
项目中使用。我也没有这方面的经验。
我正在尝试调用此函数
coroutineScope
开iOS
是这个
这不是给我这个问题的唯一调用,实际上所有调用coroutines
似乎都因此错误而失败:
这就是我导入库的方式
我正在使用Kotlin
1.4.31。此问题仅存在于 中iOS
,Android
完美运行。
我不明白我是否遗漏了什么。
android - Kotlin 多平台模块库
我一直在开发一些我们希望为 Android 和 iOS 提供的库,到目前为止,我们分别为 Android 和 iOS 工作。现在考虑到这么多人开始在他们的应用程序中使用 KMM,我只是想知道是否有人尝试过为 Android 和 iOS 发布使用 Kotlin 创建的库,以及他们的经验以及在开发和集成过程中面临的挑战该库由用户。
如果我使用 Kotlin 1.3.X 版本构建我的库并且用户使用 1.2.X 或 1.4.X,它会有什么影响吗?
android - 避免在 Androids SharedPreferences 中使用默认值
SharedPreferences
提供以下函数来检索字符串:
存储 Int 时,默认值不可为空:
我现在正在寻找存储和检索 nullable Int?
,例如:
解决方案1:当value为null时,删除key
...但我不确定由于共享偏好的异步性质,我是否会遇到多个快速访问的问题?
解决方案 2:对所有内容使用字符串选项:
...但是.toIntOrNull()
对于这样一个简单的任务来说,感觉就像很多开销?
我为什么要这样做?
我希望 Kotlin Multiplattform 允许我将 iOS 版本添加到我现有的 Android 应用程序中。我的目标是一个完全用 Kotlin 编写的“核心”模块,没有特定于平台的依赖项。“核心”则只使用这个接口,由 Android & iOS - 应用程序实现
因为我不想有重复的默认值逻辑,所以我很乐意在我的“核心”模块中处理它
还有其他(更好的)选择吗?我感觉我在重新发明轮子...
kotlin-native - 在 Kotlin Multiplatform Mobile 的共享代码中实现计时器
我正在尝试在 Kotlin Multiplatform Mobile 项目的共享代码中实现计时器功能。计时器应运行 n 秒,并且每隔一秒它应回调以更新 UI。此外,UI 中的按钮可以取消计时器。这不可避免地意味着我必须启动某种新线程,我的问题是哪种机制适合使用 - 工作者、协程或其他?
我尝试使用带有以下代码的协程,但在 iOS 上遇到 InvalidMutabilityException:
我确实知道 moko-time 库,但我觉得这应该是可能的,而不需要依赖,我想学习如何。
firebase - 如何在 Kotlin 多平台移动设备中实现 Firebase Crashlytics?
如果有人以前这样做过,你能告诉我你把 google-service.json 放在哪里了吗?android依赖,你装了吗?在android模块中还是在common模块中?在IOS上我也不知道怎么上手。
sqldelight - 如何在后台线程中执行查询?
我目前正在寻找一个由 SQLdelight 支持的 KMM 应用程序,用于所有与域相关的操作。
SQLdelight 似乎提供了非常好的接口,但是似乎所有的写调用(插入/更新/删除)都是使用阻塞调用实现的,所以我担心它会通过阻塞主线程来损害应用程序的响应能力很多.
是否有推荐的方法来执行此类操作而不阻塞主线程?
该应用程序也必须在 iOS 上运行,所以我不能承受太多的冻结。
kotlin - Kotlin Multiplatform:IllegalStateException:必须是主线程
我正在使用Koin 3.0.0-alpha-4
版本,当我尝试使用注入的类时koin
,它会在 iOS 端引发异常:
KotlinException=kotlin.IllegalStateException: Must be main thread, KotlinExceptionOrigin
我有一个单例类,我正在使用 koin 初始化对象,如下所示:
如果我使用由 koin 注入的appStateRepository
内部后台线程 ( Dispatchers.Default
),那么它会引发异常IllegalStateException: Must be main thread
,但如果我使用 appStateRepositoryDemo,它就可以正常工作
这是我从 iOS 调用以注入模块的方法
这是用法:
预期的行为 它应该适用于 iOS,就像它适用于 Android 一样
Koin 3.0.0-alpha-4
附加模块定义
Coroutines 1.4.2-native-mt
更新
我使用了错误的 Koin 库名称,现在我正在使用:
现在我有另一个例外:
gradle - 如何正确导入 Kotlin Multiplatform 项目(并且仅在构建时运行必要的任务)
当我使用导入的 Kotlin 多平台项目开发 android 应用程序时,是否可以不运行所有 iOS(kotlin/Native)任务(cinterop + cocoapods)?
我们目前的KMP项目(SharedLibrary)结构是:
我们有一个单独的 Android 项目 (SomeApp),具有以下设置来导入我们的共享库。
问题是......这是一个非常烦人的开发模式,特别是因为 iOS 工件(cinterop + cocoapods 等)每次发生变化时都会重新构建,即使我只关心 android 库工件。
我尝试过的事情:
- 我尝试切换到复合构建,但出现与 gradle 无法找到多平台插件有关的错误。
- 我正在考虑切换到本地 maven,但它肯定会减慢开发过程,所以我反对。
这是我们设置的问题吗?还是这些任务只是相互依赖而没有办法解决?