KMM-Kotlin跨平台应用初识
2022-03-30 本文已影响0人
小千
由于业务需求和人力的现状,采用了Kotlin实现业务逻辑,iOS和Android分别实现UI绘制的开发方式。
1、构建环境+创建首个跨平台KMM项目
可参考Kotlin官方指导创建和体验首个跨平台项目。
- 安装好 Android studio后,先下载插件:Preferences - Plugins - Marketplace - 搜索 Kotlin Multiplatform Mobile 并安装。
![](https://img.haomeiwen.com/i223149/847aa2e70cc8221a.png)
- 新建项目,选择KMM app
![](https://img.haomeiwen.com/i223149/7e39cba1a2ea4719.png)
- 构建成功后,选择iosApp进行编译和运行
![](https://img.haomeiwen.com/i223149/a8c9afae0a887bcd.png)
- 可以构建不同模拟器进行编译
![](https://img.haomeiwen.com/i223149/07a0fd87553c9634.png)
![](https://img.haomeiwen.com/i223149/eff092102113f3be.png)
2、KMM项目结构
KMM项目主要为三部分组成:
- 共享模块
- Android app
- iOS app
![](https://img.haomeiwen.com/i223149/fc584612b09d4790.png)
项目结构如下所示:
![](https://img.haomeiwen.com/i223149/1a958b61ab08447a.png)
3、共享代码+分平台代码
- 共享代码放在 commonMain 的文件夹中,多平台可直接调用
![](https://img.haomeiwen.com/i223149/aa996ed9b6c0d318.png)
- 因平台差异,须分别实现的,则放在各自平台的文件夹中,如 iosMain,但是需要 expect-actual 配对实现,具体如下:
- commonMain 实现接口申明:expect
package com.example.xqkmmdemo
expect class Platform() {
val platform: String
}
- iosMain或androidMain 进行接口实现:actual
package com.example.xqkmmdemo
import platform.UIKit.UIDevice
actual class Platform actual constructor() {
actual val platform: String = UIDevice.currentDevice.systemName() + " " + UIDevice.currentDevice.systemVersion
}
4、Kotlin和客户端交互
4.1、 Kotlin 直接调用原生系统方法
package com.example.xqkmmdemo
// 引入原生库
import platform.UIKit.UIDevice
actual class Platform actual constructor() {
// 调用原生系统方法
actual val platform: String = UIDevice.currentDevice.systemName() + " " + UIDevice.currentDevice.systemVersion
}
4.2、 客户端调用Kotlin方法
查看KMM项目中自动创建的iosApp项目,即可发现客户端是如何调用kotlin的方法。
![](https://img.haomeiwen.com/i223149/30b92600daa44153.png)