背景
- KMM发展自今已经可以在android和iOS平台上,通过kotlin compose来实现部分通用UI适配,以前还一直沉浸在kmm写sdk 逻辑在双方公用的概念上,今天抽空就来学习下用compose开发两端ui。
补充说明:KMM现在还可以开发桌面应用、服务端应用、H5,贼牛逼了。
如何创建
- 现在kmm是可以直接通过下面网址,通过勾选所需要的跨平台,然后填入应用名和应用id,直接生成可运行的跨平台项目,这点做的非常Nice。
kmm跨平台创建项目网址
项目运行遇到问题
安卓运行遇到问题
- 项目需要的AS版本需要2025年后的较新版本,否则运行提示AGP版本兼容问题。
iOS运行遇到问题
问题一:The project at ‘/Users/admin/Library/kotlin_project/KotlinProject/iosApp/iosApp.xcodeproj’ cannot be opened because it is in a future Xcode project file format. Adjust the project format using a compatible version of Xcode to allow it to be opened by this version of Xcode.
上面问题是说,kmm生成的项目所需的版本号大于Xcode的版本号,无法打开。这块iOS在Xcode和编译版本是抓的比较严格的,所以说需要对应版本。
正确解决:升级Mac系统版本,把Xcode升级到最新版本。(我通过升级Mac到26.0.1,XCode版本:Version 26.0.1成功运行iOS应用)
错误解决:将iOS项目降低到对应XCode的版本,从而诞生出问题二。
问题二:The project ‘iosApp’ is damaged and cannot be opened. Examine the project file for invalid edits or unresolved source control conflicts.
上面问题是说,依赖上有冲突,我以为是没有依赖上framework层,所以根据!如何给iOS项目注入Compse framework依赖依赖上compose的生成的ios framework后产生了问题三。
问题三:Link issue on iOS (undefined symbol OBJC_CLASS$_UITextLoupeSession)
上面问题三就很懵逼了,在网上搜了后官方直接说升级Xcode版本,最后还是老老实实全家桶升级好了。
官方回答
kmm项目iOS依赖shell脚本
上面可以看出在根目录中,执行/gradlew :composeApp:embedAndSignAppleFrameworkForXcode 生成framework文件。