现有安卓应用支持IOS
摘要:本文探讨了使用Kotlin Multiplatform(KMP)实现跨平台开发的可行性。KMP作为JetBrains推出的跨平台方案,可让开发者用一套Kotlin代码适配Android、iOS等多平台,并支持Compose UI共享。文章分析了核心优势(业务逻辑复用)和需平台专属代码的场景(如微信登录、硬件控制等),推荐了Ktor、Koin等跨平台库和分层架构方案。作者计划未来通过5个步骤进
安卓应用跨平台需求背景
今年帮助一家公司,使用AI工具快速开发了一个安卓应用,使用的是jetpack compose。当前虽然已经满足了用户,但是考虑未来再有类似的APP需求,如果用户需要支持IOS,是否需要更换技术栈:如reactnative,flutter等,还是说能使jetpack compose支持IOS。
正好近期看到了Kotlin Multiplatform(Kotlin 跨平台),它是是 JetBrains 推出的、基于 Kotlin 语言的跨平台开发方案,核心目标是让开发者用 一套 Kotlin 代码 编写业务逻辑,同时适配多个平台(如 Android、iOS、桌面端、Web 等),仅在需要平台特定功能(如调用系统 API)时编写少量平台专属代码。尤其是现在还支持了compose ui页面公用,这样也无需使用swiftui开发IOS页面,那我理解这种简单的安卓应用:页面+网络调用+数据库存储这些都可以公用一份代码了。 顶多是一些特殊的功能,比如微信登录,硬件控制,权限这些?不知道是否要分开写代码。
更关键的是KMP今年已经发了稳定版本了。
学习资料
官方资料
https://developer.android.com/kotlin/multiplatform/migrate?hl=zh-cn
https://developer.android.com/codelabs 包含2个kotlin multiplatform 的练习,可用关键字搜
三方国外视频课程
https://youtube.com/watch?v=vvP5vnmzY84
https://youtube.com/watch?v=WT9-4DXUqsM
Android Studio插件:kotlin multiplatform
在线工程创建(androidstudio默认没有创建compose ui共享的工程)Kotlin Multiplatform Wizard | JetBrains
几个跨平台的三方库(来自上述的视频课程):
Ktor:专注于网络通信(客户端 / 服务器),跨平台,简化 HTTP 请求和 Web 服务开发;
Koin:专注于依赖注入,用纯 Kotlin 代码管理对象依赖,解耦组件,简化测试。
room:sqlite数据库操作
colil3: 图片缓存与展示
datastore: 偏好存储,替代sharepreferrences
包架构推荐(来自上述的视频课程):
book(业务)
- data 数据操作,转换,如http,数据库
- domain 核心业务类
- presentation
core (多个业务公用的)
- data
- domain
- presentation
未来计划
现在没有时间整,将来有真正需求时,再来整整,当前只确认个可行性方向。正好也让KMP再发展一段时间:
迁移jetpack-compose todolist:
1. 使用在线创建工程,尝试可以在安卓,IOS中运行
2. 验证依赖的三方库使用:网络,图片,数据库,依赖注入,navigation等
3. 现有工程架构分层优化:按业务,每个业务下分data,domain,presentation
4. 现有页面,逐个迁移,便于排查问题
5. 独立的业务分开实现,如微信登录等。
更多推荐


所有评论(0)