我试图了解什么样的结构应该具有多平台库。在互联网上查看,我看到了大量解释如何制作日志或“hello world”的示例,但缺乏复杂的示例,即使在 official documentation 中也是如此。 (重要的是要注意,我只对移动平台、iOS 和 Android 感兴趣)。
因此,我想创建一个简单地打开相机(作为库,而不是作为多平台应用程序)的示例,只是为了了解如何使用 native 的真实功能。现在我已经在 official example 之后创建了一个项目,所以它有一个通用模块(使用 expect),一个用于 Android,一个用于 iOS(使用 actual),现在这些是我的疑惑:
据我所知,iOS 模块也在 Kotlin 中,即 Kotlin/Native。我的项目是否也应该有一个 Swift 包装器,或者该库是否应该没有 Swift 代码?如果应该,它应该在项目结构中的什么位置?
同样在 Android 模块中,我注意到我无法导入类“Activity”或“Intent”,我需要打开相机,为什么?这段代码是否仅限于没有 Android 库的 Java?它是否也应该有一个 Android 包装器?如果是这样,我该如何配置这个包装器?
我知道在创建类时可以使用“expect”键,但是据我了解,公共(public)模块和 native 模块将始终是单独的类。我的意思是,如果我在公共(public)模块中创建一个类,我可以使用“expect”定义该类的方法,然后在 native 中定义它们吗?
我的库可以有 list 吗?
最后,有谁知道一个真实的例子可以真正解释更复杂的情况吗?
谢谢
最佳答案
好的,让我们逐一分析您的问题。
- 我建议您看看 this例子
- 的 结果,iOS 模块生成了一个 Objective-C 框架。 Xcode 项目可以像使用非 Kotlin 起源的任何其他框架一样使用它。
- 看起来无法使用
Android SDK 是使用
jvm("android")
目标代替的结果android()
之一。要使用 android 目标,除了 kotlin-multiplatform 插件外,还必须应用 android Gradle 插件。 - 我
认为你想做这样的事情:只是普通类(class)
common
中的声明及其扩展函数expect
修饰符。然后在特定平台中实现 代码。 - 我也这么认为。
- 我还建议您看看 this和 this ,也许这些例子对你来说已经足够复杂了。😁
关于android - 使用 Kotlin 多平台实现相机库,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58707299/