安卓应用跨平台需求背景

今年帮助一家公司,使用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. 独立的业务分开实现,如微信登录等。

Logo

有“AI”的1024 = 2048,欢迎大家加入2048 AI社区

更多推荐