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