Kotlin Multiplatform 构建跨平台应用入门

361 阅读2分钟

Kotlin Multiplatform(KMP)现在炙手可热,对于 Android 开发来说也很友好,感兴趣不如动手试一下吧

环境配置

下载官方提供的 kdoctor 工具,快速检查当前缺少哪部分:

//安装
brew install kdoctor
//安装后执行
kdoctor

当全部配置好后应该会像下面一样:

Environment diagnose (to see all details, use -v option):
[] Operation System
[] Java
[!] Android Studio
! Android Studio (AI-243.22562.218.2431.13114758)
    Location: /Users/licheng/Applications/Android Studio.app
    Bundled Java: openjdk 21.0.5 2024-10-15
    Kotlin Plugin: 243.22562.218.2431.13114758-AS
    Kotlin Multiplatform Mobile Plugin: not installed
    Install Kotlin Multiplatform Mobile plugin - https://plugins.jetbrains.com/plugin/14936-kotlin-multiplatform-mobile
[] Xcode
[] CocoaPods

Conclusion:
   Your operation system is ready for Kotlin Multiplatform Mobile Development!

Android Studio 中检测插件安装这一项没有打勾的原因是:插件名 Kotlin Multiplatform Mobile 后面改成了 Kotlin Multiplatform,kdoctor 工具并没有更新对应判断逻辑,所以不通过,也不用理会

JVM环境

网上很多教程,这里仅演示使用 HomeBrew 安装 jdk17 的版本

//安装
brew install openjdk@17

//获取路径
/usr/libexec/java_home -V
//应输出类似内容:
Matching Java Virtual Machines (1):
    17.0.14 (arm64) "Homebrew" - "OpenJDK 17.0.14" /opt/homebrew/Cellar/openjdk@17/17.0.14/libexec/openjdk.jdk/Contents/Home
/opt/homebrew/Cellar/openjdk@17/17.0.14/libexec/openjdk.jdk/Contents/Home

//添加环境变量(此处以zsh为例)
nano ~/.zshrc
//在文件末尾添加:
export JAVA_HOME=/opt/homebrew/Cellar/openjdk@17/17.0.14/libexec/openjdk.jdk/Contents/Home
export PATH=$JAVA_HOME/bin:$PATH
//保存文件(Ctrl+O → Enter → Ctrl+X)

//使配置生效
source ~/.zshrc

//验证安装
//检查 Java 版本
java -version
//检查环境变量
echo $JAVA_HOME

Android Studio 及插件

AS 自不用多说,能对 KMP 感兴趣的应该大部分都是 Android 开发了,插件市场里直接搜索 Kotlin Multiplatform 安装即可

Xcode

推荐使用Xcodes来安装 Xcode,其类似JetBrains Toolbox,可以方便的下载和管理版本

brew install --cask xcodes

登录 Apple ID 后选择版本,一键下载安装

安装完 Xcode 后打开,新建一个iOS APP 项目,如果你和我一样之前从来没有开发过 iOS,这里可以开始尝试在 iPhone 真机或模拟器先跑一次原生的 Hello World 了

刚安装的Xcode仍需安装模拟器和环境,点击框框对应的地方即可安装,这里我已经安装过了所以显示 icon 为编译

(一开始我以为这里是单纯安装模拟器,我想着我只需要真机运行就不去装,结果一直跑不了项目,一开始以为是签名什么的问题,折腾了很久最后才发现原来这个安装是必须的)

iPhone 真机运行项目

点击项目名进入项目设置,Signing 这里加入 Team 和签名,具体其实我也不太明白,总之一路登录就是了

联线手机并信任后,可以在iPhone-Setting-Privacy中看到开发者模式的入口,编译项目安装后在 Setting-VPN中选择允许运行不信任软件,最终就可以在运行项目到 iPhone 上了

CocoaPods

//先安装 ruby
brew install ruby
//查看 ruby 路径
which ruby

//添加环境变量
nano ~/.zshrc
export PATH="/opt/homebrew/opt/ruby/bin:$PATH"
//下面的UTF8声明也一并添加了
export LANG=en_US.UTF-8
export LANGUAGE=en_US.UTF-8
export LC_ALL=en_US.UTF-8

//安装 cocoapods
brew install cocoapods

第一个 Demo

JetBrains已经给我们提供了一键生成脚手架:Kotlin Multiplatform Wizard | JetBrains,我们直接用上创建第一个 Demo

勾选想要的平台后下载工程并打开,等待 gradle 运行完,run configurations中选择 composeApp,就可以直接编译运行到 Android 上了

运行到iOS

除了可以在 Xcode 中打开项目运行,在 Android Studio 中也可以(这种感觉还挺神奇的)

run configurations选择或新建 iOS Application config,Execution target选择你联线的真机或者模拟器

如果是真机运行,那么需要和 AppleId 关联的 TeamID。执行以下命令:

kdoctor --team-ids

得到一串 ID,进到iosApp/Configuration/Config.xcconfig中添加:

TEAM_ID=XXXXXXXXXX

运行到桌面端或 Web 端

Gradle 中选择对应 run 即可

至此就真的实现了跨端运行啦,还是挺好玩的吧