美文网首页
在现有项目中使用KMM(一) - 搭建环境

在现有项目中使用KMM(一) - 搭建环境

作者: 三天过去了 | 来源:发表于2023-10-26 17:06 被阅读0次

一、前言

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 进行安装。

安装插件.png

2、新建 KMM Module

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

新建KMM Module.png

3、了解下 KMM Module 的目录

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

如果新建的是一个 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
KMMgradle插件版本要求.jpg

5、配置 gradle 版本

修改 gradle 插件版本后,最低支持的 gradle 版本也发生了变化,因此也需要同步修改 gradle 的版本,这里升级至 7.0.2。

6、添加 allowInsecureProtocol

由于 gradle 7.0 以后,不再允许访问不安全的链接,如果坚持要访问,需要添加属性,如下:


gradle7.0https.jpg
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 的方式。


kotlin-Android-extensions.jpg

10、修改 compileSdkVersion

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


compileSDK冲突.jpg

11、升级 JDK 版本

忘记在哪看到的说明,说 JDK 8 有问题,顺手也升级了...

配置 JDK 11,并本地安装 JDK 11,配置环境变量。

12、安装Xcode

KMM 对 Xcode 的版本要求,需安装符合版本的 Xcode,如果安装符合版本的 Xcode,可能还需要升级你的 macOS 系统。


xcode版本要求.png

13、适配第三方 SDK

因为升级了 Gradle 版本,可能会对功能产生影响,建议进行回归测试。

相关文章

网友评论

      本文标题:在现有项目中使用KMM(一) - 搭建环境

      本文链接:https://www.haomeiwen.com/subject/hvzyidtx.html