【问题标题】:What can be shared through Kotlin Multiplatform between Android and iOS?什么可以通过 Kotlin Multiplatform 在 Android 和 iOS 之间共享?
【发布时间】:2020-04-04 10:44:31
【问题描述】:
有人能明确描述通过 Kotlin Multiplatform 在 Android 和 iOS 之间究竟可以共享哪些内容吗?
例如,我们在 Android 中有:
UI (xml) 业务逻辑 (Kotlin)。
根据 JetBrains,UI (xml) 以下的所有内容都可以共享。这是否意味着也具有约束力?
我还听说100%可以共享。与 UI 相比如何?
感谢和问候
【问题讨论】:
标签:
android
ios
kotlin
multiplatform
【解决方案1】:
Kotlin Multiplatform 背后的主要理念是分享底层内容。这意味着您可以基本共享业务逻辑,而您的 UI 保持原生状态(注意:在 Android 中,UI 不仅是 XML,而且还是带有其绑定的 Fragment/Activity)。例如,一种常见的方法是使用架构模式(如 MVVM/MVP),您公开您的演示者/视图模型并使用接口(在 Swift 中也称为协议)与本机 UI 交互。演示者、用例、存储库和 API 调用与 kotlin 共享,并且 UI 在每个平台中实现。
对于需要使用特定平台代码实现的代码(如 Android 中的 SharedPreferences 和 iOS 中的 NSUserDefaults),请查看 Kotlin 文档中的 expect-actual 机制)
此外,您还可以共享特定于平台的库的抽象。例如,您可以定义一个接口与任何平台库进行交互,在 iOS/Android 端提供实现,并从共享模块与其交互。