问题标签 [kmm]

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 投票
0 回答
35 浏览

android - 在使用导航组件的 KMM 项目中找不到模型类

我正在开发一个使用 Kotlin Multiplatform 插件的应用程序,我尝试使用 Navigation 组件在我的应用程序的不同片段之间导航。

我的问题是由于与常规 Android Proyect 相比 KMM proyect 的复杂结构。

当我尝试运行我的 proyect 时,使用它的 FragmentArgs 类找不到生成的 Navigation 组件的不同类。

也就是说,在 KMM 中,用户界面在不同的文件夹中是分开的,业务逻辑是另一个类,数据库也是。

在此捕获中,它可以看到 KMM proyec 的常规结构:

在此处输入图像描述

所以在我的 DetailFragmentArgs 中生成的错误是这样的:

我的 nav.graph.xml 的代码如下:

我尝试了一些路径,但不起作用:从存储库、从内容根目录和源根目录。

如果您在 KMM 插件方面更有经验并在某个时候处理过这个问题,欢迎您提供帮助!

提前致谢 !

0 投票
0 回答
125 浏览

android - 在 KMM 项目中 Share 模块的 commonMain 中获取未解决的 @Serializable 参考

在此处输入图像描述

IDE 将这些序列化导入突出显示为未解决。但是当运行应用程序时,我在这里得到了结果。

}

它正在工作,但显示错误。

0 投票
0 回答
55 浏览

android - 在 kotlin 1.4.20 的 kmm 项目中找不到 koltinx.parcelize.Parcelize

我正在开发一个 KMM 项目,我尝试在我的数据类上使用 @Parcelize 注释,虽然我做了所有的改变,暗示了如何从 android.extensions 迁移到 kotlin-parcelize 的官方文档,Android Studio 仍然没有找到了 kotlinx 包。

这是我收到错误的共享模块中的类:

在此处输入图像描述

这是我的共享模块的 build.gradle.kts,这是我使用 @Parcelable 注释的那个。

和我的项目级别 build.gradle.kts

最后关于我正在使用的版本是这样的:

非常感谢您的帮助!

0 投票
1 回答
35 浏览

kotlin - 在 Kotlin Multuplatform 中应用特定于平台的注释的最佳方法是什么?

我有一些数据传输类,我想在平台之间共享。只有一个区别。这些实现在不同的平台上有不同的注释。最好的方法是什么?我知道唯一的方法。

在 commonsMain 中:

在 jvmMain 中:

但是,如果我以这种方式实现每个类,那么 KMM 就没有任何利润。这样我需要实现每个类 n + 1 次,其中 n 是多个平台。有没有更简单的方法来应用不同的注释?

可能有办法不把期望放在课堂上。

0 投票
0 回答
34 浏览

kotlin - 如何处理 Kotlin Multiplatform typealias 中的可变参数?

我想在不同的平台上应用不同的注释。所以在 CommonsMain 我有以下内容

在 JvmMain 我想使用以下类型别名:

代码不会编译,因为 Jvm 注解值参数的类型是 Array<String>,而 Kotlin vararg 参数类型是 Array<out String>。我尝试将 vararg 参数更改为 Array<String> 类型的非 vararg 参数,但这也不起作用,因为参数的类型也与编译器不同。

有没有办法写出这样的别名?其实我根本不需要这个参数。有没有办法在commonMain中不提这个参数?

0 投票
1 回答
52 浏览

android - 由于 ModelClass 在 KotlinMultiplatform 应用程序中不是 Serializable 或 Parcelable 导致的 nav_graph 参数错误

我正在开发一个 KotlinMultiplatform 应用程序,它将不同的库实现为 NavigationComponent、ktor 到网络调用和 slqDelight 来存储本地数据。

所以我在标签中得到的错误如下:

关于这条线是我想在屏幕之间传递的论点:

nav_graph.xml

关于我的模型课:

UnsplashPhoto.kt

最后是我的共享、android 和 proyect 模块的 build.gradle.kts 文件:

build.gradle.kts(androidApp)

build.gradle.kts(共享)

build.gradle.kts(项目)

所以我想我不能像这样创建一个可序列化的对象,或者我有一些库不兼容导致我的序列化对象不可读,但我该怎么办?

预先感谢 !

[编辑]

添加了 build.gradle.kts(androidApp)

0 投票
0 回答
41 浏览

swift - 从任务结果中获取值

我将 Ktor 用于 KMM,并希望从异步函数中获取响应,但我收到以下错误:

Cannot pass function of type '() async -> Void' to parameter expecting synchronous function type

据我所知,Kotlin 只能在主线程上运行挂起函数

0 投票
1 回答
76 浏览

android - 如何在 Kotlin Multiplatform Project 的共享模块中使用 @Parcelize 注解

我正在开发一个 Kotlin 多平台应用程序,我想在我的模型类中使用 @Parcelize 注释。但是在 Kotlin Multiplatform 插件中,@Parcelize 注释在我使用的 kotlin 版本中位于 android.extensions 插件中,它适用于 androidApp 模块。

关于我的 build.gradle.kts(androidApp)

build.gradle.kts(共享)

还有我的项目 build.gradle.kts

所以我在 androidApp 和共享模块中创建了一个期望和实际的 Parcelable 和 Parcelize 类:

在共享模块中

因此,在那些课程中,我收到以下错误:

在android类中:

那么我对实际/预期关键字行为的遗漏是什么?

我在这里先向您的帮助表示感谢!

0 投票
0 回答
18 浏览

android - 尝试在 Kmm proyect 中使用 CustomParcelize 和 CustomParcelable 时出现网络错误

我正在开发一个 Kotlin Multiplatform 项目,我尝试在其中进行一些网络调用并保存到 SQLDelight 数据库中。

因此,我尝试使用 kmm 的实际/预期行为创建自定义 Parcelable 和 Pacelize。

因此,在我的 androidApp 模块中,我声明了我的自定义 Parcelize 和 Parcelable 实际实现:

在我的 commonMain 模块中:

@Suppress("NO_ACTUAL_FOR_EXPECT") 我必须添加,因为我没有配置实际的 ios 部分。

我正在使用的模型类如下:

因此,关于 android 应用程序,当我启动并恢复网络响应时,我收到以下错误:

当我使用@Serializable 注释而不是@Parcelize 和@Parcelable 注释时,错误引用了一个错误。

所以我不知道你是否有在 kmm 中这样的一些实现的经验,但无论如何,提前谢谢!

[编辑]

我做了一些更新,删除了期望接口 Parcelable 中的 @Suppress("NO_ACTUAL_FOR_EXPECT") ,并且我在 ios 部分中将其实现为空的实际:

我的另一个实际的常见模块是:

和安卓模块

而且我仍然收到此错误,因为 IOSMain 中不存在 CustomParcelable 类:

提前感谢您的帮助!

0 投票
1 回答
23 浏览

android - 跨平台手机授权

我有一个 Android 应用程序,我在其中使用Firebase Auth API来确认用户的电话,我也有自己的服务器来存储用户数据。

我打算使用kmm制作跨平台应用程序。但问题是Firebase Auth API需要调用 callsetActivity(activity)方法,这取决于 Android 活动。

我想在 Android 和 iOS 之间共享授权码。是否有任何解决方案允许您使用常见的 Kotlin 客户端代码或 Kotlin 服务器端代码来执行此操作?