一、前言
KMM 全称 Kotlin Multiplatform Mobile,它是一套基于 Kolin 语言进行跨平台开发的技术框架。主要用于移动端 Android、iOS的逻辑代码复用,后续借助 Compose UI 也可以实现 UI 层面的代码复用。
官方给的教程都是如何新建一个 KMM 的工程,并不适用在现有项目中接入,因此需要结合已有的项目,针对性的接入 KMM。
本篇介绍如何针对现有的 App,配置 KMM 开发环境。
二、配置后的环境
名称 | 旧版本 | 新版本 |
---|---|---|
Gradle | 6.5 | 7.0.2 |
Gradle 插件 | 4.0.1 | 7.0.0 |
Kotlin | 1.5.30 | 1.8.0 |
JDK | 1.8 | 11 |
Xcode | 无 | 14.3.1 |
三、开始在现有项目中接入KMM
1、安装 KMM 插件
在 Android Studio 的插件功能中,搜索 Kotlin Multiplatform Mobile
进行安装。

2、新建 KMM Module
这里有个需要注意的地方,iOS framework distribution
需要选择 iOS 接入的方式,一般选择 Regular framework
即可,点击 Finish 创建一个 KMM Module。

3、了解下 KMM Module 的目录
- androidMain – Android 差异化代码
- commonMain – 通用逻辑代码
- iosMain – iOS 差异化代码
- build.gradle.kts – Module 的 gradle 配置(依赖、插件等)

如果新建的是一个 KMM 工程,则详细的目录结构如下,内容会更丰富一点,而新建 KMM Module 的方式,只包含下面的 shared 目录内容。
├── androidApp # 实际 Android APP Module
├── build.gradle.kts # 工程根 Gradle 配置
├── gradle
├── gradle.properties
├── gradlew
├── gradlew.bat
├── iosApp # 实际的 iOS 工程根目录
├── local.properties
├── settings.gradle.kts
└── shared # KMM 模块代码目录
├── build.gradle.kts # KMM 模块 Gradle 配置(依赖、插件、构建 Task、cinterop 等配置)
└── src # 内部模块形式都为 Gradle 工程 Module
├── androidMain # Android 差异化代码,最终生成 AAR
├── commonMain # 共享模块 API 代码
├── iosMain # iOS 差异化代码,
└── nativeInterop # 默认不会创建,用来存放 *.def 文件,描述与 C/C++ 代码,或 Apple Framework 交互时,构建 klib 的配置
4、配置 gradle 插件版本
回到环境配置,由于是现有项目,编译出错是很正常的事情,第一个错误,KMM 对 gradle 插件版本有要求,现升级至 7.0.0
- 最小版本:4.1
- 最大版本:7.4

5、配置 gradle 版本
修改 gradle 插件版本后,最低支持的 gradle 版本也发生了变化,因此也需要同步修改 gradle 的版本,这里升级至 7.0.2。
6、添加 allowInsecureProtocol
由于 gradle 7.0 以后,不再允许访问不安全的链接,如果坚持要访问,需要添加属性,如下:

repositories {
maven {
url 'http://registry.caijj.net/repository/maven-andriod-google'
allowInsecureProtocol = true
}
...
}
7、修改 Kotlin 的插件版本
避免出现环境兼容性问题,选择性的将 Kotlin 插件版本升级到较新版本 1.8.0。
8、现有代码适配 Kotlin 语法
升级 kotlin 版本后,对一些静态代码检查更严格一些,如定义的非重载方法名不能和父类重名,空判断等,对不规范的代码进行适配。
9、删除 kotlin-android-extensions 插件
升级 Kotlin 插件版本后,kotlin-android-extensions 插件已废弃,应替换为 view binding 插件,或者不使用这个插件。考虑到使用的地方并不多,决定注释掉该插件的声明,修改查找 view 的方式。

10、修改 compileSdkVersion
编译时提示存在其他版本的 compileSdkVersion ,需要统一版本号,现在统一为 31。

11、升级 JDK 版本
忘记在哪看到的说明,说 JDK 8 有问题,顺手也升级了…
配置 JDK 11,并本地安装 JDK 11,配置环境变量。
12、安装Xcode
KMM 对 Xcode 的版本要求,需安装符合版本的 Xcode,如果安装符合版本的 Xcode,可能还需要升级你的 macOS 系统。

13、适配第三方 SDK
因为升级了 Gradle 版本,可能会对功能产生影响,建议进行回归测试。
1、本站所有资源均从互联网上收集整理而来,仅供学习交流之用,因此不包含技术服务请大家谅解!
2、本站不提供任何实质性的付费和支付资源,所有需要积分下载的资源均为网站运营赞助费用或者线下劳务费用!
3、本站所有资源仅用于学习及研究使用,您必须在下载后的24小时内删除所下载资源,切勿用于商业用途,否则由此引发的法律纠纷及连带责任本站和发布者概不承担!
4、本站站内提供的所有可下载资源,本站保证未做任何负面改动(不包含修复bug和完善功能等正面优化或二次开发),但本站不保证资源的准确性、安全性和完整性,用户下载后自行斟酌,我们以交流学习为目的,并不是所有的源码都100%无错或无bug!如有链接无法下载、失效或广告,请联系客服处理!
5、本站资源除标明原创外均来自网络整理,版权归原作者或本站特约原创作者所有,如侵犯到您的合法权益,请立即告知本站,本站将及时予与删除并致以最深的歉意!
6、如果您也有好的资源或教程,您可以投稿发布,成功分享后有站币奖励和额外收入!
7、如果您喜欢该资源,请支持官方正版资源,以得到更好的正版服务!
8、请您认真阅读上述内容,注册本站用户或下载本站资源即您同意上述内容!
原文链接:https://www.dandroid.cn/archives/22809,转载请注明出处。
评论0