在 Kotlin Mutliplatform 项目的 Actual / Expect 类 中传递 Android / iOS 特定参数

Passing Android / iOS specific arguments in Actual / Expect classes in Kotlin Mutliplatform project

所以我正在尝试将 KMM 模块集成到现有的 android 应用程序中。我将公共 KMM 模块中的 class 公开到 Android 项目中,它看起来像这样(请忽略语法,它只是为了参考我正在做的事情而编写的)-

// Common KMM Module
import CustomDataType // THIS DOES NOT WORK COS IT"S AN ANDROID MODULE AND NOT MULTIPLATFORM
object CommonHandler {
    fun init(args: CustomDataType) { // ??? How can I receive custome Data type here ?????
        println("test init of Mission Handler")
        AndroidModule.init(args); // How can I pass into the android KMM module
    }
}

expect object AndroidModule {
  fun init(args: CustomDataType)
}

// ANDROID KMM Module 

import CustomDataType; // I can import the data type here though
actual object AndroidModule {
    actual fun init(args: CustomDataType)
}


// MAIN ANDROID APP

import CommonHandler;

fun someAndroidMethod(){
    CommonHandler.init(CustomDataType)
}

android 方法会通过应用程序频繁调用,我们的想法是将此事件传递给 KMM 进行进一步处理(如过滤、提取数据和更新数据库),但我无法图如何将它传递给通用 KMM 模块。我是最近开始使用 KMM 的 Web 开发人员,所以我的知识非常有限。请帮忙,提前致谢!

您可以为此类型创建一个通用包装器。

常用代码:

expect class CustomDataType

Android代码:

actual typealias CustomDataType = android.package.name.CustomDataType

有时因为API不同而无法使用typealias,这时你可以将其存储在属性:

actual class CustomDataType(val native: android.package.name.CustomDataType)