问题标签 [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-coroutines - Ktor 客户端单元测试在 CoroutineScope.launch() 中挂起/冻结
我的 KMM 项目测试在新范围内异步启动的 ktor 客户端请求时遇到问题。出于测试目的,我Dispatchers.Unconfined
作为新范围的上下文传入(在我正在使用的实际生产代码中newSingleThreadContext()
)。
我在下面创建了一个非常简化的悬挂 ktor 请求版本:
请注意,如果您不在 CoroutineScope.launch 中调用,那么它可以正常工作。然后挂起/冻结仅在 CoroutineScope.launch 中调用时发生。同样,这是一个极其简化的示例,但在我的实际代码中,以这种方式设置它的原因是,我可以在最终发出 ktor 请求之前在后台线程中处理一些数据 - 因此是 CoroutineScope.launch。另请注意,我的代码在 iOS 模拟器上运行时似乎运行良好。它仅在作为单元测试运行时挂起。
我是否遗漏了一些东西来完成这项工作,或者这是一个错误?
ios - kmm ios 模拟器服务版本与预期的服务版本不匹配错误
使用 kotlin-multiplatform-mobile 插件中的向导创建 kmm 应用程序后,我尝试运行 ios 模拟器并收到以下错误。
为了解决这个错误,我尝试更新 Xcode,下面给出了新的错误。
kotlin-multiplatform-mobile - Ktor IO客户端,如何防止多次refreshTokens调用
我已经用令牌实现Auth
了功能。bearer
这是我的refreshTokens
实现
如果只发出一个请求,它会按预期工作,但如果多个请求UnAuthorized
同时出现 401 错误,则此回调会触发多次。是否有任何锁定机制,我应该实施以防止多个令牌刷新?谢谢
java - Cometd 与 Android:java.lang.RuntimeException:找不到实现类
我目前正在尝试在适用于 android 的 Kotlin Multiplatform App 中实现 cometD 客户端。
这是我的android依赖项
我的代码(CometdConnection.kt)
应用程序已编译,但在初始化失败并出现错误时崩溃
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 构建项目。
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次失败)
任何人都可以帮助解决这个问题吗?
android - KMM Android 模块未包含在库中
我有一个包含多个模块的 Android 项目。
- 特色一
- 功能 2
- 日志
- 共享 KMM 模块
其中一个模块是使用 KMM 的共享代码模块。我使用https://github.com/kezong/fat-aar-android将所有模块包含到库中。
在库组装期间,我的所有模块都已构建,但生成的工件没有来自 KMM 模块的任何类、对象或接口,导致在尝试调用 KMM 模块具有的类时出现 java.lang.NoClassDefFoundError。
这可能与proguard有关吗?或者模块的 gradle 上的一些错误配置?
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 一起工作?
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 以外的其他依赖管理工具吗?