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

swift - 嵌套 KMM 包未正确引用

我正在尝试在我的 iOS 应用程序中使用 2 个 KMM 包,但是它没有被正确引用。

这是我的依赖结构:

这是我尝试在 iOSApp 中使用的示例文件

将它们添加到 iOS 应用程序时,它不明白参数 foo 来自 KmmPackageOne

抛出以下错误

我假设 KPT 表示 KmmPackageTwo。因此,XCode 似乎为 KmmPackageOne 中的 KmmPackageTwo 添加了一层抽象。

KmmPackageOne 的 build.gradle

0 投票
1 回答
97 浏览

java - 如何将 Java 对象转换为 Kotlin 多平台对象

我有一个 Java 对象。我有一个 Kotlin Multi Platform 对象。如何将此 Java 对象转换为 Kotlin Multi Platform 对象?

Java 代码:

Kotlin 多平台共享代码:

我有一个需要 KMMRecentItemList 的 KMM 库。IE:

0 投票
1 回答
543 浏览

android - 在 Kotlin 多平台项目中与 Compose 共享活动

我在设置驻留在 KMM 项目中的共享代码中并使用 Jetpack Compose 的活动时遇到问题。当活动在 Android 源(/app)中时,这可以正常工作。但我想发布一个没有任何应用程序的共享(/common)库。

例如,我创建了一个很棒的最小 KMM+Compose 项目:https ://github.com/cyberhenoch/PeopleInSpace :

  • 将撰写活动(SharedActivity)添加到共享代码中
  • 更新了共享代码androidMain中的依赖项

它编译得很好,但在运行时我得到:

进程:com.surrus.peopleinspace,PID:4067 java.lang.NoSuchMethodError:没有静态方法 setContent $default(Landroidx/activity/ComponentActivity;Landroidx/compose/runtime/CompositionContext;Lkotlin/jvm/functions/Function0;ILjava/lang/ Object;)V 在类 Landroidx/activity/compose/ComponentActivityKt; 或其超类(在 com.surrus.android.SharedActivity.onCreate( SharedActivity.kt:12)

我尝试添加此处描述的选项https://developer.android.com/jetpack/compose/setup#configure_gradle但是

  • 并非所有都可以添加到公共模块(kotlinOptions?)
  • 在原始项目中,它们不是必需的,而且效果很好
  • 在以不同的组合添加其中几个后,它甚至无法编译(异常:java.lang.NoClassDefFoundError: org/jetbrains/kotlin/serialization/DescriptorSerializerPlugin at java.base/java.lang.ClassLoader.defineClass1(Native Method)

我应该怎么做才能让它工作?任何帮助,将不胜感激。

0 投票
2 回答
1687 浏览

android - 未找到 Kotlin Multiplatrom Mobile 库的匹配变体

我有一个发布到 Maven Central的 Kotlin Multiplatform Mobile库。我也在尝试在非 KMM Android 应用程序中使用这个库。当我在 android 应用程序中声明依赖项时,出现此错误

我认为我的配置有问题,但我真的不知道该错误告诉我什么,这是我第一次创建 KMM 库。

这是我的build.gradle.kts

我需要做什么才能(io.github.tyczj:tweedle-android)在非 KMM android 应用程序中使用 android 依赖项?

更新

我尝试将“调试”添加到 android 库变体

以及添加后备

那没有做任何事情

如果我创建一个新的 KMM 项目并尝试添加依赖项,我会得到一些不同的错误说

0 投票
1 回答
520 浏览

kotlin - 我如何在 swift Kotlin 多平台上使用 Flow?

我正在创建我的第一个 kotlin 多平台项目,我在快速使用 kotlin 流程时遇到了一些困难。我使用 kotlin flow 和 ktor 创建了模型、服务器数据请求作为通用文件、视图模型和我创建为本机的 ui 层。所以,我没有快速开发的经验,除此之外,我在快速视图模型上使用流程时遇到了很多麻烦。在寻找我的问题的答案时,我发现了一个描述为 CommonFlow 的类,它的目的是用作两种语言的通用代码(kotlin、swift,但我遇到了一个错误,让我很少或根本不知道为什么会这样发生了,或者,可能只是我缺乏对 xcode 和 swift 编程的控制:

所以这是 xcode 指出错误的代码部分: 在此处输入图像描述 Obs: sorry about the image 我想这次可能更具描述性

这就是我从错误中得到的全部

我的 iOS 视图模型:

存储库方法:

类 CFLOW:

0 投票
1 回答
212 浏览

android-studio - 如何降级项目 kotlin multiplatform 上的 gradle 以使用 Android Studio 稳定版?

最近我开始在一个 kotlin 多平台项目上工作,当我开始时我没有任何以前的经验,我得到的项目已经创建了它的基础。创建项目的开发人员有在 android 开发部分使用 compose 库的想法。然后他辞掉了工作,我开始了。但是我选择不使用 compose,因为交付应用程序很匆忙。

因此,项目 gradle 版本当前已启用6.8且 android 插件已启用,7.0.0-alpha05 但我想降级以停止在 Canary 版本上使用 Android Studio,并在稳定版本上使用。但是当我降级gradle时,我收到了这个错误:

梯度属性:

共享梯度:

毕业典礼:

0 投票
1 回答
248 浏览

android - 用 Cocoapod 替换最新 KMM 中的 ./gradlew packForXcode 是什么?

我正在按照https://kotlinlang.org/docs/mobile/integrate-in-existing-app.htm中的 KMM 教程工作。当我到达这一步./gradlew packForXcode时,它会失败

我怀疑原因是旧的 KMM 有packForXcxode它的 iOS 框架。 在此处输入图像描述

但是,新版本现在使用 Cocoapod 在此处输入图像描述

./gradlew packForXcodeKMM 与 Cocoapod的等价物是什么

(仅供参考,我使用的 KMM 版本是 0.2.5(202-1.5.10-834-IJ)-3 插件)

0 投票
1 回答
547 浏览

kotlin - 如何以“yyyy-mm-dd hh:mm:ss”格式反序列化日期?

我从不是 ISO 格式的 API 中获取了类似“2021-03-26 22:02:53”格式的日期,我为它创建了一个自定义序列化程序,但出现错误。我也不想使用 ISO 格式,我想将日期发回为“yyyy-mm-dd hh:mm:ss”。

由于我们不能在 Kotlin 多平台中使用 Java.Date,那么像这样序列化日期格式的正确解决方案是什么?

打开代码文件的 IDE

调试帧变量

谢谢

0 投票
2 回答
906 浏览

android - 无法在 MacBook M1 芯片上构建 Kotlin Multiplatform 移动项目

我无法为 iOS 应用程序构建 KMM 项目。我正在关注 KMM入门。我有以下设置

  • Android Studio Artic Fox Beta 3
  • Kotlin 1.5.10 插件
  • KMM 插件 0.2.6
  • Xcode 12.5
  • JDK 11(在嵌入式 AS 和 azul 的 JDK 11 上试用)

当我从 android studio 运行 iosApp 时出现以下错误(Android 应用程序能够在同一项目中成功运行)

anybudy 是在 Mac M1 上构建的吗?

0 投票
2 回答
458 浏览

gson - 如何将 GsonSerializer 用于 ktor?

https://ktor.io/docs/json.html#gson中,我可以看到我们可以将 GsonSerialzer 作为代码

但我似乎无法包括这门课。我应该导入哪个库(在我的 Gradle 中)才能访问它们?