问题标签 [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.

0 投票
1 回答
619 浏览

kotlin - Ktor自定义json对象反序列化

我是 Ktor 的新手,我来自 Retrofit 背景,我想映射这个 json:

进入(实际上我不需要将json本身映射为反序列化版本):

我在官方文档中看到的样本并没有太大帮助,所以我尝试了类似的方法:

问题:

  1. 我是在正确的道路上,还是有更好的方法来实现它?
  2. 如何将此添加到我的客户?(可能仅针对特定请求)

ps:这就是我使用 Gson 的方式(忽略这是在 Java 中的事实):

0 投票
0 回答
90 浏览

kotlin-multiplatform - 扩展中的 Swift 便利构造函数如何映射到 Kotlin?

如何从 Kotlin 调用这个 Swift 扩展便利构造函数?

根据互操作文档,我期望这应该可以工作:

但是,它不能编译 ( Unresolved reference: create),而且这种方法似乎会严重污染全局命名空间。另一方面,我真的看不到某个伴侣对象的“规范”映射......

ps 我已经读到静态扩展函数可以通过 Kotlin 中的伴随对象实现,但UIView.Companion.create(...)似乎也不起作用。

pps:正如有人指出 Kotlin 映射基于 ObjC(现已删除):也许这是相关的:是否可以在 Objective-C 中调用 Swift 便利初始化程序(虽然没有帮助我弄清楚映射)

0 投票
2 回答
1688 浏览

kotlin-coroutines - iOS 上的 KMM:没有事件循环。使用 runBlocking { ... } 启动一个

我正在尝试coroutines在一个Kotlin Multiplatform项目中使用。我也没有这方面的经验。

我正在尝试调用此函数

coroutineScopeiOS是这个

这不是给我这个问题的唯一调用,实际上所有调用coroutines似乎都因此错误而失败:

这就是我导入库的方式

我正在使用Kotlin1.4.31。此问题仅存在于 中iOSAndroid完美运行。

我不明白我是否遗漏了什么。

0 投票
1 回答
94 浏览

android - Kotlin 多平台模块库

我一直在开发一些我们希望为 Android 和 iOS 提供的库,到目前为止,我们分别为 Android 和 iOS 工作。现在考虑到这么多人开始在他们的应用程序中使用 KMM,我只是想知道是否有人尝试过为 Android 和 iOS 发布使用 Kotlin 创建的库,以及他们的经验以及在开发和集成过程中面临的挑战该库由用户。

如果我使用 Kotlin 1.3.X 版本构建我的库并且用户使用 1.2.X 或 1.4.X,它会有什么影响吗?

0 投票
2 回答
83 浏览

android - 避免在 Androids SharedPreferences 中使用默认值

SharedPreferences提供以下函数来检索字符串:

存储 Int 时,默认值不可为空:

我现在正在寻找存储和检索 nullable Int?,例如:


解决方案1:当value为null时,删除key

...但我不确定由于共享偏好的异步性质,我是否会遇到多个快速访问的问题?


解决方案 2:对所有内容使用字符串选项:

...但是.toIntOrNull()对于这样一个简单的任务来说,感觉就像很多开销?


我为什么要这样做?

我希望 Kotlin Multiplattform 允许我将 iOS 版本添加到我现有的 Android 应用程序中。我的目标是一个完全用 Kotlin 编写的“核心”模块,没有特定于平台的依赖项。“核心”则只使用这个接口,由 Android & iOS - 应用程序实现

因为我不想有重复的默认值逻辑,所以我很乐意在我的“核心”模块中处理它


还有其他(更好的)选择吗?我感觉我在重新发明轮子...

0 投票
2 回答
264 浏览

kotlin-native - 在 Kotlin Multiplatform Mobile 的共享代码中实现计时器

我正在尝试在 Kotlin Multiplatform Mobile 项目的共享代码中实现计时器功能。计时器应运行 n 秒,并且每隔一秒它应回调以更新 UI。此外,UI 中的按钮可以取消计时器。这不可避免地意味着我必须启动某种新线程,我的问题是哪种机制适合使用 - 工作者、协程或其他?

我尝试使用带有以下代码的协程,但在 iOS 上遇到 InvalidMutabilityException:

我确实知道 moko-time 库,但我觉得这应该是可能的,而不需要依赖,我想学习如何。

0 投票
1 回答
412 浏览

firebase - 如何在 Kotlin 多平台移动设备中实现 Firebase Crashlytics?

如果有人以前这样做过,你能告诉我你把 google-service.json 放在哪里了吗?android依赖,你装了吗?在android模块中还是在common模块中?在IOS上我也不知道怎么上手。

0 投票
0 回答
77 浏览

sqldelight - 如何在后台线程中执行查询?

我目前正在寻找一个由 SQLdelight 支持的 KMM 应用程序,用于所有与域相关的操作。

SQLdelight 似乎提供了非常好的接口,但是似乎所有的写调用(插入/更新/删除)都是使用阻塞调用实现的,所以我担心它会通过阻塞主线程来损害应用程序的响应能力很多.

是否有推荐的方法来执行此类操作而不阻塞主线程?

该应用程序也必须在 iOS 上运行,所以我不能承受太多的冻结。

0 投票
1 回答
574 浏览

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,但如果我使用 appStateRepositoryDe​​mo,它就可以正常工作

这是我从 iOS 调用以注入模块的方法

这是用法:

预期的行为 它应该适用于 iOS,就像它适用于 Android 一样

Koin 3.0.0-alpha-4

附加模块定义

Coroutines 1.4.2-native-mt

更新

我使用了错误的 Koin 库名称,现在我正在使用:

现在我有另一个例外:

0 投票
2 回答
186 浏览

gradle - 如何正确导入 Kotlin Multiplatform 项目(并且仅在构建时运行必要的任务)

当我使用导入的 Kotlin 多平台项目开发 android 应用程序时,是否可以不运行所有 iOS(kotlin/Native)任务(cinterop + cocoapods)?

我们目前的KMP项目(SharedLibrary)结构是:

我们有一个单独的 Android 项目 (SomeApp),具有以下设置来导入我们的共享库。

问题是......这是一个非常烦人的开发模式,特别是因为 iOS 工件(cinterop + cocoapods 等)每次发生变化时都会重新构建,即使我只关心 android 库工件。

我尝试过的事情:

  • 我尝试切换到复合构建,但出现与 gradle 无法找到多平台插件有关的错误。
  • 我正在考虑切换到本地 maven,但它肯定会减慢开发过程,所以我反对。

这是我们设置的问题吗?还是这些任务只是相互依赖而没有办法解决?