问题标签 [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 投票
6 回答
2174 浏览

android-studio - 如何在 Android Studio 中为 Kotlin Multiplatform 配置 iOS 应用程序?

我想为 Android Studio 4.1.2 中的 Kotlin 多平台移动应用程序的 iOS 应用程序添加运行/调试配置。但是,iOS 的配置似乎存在问题。

在下面的屏幕截图中,您可以看到问题。在“运行/调试配置”对话框中,Android Studio 抱怨

使用“修复”按钮并不能解决问题。Android Studio 只是添加了一个附加参数xcodeprojgradle.properties抱怨重复参数。

我还尝试了不同的路径(相对和绝对)xcodeproj。没运气。

如果我没记错的话,它曾经是开箱即用的。为 Android和iOS自动配置了一个新的 Kotlin Multiplatform Mobile 项目。我不确定发生了什么变化。可能更新了一些东西。

这是 KMM 插件的错误吗?或者我可以在我的系统上做些什么来解决这个问题?

在此处输入图像描述

0 投票
1 回答
599 浏览

xcode - 使用 kotlin 多平台编译 ios 项目时出错

我已经在现有的 ios 项目中实现了 kotlin 多平台,我遇到了这些问题

当我为模拟器编译应用程序时,构建阶段脚本中出现错误。

在此处输入图像描述

在此处输入图像描述

当我删除为模拟器编译的脚本时。我可以运行模拟器

另一个错误是当我想归档项目时。说它是为 iOS 模拟器构建的

在此处输入图像描述

我的 build.gradle.kts

0 投票
3 回答
641 浏览

ios - 卡住 Api 响应 Ktor

我正在尝试使用 Ktor 为我们的 ApiServices 构建 KMM 应用程序。我创建了一个BaseApiClass拥有所有 api 相关代码的地方。

代码BaseApiClass:-

这是我从 iOS 应用程序调用 api 的方式:-

现在在这里,如果我尝试用相同的objectie调用更多类似的 api,apiClass那么在几次调用之后它就会卡在我的函数callApi中,它甚至不会发送 api 请求(因为我看不到控制台中打印的请求日志)并且因为我不能做任何其他操作,因为我没有从 api 得到任何东西。

一旦我更改屏幕或关闭应用程序并尝试调用相同的 api,它就会运行良好。

apiClass = BaseApiClass()但是,如果我尝试使用它,而不是像这样只在一次创建一个对象,BaseApiClass().sampleApi(request params here) {// completion handler here}它工作正常,我对此没有任何问题。

我不确定是什么导致这种情况发生,一切正常,Android只有面对iOS

0 投票
1 回答
122 浏览

swift - 为什么使用 Kotlin Multiplatform 生成的 iOS 框架中的属性名称有下划线(下划线)?

我有一个 Kotlin Multiplatform 项目,我正在从 Kotlin 源代码生成 iOS 框架。

我的Kotlin接口之一具有这样定义的属性:

但是,在生成的 iOS 框架的 .h 文件中,生成的最后带有下划线“_”(下划线):

为什么要在属性名称的末尾添加下划线“_”(下划线)?

0 投票
0 回答
523 浏览

ios - 如何在 Kotlin Mutliplatform Mobile 的 Swift 中使用 Flow 中的密封类数据?

我无法访问在 Swift 的 Flow 中观察到的密封类数据 ..

https://gist.github.com/RageshAntony/a4fd357973485b5fb8aef0e189ee9e7e

在上述要点中......

在 MainActivity.kt 中,我在数据流中使用了密封类

现在我在 Swift 中也需要同样的东西,但这很令人困惑

即使我使用了一些东西作为 CFlow 包装.. 仍然混乱

在 Swift 中,我不能仅将对象类型作为 nsarray 并且 NetworkStatus.data 也无法访问

.. 我尝试了手动类型转换(在第 8 行, contentview.swift )

仍然数据对象没有任何类型...

请帮助我如何在 Swift 中实现与 MainActivity.kt 中相同的流程

0 投票
0 回答
406 浏览

kotlin - 如何在 Kotlin Multiplatform Mobile 项目中使用 cinterop

cinterop我想使用该工具将 C 代码集成到 Kotlin Multiplatform Mobile 项目中。我已经花了一些时间在 Kotlin Multiplatform 和 Kotlin/Native 的文档上,但我似乎无法让它工作。

这是我的build.gradle.kts

我想对原生 iOS 部分做同样的事情。

看着 gradle 输出,在我看来 cinterop 配置完全被忽略了。文件是否def存在并不重要。它没有任何区别。

抱歉,如果我错过了这里的明显内容。我对所有不同的 Kotlin 扩展感到有些困惑,尤其是它们应该如何协同工作。

我的配置中缺少什么?甚至可以在 KMM 项目中使用 cinterop。

0 投票
2 回答
825 浏览

swift - 如何从 Kotlin 移动平台访问 Array 到 iOS 或 Android?

我正在尝试在 KMM 应用程序中创建冒泡排序。现在 KMM func 从本机端获取参数并与应用程序的 KMM 端进行通信,并且应该将排序后的数组返回到本机端。现在,我心中几乎没有怀疑。

  1. 我是否正确地在 swift 中声明了 kotlinArray?如果我尝试将它指定为普通的 swift 数组,它就无法转换为 Kotlin 数组并给我转换错误。所以这是我想出的。那么这是从 swift 与 KotlinArray 进行通信的正确方法吗?
  2. fun bubbleSort当我尝试在本机项目上运行它时效果很好。但是当我试图运行 KMM 项目时,它只是给了我一个垃圾值。那么任何人都可以帮助我了解如何实现这一点吗?

以下是我的源代码。

输出截图: 输出截图:

任何帮助将非常感激。

0 投票
1 回答
386 浏览

android-studio - Kotlin KMM 'commonMain' 依赖项:运行正常,AndroidStudio 显示错误

我确实设置了一个 KMM 项目,如下所述:https ://kotlinlang.org/docs/mobile/getting-started.html

我想在commonMain模块中放置一些共享类。这些类需要一些依赖项。所以我添加了这里描述的依赖项:https ://kotlinlang.org/docs/mobile/add-dependencies.html#dependency-on-a-library-used-in-specific-source-sets

shared/build.gradle.kts(缩短)

所以我创建了这个InjectManager使用kotlin-reflect库的 Helper 类。

问题:

commonMainAndroidStudio(4.1.3)只有在放置类时才能找到依赖androidMain。当我运行项目时 - 没有错误 - 一切正常。这就是 Android Studio 的看法。InjectManagerInjectManager2具有相同的代码。为了能够使用自动完成等。我目前的工作流程是这样的

  1. 把班级搬到androidMain
  2. 做代码更改
  3. 拖放回commonMain.

InjectManager2仅用于在屏幕截图上显示。

在此处输入图像描述

0 投票
1 回答
1875 浏览

kotlin-multiplatform - 如何避免“附加到使用 kotlin/native 编译器编译的项目的库”错误?

我正在做一个Kotlin Multiplatform Mobile项目。尝试为 KMM 添加库,但我得到了

项目附带了 __ 个第三方库,这些库是使用较旧的 Kotlin/Native 编译器编译的,无法在 IDE 中读取。

android项目构建没有问题所以我想知道这个错误是否只是一个警告并且根本不影响应用程序?

有没有办法避免这个问题?我如何知道某个库是否可用于 Kotlin Native?

0 投票
1 回答
67 浏览

kotlin - 有没有一种简单的方法可以在 Kotlin IOS 中添加 UIButton 点击​​监听器?

addTarget(在 Kotlin 中)的签名是:

我想我知道如何提交 C 函数指针,但这里似乎并非如此......?