【问题标题】:Implement camera lib with Kotlin multiplatform使用 Kotlin 多平台实现相机库
【发布时间】:2020-03-01 14:07:13
【问题描述】:

我试图了解什么结构应该有一个多平台库。在互联网上查看我已经看到了大量解释如何制作日志或“hello world”的示例,但缺乏复杂的示例,即使在 official documentation 中也是如此(重要的是要注意我只对移动平台,iOS 和 Android)。

所以我想创建一个简单地打开相机的示例(作为一个库,而不是作为一个多平台应用程序),只是为了了解如何使用一个真实的功能,这也是本机的。现在我在official example之后创建了一个项目,所以它有一个通用模块(使用expect),一个用于Android,一个用于iOS(使用实际),现在这些是我的疑问:

  • 我已经看到 iOS 模块也在 Kotlin 中,据我所知是 Kotlin/Native。我的项目是否应该在 Swift 中也有一个包装器,还是该库没有 Swift 代码?如果应该,它应该在项目结构中的什么位置?

  • 同样在 Android 模块中,我注意到我无法导入“Activity”类或“Intent”类,我需要打开相机,为什么?此代码是否仅限于没有 Android 库的 Java?它也应该有一个Android的包装器吗?如果是这样,我该如何配置这个包装器?

  • 我知道在创建类时可以使用“expect”键,但据我所知,通用模块和本机模块将始终是分开的类。我的意思是,如果我在 common 模块中创建一个类,我可以使用“expect”定义这个类的方法,然后在 native 中定义它们吗?

  • 我的库可以有清单吗?

  • 最后,有没有人知道一个可以真正解释更复杂情况的真实示例?

谢谢

【问题讨论】:

    标签: android ios kotlin multiplatform kotlin-multiplatform


    【解决方案1】:

    好的,让我们一一解决你的问题。

    1. 我建议你看看this 示例
    2. 该 iOS 模块因此生成了一个 Objective-C 框架。 Xcode 项目可以像使用任何其他非 Kotlin 框架一样使用它。
    3. 好像无法使用 Android SDK 是使用jvm("android") 目标的结果 android() 一个。要使用 android 目标,除了 kotlin-multiplatform 之外,还必须应用 android Gradle 插件。
    4. 我 认为你想做这样的事情:只是普通的类 common 中的声明及其扩展函数 expect 修饰符。然后在特定平台中实现它 代码。
    5. 我想是的。
    6. 我还建议您看看 thisthis,也许这些例子对你来说已经够复杂了。?

    【讨论】:

    • 好的,我看看例子,看看我能不能更好地理解结构,谢谢!
    猜你喜欢
    • 1970-01-01
    • 2021-07-03
    • 2022-07-02
    • 1970-01-01
    • 1970-01-01
    • 2019-12-01
    • 2021-12-22
    • 1970-01-01
    • 2020-09-05
    相关资源
    最近更新 更多