问题标签 [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 回答
210 浏览

kotlin-coroutines - Ktor 客户端单元测试在 CoroutineScope.launch() 中挂起/冻结

我的 KMM 项目测试在新范围内异步启动的 ktor 客户端请求时遇到问题。出于测试目的,我Dispatchers.Unconfined作为新范围的上下文传入(在我正在使用的实际生产代码中newSingleThreadContext())。

我在下面创建了一个非常简化的悬挂 ktor 请求版本:

请注意,如果您不在 CoroutineScope.launch 中调用,那么它可以正常工作。然后挂起/冻结仅在 CoroutineScope.launch 中调用时发生。同样,这是一个极其简化的示例,但在我的实际代码中,以这种方式设置它的原因是,我可以在最终发出 ktor 请求之前在后台线程中处理一些数据 - 因此是 CoroutineScope.launch。另请注意,我的代码在 iOS 模拟器上运行时似乎运行良好。它仅在作为单元测试运行时挂起

我是否遗漏了一些东西来完成这项工作,或者这是一个错误?

0 投票
0 回答
60 浏览

ios - kmm ios 模拟器服务版本与预期的服务版本不匹配错误

使用 kotlin-multiplatform-mobile 插件中的向导创建 kmm 应用程序后,我尝试运行 ios 模拟器并收到以下错误。

为了解决这个错误,我尝试更新 Xcode,下面给出了新的错误。

0 投票
1 回答
44 浏览

kotlin-multiplatform-mobile - Ktor IO客户端,如何防止多次refreshTokens调用

我已经用令牌实现Auth了功能。bearer这是我的refreshTokens实现

如果只发出一个请求,它会按预期工作,但如果多个请求UnAuthorized同时出现 401 错误,则此回调会触发多次。是否有任何锁定机制,我应该实施以防止多个令牌刷新?谢谢

0 投票
1 回答
57 浏览

java - Cometd 与 Android:java.lang.RuntimeException:找不到实现类

我目前正在尝试在适用于 android 的 Kotlin Multiplatform App 中实现 cometD 客户端。

这是我的android依赖项

我的代码(CometdConnection.kt)

应用程序已编译,但在初始化失败并出现错误时崩溃

0 投票
1 回答
162 浏览

ios - 在 iOS 上使用 fastlane 构建 Kotlin Multiplatform Mobile 失败

我有一个问题,为什么要尝试使用 Jenkins 管道和 iOS 部分的 fastlane 构建 KMM 项目。

Kotlin 版本:1.5.31
XCode 版本:13.1
Fastlane 版本:2.198.1
Ruby 版本:2.6.3p62

在本地执行这些步骤时,它也会中断。fastlane 抛出的错误是import shared: no such module 'shared'

我发现如果你运行pod install && fastlane xcode_build构建刹车,但如果你再次重复它,它会成功并在 XCode 的 DerivedData 文件夹中创建 project.app 文件。

Jenkinsfile 在另一个不是 KMM 的 iOS 项目上正常工作。

这是詹金斯文件

这是我用于 fastlane 的 Fastfile

这是 Podfile

我的问题是,因为我对 KMM 的能力不够。为什么这样做?如果上述方法不可行,我打算如何为 CI/CD 构建项目。

0 投票
2 回答
176 浏览

kotlin - Android Studio 中的 KMM 构建返回命令 PhaseScriptExecution 失败,退出代码为非零

我刚刚通过 KMM Plugin 创建了一个新的 KMM 项目,但我无法在项目的 Xcode iosApp 部分中运行甚至调试。当我尝试从 Android Studio 运行 iosApp 时,构建过程失败(Command PhaseScriptExecution failed with nonzero exit code)

最后的建筑线路是:

FAILURE:构建失败并出现异常。

  • 出了什么问题:任务 ':shared:compileKotlinIosX64' 执行失败。

编译完成但有错误

  • 尝试:使用 --stacktrace 选项运行以获取堆栈跟踪。使用 --info 或 --debug 选项运行以获得更多日志输出。运行 --scan 以获得完整的见解。

  • 在https://help.gradle.org获得更多帮助

在 8 秒内构建失败 1 个可操作的任务:1 个执行的命令 PhaseScriptExecution 失败,退出代码为非零

** 构建失败 **

以下构建命令失败:PhaseScriptExecution Run\ Script /Users/tamegajr/AndroidStudioProjects/TesteKMM5/build/ios/iosApp.build/Release-iphonesimulator/iosApp.build/Script-7555FFB5242A651A00829871.sh(1次失败)

任何人都可以帮助解决这个问题吗?

0 投票
1 回答
127 浏览

kotlin - Ktor Multiplatform Bearer Token Refresh 导致“冻结 kotlin.native.internal.Ref 的突变尝试”

我正在尝试让 Ktor 客户端刷新 Kotlin 多平台项目中的 Bearer 令牌。

这里有一个例子它应该如何工作。

我的 http 客户端配置代码看起来非常相似——除了获取和刷新令牌的不同请求:

但这导致mutation attempt of frozen kotlin.native.internal.Ref. 好像不太lateinit var tokenInfo: TokenInfo喜欢

这只发生在 iOS 上。安卓工作。

(顺便说一句,我切换到了新的内存模型。但在这种情况下,这似乎无关紧要,这是同样的错误。)

0 投票
0 回答
82 浏览

android - KMM Android 模块未包含在库中

我有一个包含多个模块的 Android 项目。

  • 特色一
  • 功能 2
  • 日志
  • 共享 KMM 模块

其中一个模块是使用 KMM 的共享代码模块。我使用https://github.com/kezong/fat-aar-android将所有模块包含到库中。

在库组装期间,我的所有模块都已构建,但生成的工件没有来自 KMM 模块的任何类、对象或接口,导致在尝试调用 KMM 模块具有的类时出现 java.lang.NoClassDefFoundError。

这可能与proguard有关吗?或者模块的 gradle 上的一些错误配置?

0 投票
1 回答
85 浏览

kotlin - 是否可以从 kotlin 多平台移动应用程序中使用 C++ 库?

我有一个需要从 android 和 iOS 使用的 C++ 库,所以我的想法是创建一个多平台模块,该模块将包装该库以从两个实现中使用它。

另一方面,我看到了一个示例,其中 kotlin native 使用了 C 代码: https ://theprogrammershangout.com/resources/kotlin/native/creating-c-bindings.md/

还有这个来自 kotlin 文档: https ://kotlinlang.org/docs/native-c-interop.html

是否有可能使这种互操作性与 jvm 和 iOS 一起工作?

0 投票
2 回答
48 浏览

kotlin-multiplatform - 嵌套多平台库与 cocoapods 集成的使用

在 Android 世界中,我可以在一个模块中添加一个依赖项,对于任何将此模块添加为依赖项的模块,它都可以使用该依赖项中的 API。例如 facebook sdk -> utils 模块 -> foo 模块 -> 主应用程序模块,foo 模块和主应用程序模块也可以使用 facebook sdk API。

我如何在多平台世界(或 iOS 世界)中做同样的事情?facebook iOS sdk pod -> utils 模块 -> foo 模块 -> iOS 主项目

我尝试仅在 utils 模块中添加 pod,但 foo 和 main 都无法访问 facebook iOS API。如果我在 foo 模块中添加相同的 pod,它也无法访问 Facebook API。

或者我应该使用 cocoapods 以外的其他依赖管理工具吗?