问题标签 [kmm]

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 投票
0 回答
125 浏览

android-studio - 无法为 Kotlin Multi Plateform Mobile 应用程序运行 IOS 测试

我刚刚在 Android Studio 上安装了 KMM 插件来创建一个多平台移动应用程序。我遵循了文档https://kotlinlang.org/docs/kmm-create-first-app.html#run-your-application-on-android中的所有步骤,但是当我尝试为 IOS 运行测试时,我收到了“没有可用的任务”。有人和我有同样的问题吗?我在 Mac Book air M1 计算机上工作,并且安装了 Xcode(android 和 IOS 的仿真都可以)。谢谢 ! 在此处输入图像描述

0 投票
1 回答
48 浏览

swift - 从 KotlinMultiPlatform (KMM) 中的共享类中读取字符数组

如何从 Kotlin 模块中正确读取 Swift 中的可变数组中的数据? Kotlin 共享模块:

迅速:

0 投票
3 回答
118 浏览

kotlin - 在使用实现类的接口中实现泛型方法

我想要一个父接口/抽象类上的方法,它利用泛型方法传入实现类的类。

这不起作用,因为Json.encodeToString不知道“this”的类别。

@Serializable似乎实现KSerializer了,所以理论上我可以要求域从它继承,但该接口是模板化的。并且标记实现类@Serializable似乎KSerializer直到编译时才实现,因此会产生错误。

如何实现此toJSON()方法或告诉 Domain 它的实现者必须是@Serializable/ KSerializer

我也试过:

但这会导致:

kotlin.IllegalStateException: Only KClass supported as classifier, got T

所有这一切的另一个复杂因素是我试图在 KMM 中执行此操作。

0 投票
1 回答
151 浏览

json - 如何将 JSON 字符串转换为 KMM 中的对象

以前,我问过这个问题:在使用实现类的接口中实现泛型方法,该类允许将对象转换为 JSON 字符串。

但是,现在我想扭转这个过程。理想情况下,这看起来像:

但是,我无法弄清楚如何直接从 JSON 字符串构造对象。

下一个最佳选择是创建一个静态生成器方法:

但是,这根本不起作用,因为 User 没有继承 Domain 的伴随对象。第三个最佳选择:

这在 Android 方面确实有效,但是由于 fromJSON 被声明为内联并具体化,它根本不会从 KMM 暴露给 iOS。

这让我想到了我目前的解决方案:

这可行,但是它需要将上述样板代码添加到每个“域”对象中。

反正有什么可以改进我目前的解决方案吗?(当然,链条越高越好。)

0 投票
1 回答
145 浏览

android - KMM Kotlin Multiplatform Mobile 错误:无法检测已安装 Xcode 的版本

我打算在我的机器上尝试 KMM。

当我尝试在 android 上运行初始化应用程序“Hello World”时,这很好。但是当我在 iOS 上运行它时,出现了问题。

在我安装 Android Studio 之前,我在我的机器上安装了 Xcode 13.1 版。

我在互联网上找不到任何答案。

我试图重新安装我的 Android Studio,但它什么也没做

图片

0 投票
1 回答
478 浏览

ios - 在 Ktor 中为 iOS Http 客户端刷新身份验证令牌

我有一个 KMM 项目,其中我一直在使用 Ktor 进行 API 调用。我有一个要求,如果它们已过期,我需要在刷新令牌的帮助下更新我的访问令牌。基本上我只需要在我的 Ktor 客户端中添加一个身份验证模块。不,我已经浏览了所有Ktor 文档Auth并在我的 KMM 中添加了模块。

现在,当我在我的 http 客户端中添加身份验证模块时,它会成功添加,并且每当我UnAuthorized从任何 API 收到用户错误时,它都会调用我的刷新令牌 API。问题是即使它调用了我的刷新令牌 API,但在刷新令牌成功时,它不会调用我收到UnAuthorized用户错误的其他 API。

它在 Android 中按预期工作,但唯一的问题是在 iOS 客户端中。

预期(在 Android Http 客户端中工作正常):-

  • 调用任何 API -> 如果收到任何UnAuthorized用户错误调用刷新令牌 API -> 刷新令牌 API 的 onSuccess -> 使用更新的刷新令牌再次调用第一个 API。

我面临的问题:-

  • 调用任何 API -> 如果收到任何UnAuthorized用户错误,则调用刷新令牌 API -> onSuccess of refresh token API -> 在此步骤中什么也不做,只会从第一个 API 引发未经授权的用户错误。

HttpClient对于 iOS:-

Android客户端(几乎相同):-

Ktor 版本:- 1.6.2(在阅读此问题后也尝试了 1.6.4,但没有成功)

0 投票
1 回答
65 浏览

ktor - Ktor 中的特殊字符解析

我正在尝试在 KMM 项目中使用 Ktor 通过 api 解析一些特殊字符,但似乎 Ktor 不支持它?

例如:-我试图在这里解析“Saut� Pans”,“�”是一个特殊字符,Ktor 抛出一个异常说:- io.ktor.utils.io.charsets.MalformedInputException: Input length = 1。现在我尝试传递不同的标题,例如传递不同ContentTypeUTF-8ISO-8859-2但没有帮助.

而解析相同的 api 响应Gson()对我有用。

任何解决方案或解决方法,以便我现在可以在我的响应中解析这种特殊字符?

0 投票
1 回答
431 浏览

android-studio - KMM:找不到 embedAndSignAppleFrameworkForXcode 任务

我按照“创建您的第一个应用程序”指南 https://kotlinlang.org/docs/kmm-create-first-app.html创建了一个基本的 KMM

然后我尝试在 Android Studio 的终端中使用以下命令构建框架。./gradlew :shared:embedAndSignAppleFrameworkForXcode

但我收到了这个错误。在项目“:shared”中找不到任务“embedAndSignAppleFrameworkForXcode”。

Android Studio 2020.3.1 补丁 3 Kotlin 1.5.31

SO上有一个类似的问题。人们说 embedAndSignAppleFrameworkForXcode 至少应该适用于 Kotlin 1.5.20。 KMM - 在项目 ':shared' 中找不到错误任务 'embedAndSignAppleFrameworkForXcode' 但它不在我的设置中。

有谁知道如何解决这一问题?

更新从 XCode/Build Phases 脚本启动时,该任务运行良好。不知何故,它无法从终端(Android Studio 或系统一)启动。

0 投票
1 回答
266 浏览

macos - KMM 与 CocoaPods。错误:cocoapods-generate 需要 CocoaPods >= 1.5.0

我正在尝试向测试 kmm 项目添加一个简单的 CocoaPods 依赖项,如本教程中所述

不幸的是,我收到了这个错误

如何修复此错误?

我的设置

看起来cocoapods-generate的版本已经过时了。脚本的最新版本是 2.2.2

无论我多么努力,我都无法将 cocoapods-generate 升级到 1.4.1 以上,我正在使用这个命令安装它

我在这个问题中找到了这条信息

潜在的错误是 ruby​​ 3 上无法安装 2.2.1 版本的 cocoapods-generate,因为它依赖于 cocoapods-disable-podfile-validations ~> 0.1.1,并且 cocoapods-disable-podfile-validations 的唯一版本满足那(0.1.1)需要红宝石〜> 2.1。

不知道如何解决这个难题。

0 投票
0 回答
8 浏览

xcode13 - KMM:无法在我的 beta 模式下成功构建

目前,我在KMM项目中遇到了意想不到的问题。当我Debug在 Xcode 中使用 mode 编译我的 ios 项目时,它可以非常成功。但是当我在模式下编译我的 ios 项目时Beta,它失败了。我不知道Beta模式是否需要特殊配置。(我在模拟器arm64上测试过,没有用真机)。

Here is my error in Xcode13:

在此处输入图像描述