问题标签 [kotlin-multiplatform]

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 回答
2165 浏览

ios - kotlin.native.concurrent.InvalidMutabilityException:冻结的突变尝试 when using ktor in Kotlin Multiplatform (iOS)

I am trying to build a simple Kotlin Multiplatform app that calls to the internet to fetch some Strings from the internet w

I am trying to build a simple Kotlin Multiplatform app that calls to the internet to fetch some Strings from the internet with ktor. I took some functions from Kotlin conference app which I compiled and it works fine on both Android and iOS.

However, in my sample app, it only works on Android, but on iOS it returns

kotlin.native.concurrent.InvalidMutabilityException: mutation attempt of frozen <object>@c422ffe8

Here is the GitHub repository and below is my code:

--

--

--


Turns out that the Kotlin version 1.3.11 is causing the trouble. I have downgraded it to 1.3.10 and it works perfectly fine. ktor will receive a fix in the next minor release.

Source - Kotlin Slack, multiplatform channel.

0 投票
2 回答
1854 浏览

kotlin - 为什么 kotlin multiplatform 不执行和导出 iOS 框架?

我开始开发 kotlin 多平台,并开发了一个简单的库进行测试。我可以.jar为 android 导出文件,但我不能.framework为 iOS 导出文件。我查看了其他项目,但没有找到我的问题。

Gradle的 lib 脚本是:

0 投票
2 回答
2193 浏览

kotlin - Kotlin 与 Objective-C 框架的多平台/原生互操作性

我正在尝试在多平台项目中从 Kotlin 调用 Swift/Objective-C 代码。调用平台代码没有问题。但是,当我尝试调用某个库(或框架,由于我不是 iOS 开发人员而不确定如何正确调用它)时,它会失败。文档指出,如果正确导出,可以调用 Objective-C 代码和 Swift:

Kotlin/Native 提供与 Objective-C 的双向互操作性。如果将 Objective-C 框架和库正确导入构建(默认导入系统框架),则可以在 Kotlin 代码中使用 Objective-C 框架和库。请参阅 Gradle 插件文档中的“使用 cinterop”。如果使用 @objc 将 Swift 库的 API 导出到 Objective-C,则可以在 Kotlin 代码中使用 Swift 库。尚不支持纯 Swift 模块。

但它没有说明如何正确导入它们。它仅指向描述旧版本 gradle 插件的 gradle插件描述。所以它对我不起作用。最后我想出了一些可能是导入Objective-C代码的方法:

构建运行没有失败,但它不导入任何东西。我究竟做错了什么?是否可以导入这样的库?

升级版:

在这里,cinterop我找到了一个这样的使用工具示例:

看起来cinterop工具应该/dist/bin/在我的项目的文件夹中,但没有这样的文件夹。我在哪里获得cinterop工具?

0 投票
3 回答
2399 浏览

unit-testing - Kotlin-multiplatform:如何执行 iOS 单元测试

我正在为 Android 和 iOS 开发一个 Kotlin 多平台库。我想编写一些特定于平台的单元测试。对于共享代码和 Android,测试按预期运行,但不适用于 iOS。

build.gradle在共享代码模块的文件下方。

模块的结构SharedCode是:

添加到androidTestcommonTest文件夹中的测试确实按预期运行,但添加到文件夹中的测试iOSTest没有运行。

但是,如果我替换该行并相应fromPreset(iOSTarget, 'iOS') { compilations.main.outputKinds('FRAMEWORK') }fromPreset(presets.macosX64, 'macos')更新目录名称,则macosTest文件夹中的测试会按预期运行。

为什么在构建 iOS 框架时无法运行 iOS 测试?关于我做错了什么或如何使它起作用的任何想法?:)

0 投票
1 回答
1625 浏览

kotlin - Kotlin 本机互操作链接器找不到框架

我正在尝试在 Kotlin Multiplatform 项目中使用 cocoapods 框架。所以我

  • 将框架添加到 Pods 文件。
  • 运行 pod 安装。
  • 创建的.def文件
  • 在里面添加了cinterop配置build.gradle

./gradlew cinteropFirebaseIos成功运行。它生成.klib,所以我可以看到 kotlin 代码中的类。但是当我尝试运行 iOS 应用程序构建失败并显示消息:

显示最近的消息

> 任务:app:linkDebugFrameworkIos

ld:找不到框架 FirebaseDatabase

/Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/ld 调用报错

这是我的配置build.gradle

这是我的.def文件:

在此处输入图像描述

我怎样才能找出问题所在?我错过了.def文件中的某些内容吗?在build.gradle?

0 投票
1 回答
1364 浏览

kotlin - 如何在 Kotlin Native 中使用 Http Request 库

我是 Kotlin 本机的初学者,我的目标是构建一个我们的 Rest API 包含它的库,并在 iOS 和 Android 上使用它。我知道ktor并在我的项目中实现了这一点,但是当我build通过Gradle获取异常运行项目时,我使用以下对象kotr

和我Gradle的多平台模块:

0 投票
2 回答
813 浏览

kotlin - Kotlin 多平台预期注释返回带有 neo4j 实际类型别名的“此类没有构造函数”

我有一个带有模态类 User 的多平台项目。

用户.kt

我也有预期和实际的注释

Annotation.kt [通用模块]

此外,我有他们的实际实施

Annotation.kt [JVM 模块]

然后我返回并注释了我的 User.kt

但是当我编译它时,我得到了这个错误

我究竟做错了什么?

注意:B。尝试完成

  • 使预期的注释具有构造函数[不成功]
  • 使预期注释与构造函数匹配 [错误:参数“{0}”在预期和实际注释中的值冲突]

仅供参考:我的 build.gradle 已经有了 noArg,因此 User.kt 类是使用无参数公共构造函数编译的

0 投票
0 回答
845 浏览

url - 如何在 Kotlin/Native 中使用 URL

我想在我的常用 Kotlin/Native 模块中从 Internet 加载一些东西。

我在这里搜索了一些示例,但没有找到任何相关的 URL。我知道 Kotlin/Native 只支持几个类似ktor, kotlinx.io, kotlinx.serialization的库。

那么有没有办法使用给定的多平台库从互联网上下载任何东西,比如图像,也许我错过了什么?

0 投票
1 回答
1056 浏览

ios - 链接 iOS 框架时无法在 Kotlin Multiplatform 中运行“linkDebugFrameworkIos”

我正在尝试将 iOS .framework 链接到 Kotlin Multiplatform/Native,以便我可以在 Kotlin 中使用它。我成功地将框架链接到 Kotlin Multiplatform/Native,并且正确的包包含我链接的标头。

但是Undefined symbols for architecture,每当我尝试构建项目时都会发生。

iosX64我已经尝试在预设和 iPhone预设上为 iPhone 模拟器编译到不同的架构iosArm64

我尝试将 .framework 本身添加到 vanilla XCode 项目中,它在模拟器和 iPhone 上运行良好。

这是.def文件

这是build.gradle文件的一部分

这是我尝试在 XCode 中构建或运行时弹出的错误消息./gradlew linkDebugFrameworkIos

0 投票
0 回答
233 浏览

android - Kotlin Native 在 Swift 上没有得到 Http 响应

我在我们的项目中使用 Kotlin 本机,我为 https 方法创建了一个本机类,用于从库中获取响应REST API,我在层ktor上实现了我的代码,我在&中使用它,在所有事情上都可以并获得响应,但不要在没有得到任何响应时收到任何响应。我确实尝试并通过使用第一种方式和第二种方式的 2 种差异模式来实现,但没有一种方式不起作用CommonAndroidiOSAndroidiOSExceptionobserverclosureiOS

我的问题在哪里?

common

使用时在iOS项目上: