问题标签 [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.
android - 在使用导航组件的 KMM 项目中找不到模型类
我正在开发一个使用 Kotlin Multiplatform 插件的应用程序,我尝试使用 Navigation 组件在我的应用程序的不同片段之间导航。
我的问题是由于与常规 Android Proyect 相比 KMM proyect 的复杂结构。
当我尝试运行我的 proyect 时,使用它的 FragmentArgs 类找不到生成的 Navigation 组件的不同类。
也就是说,在 KMM 中,用户界面在不同的文件夹中是分开的,业务逻辑是另一个类,数据库也是。
在此捕获中,它可以看到 KMM proyec 的常规结构:
所以在我的 DetailFragmentArgs 中生成的错误是这样的:
我的 nav.graph.xml 的代码如下:
我尝试了一些路径,但不起作用:从存储库、从内容根目录和源根目录。
如果您在 KMM 插件方面更有经验并在某个时候处理过这个问题,欢迎您提供帮助!
提前致谢 !
kotlin - 在 Kotlin Multuplatform 中应用特定于平台的注释的最佳方法是什么?
我有一些数据传输类,我想在平台之间共享。只有一个区别。这些实现在不同的平台上有不同的注释。最好的方法是什么?我知道唯一的方法。
在 commonsMain 中:
在 jvmMain 中:
但是,如果我以这种方式实现每个类,那么 KMM 就没有任何利润。这样我需要实现每个类 n + 1 次,其中 n 是多个平台。有没有更简单的方法来应用不同的注释?
可能有办法不把期望放在课堂上。
kotlin - 如何处理 Kotlin Multiplatform typealias 中的可变参数?
我想在不同的平台上应用不同的注释。所以在 CommonsMain 我有以下内容
在 JvmMain 我想使用以下类型别名:
代码不会编译,因为 Jvm 注解值参数的类型是 Array<String>,而 Kotlin vararg 参数类型是 Array<out String>。我尝试将 vararg 参数更改为 Array<String> 类型的非 vararg 参数,但这也不起作用,因为参数的类型也与编译器不同。
有没有办法写出这样的别名?其实我根本不需要这个参数。有没有办法在commonMain中不提这个参数?
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)
swift - 从任务结果中获取值
我将 Ktor 用于 KMM,并希望从异步函数中获取响应,但我收到以下错误:
Cannot pass function of type '() async -> Void' to parameter expecting synchronous function type
据我所知,Kotlin 只能在主线程上运行挂起函数
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类中:
那么我对实际/预期关键字行为的遗漏是什么?
我在这里先向您的帮助表示感谢!
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 类:
提前感谢您的帮助!
android - 跨平台手机授权
我有一个 Android 应用程序,我在其中使用Firebase Auth API来确认用户的电话,我也有自己的服务器来存储用户数据。
我打算使用kmm制作跨平台应用程序。但问题是Firebase Auth API需要调用 callsetActivity(activity)
方法,这取决于 Android 活动。
我想在 Android 和 iOS 之间共享授权码。是否有任何解决方案允许您使用常见的 Kotlin 客户端代码或 Kotlin 服务器端代码来执行此操作?