使用Kotlin多平台实现相机库

时间:2019-11-05 08:32:05

标签: android ios kotlin multiplatform kotlin-multiplatform

我试图了解什么结构应该具有多平台库。在Internet上检查,我已经看到了许多示例,这些示例解释了如何制作日志或“世界”,但是即使在official documentation中也缺少复杂的示例(重要的是,我只是对移动平台,iOS和Android感兴趣)。

因此,我想创建一个示例,简单地打开相机(以lib的形式,而不是以多平台应用程序的形式),只是想知道如何使用真实的功能(也是本地功能)。现在,我已经在official example之后创建了一个项目,因此它有一个通用模块(使用Expect),一个用于Android的模块,一个用于iOS(使用实际的模块)的模块,现在,我对此表示怀疑:

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

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

  • 我知道在创建类时可以使用“期望”键,但据我所知,通用模块和本机模块将始终是分离的类。我的意思是,如果我在通用模块中创建一个类,是否可以使用“期望”定义此类的方法,并稍后在本机中定义它们?

  • 我的图书馆可以显示清单吗?

  • 最后,有谁知道一个真实的例子,可以解释一个更复杂的情况?

谢谢

1 个答案:

答案 0 :(得分:1)

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

  1. 我建议您看看this示例
  2.     结果,iOS模块生成了一个Objective-C框架。 Xcode项目可以像其他任何非Kotlin起源的框架一样使用它。
  3. 似乎无法使用         Android SDK是使用public boolean HW2F(int sample[], int criminal[]) { for (int i = 0; i < sample.length; i++) { if (sample[i] != criminal[i]) { return false; } } return true; } 目标的结果         其中jvm("android")个。要使用android目标,除了必须使用kotlin-multiplatform之外,还必须应用android Gradle插件。
  4. 我     认为你想做这样的事情:普通班     android()和扩展函数中的声明,并带有     common修饰符。然后在特定于平台的平台上实现它     代码。
  5. 我这么认为。
  6. 我也建议您看看     thisthis,也许这些示例对您来说足够复杂。?