繁体   English   中英

使用 Kotlin 多平台实现相机库

[英]Implement camera lib with Kotlin multiplatform

我试图了解什么结构应该有一个多平台库。 在网上查了很多例子,解释如何制作日志或“hello world”,但缺乏复杂的例子,即使在官方文档中(重要的是要注意我只对移动设备感兴趣)平台,iOS 和 Android)。

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

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

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

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

  • 我的库可以有清单吗?

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

谢谢

好的,我们来一一解答您的问题。

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM