news 2026/7/17 8:48:49

用 Compose Multiplatform 打造跨端 AI 对话应用:Android/iOS 一套代码全解析

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
用 Compose Multiplatform 打造跨端 AI 对话应用:Android/iOS 一套代码全解析

基于 CMP(Compose Multiplatform)共享 UI + SQLDelight + Voyager 的落地样例,以下从架构、数据层、导航与跨端适配四个维度,拆解一套 Kotlin 代码同时驱动 Android/iOS AI 对话客户端的实战路径。

一、整体架构与代码复用率

CMP 允许用同一份 Kotlin + Compose 代码编译至 Android、iOS、Desktop 等端,业务逻辑(网络、ViewModel、DB)可 100% 共享,UI 代码共享率普遍在95%+

。典型分层为:

  • 共享层(commonMain):API 客户端、ViewModel、本地库、导航图
  • 平台入口:Android 用ComponentActivity.setContent,iOS 用ComposeUIViewController包装后由 SwiftUI 调用

二、数据持久化:SQLDelight 落地

在跨端 AI 客户端(如 DeepCo)中,SQLDelight 作为类型安全本地库,在commonMain定义ConversationMessageApiEndpoint等表,自动生成 SQL 查询,统一存储聊天记录与密钥

。Chatter 同样采用 SQLDelight 做 SQLite 持久化,保障 Android/iOS/Desktop 对话历史离线可用。

三、导航与路由:Voyager 角色补充

虽然搜索结果未直接展开 Voyager 代码,但同生态的导航实践显示:CMP 项目常用声明式导航库(如 JetBrains Navigation Compose 或第三方 Voyager)管理聊天页/设置页跳转

。Voyager 以纯 Kotlin 多平台路由替代平台原生导航,使commonMain持有全量页面栈,Android/iOS 仅渲染。

四、跨端 AI 对话关键代码范式

  1. 共享聊天界面(commonMain)

kotlin

@Composable fun ChatScreen(presenter: AIPresenter) { val state by presenter.state.collectAsState() LazyColumn { items(state.messages) { MsgBubble(it) } } TextField(onValueChange = { presenter.ask(it) }) }
  1. Android 入口

kotlin

class MainActivity : ComponentActivity() { override fun onCreate(s: Bundle?) { setContent { ChatScreen(AIPresenter()) } } }
  1. iOS 入口

kotlin

fun MainViewController() = ComposeUIViewController { ChatScreen(AIPresenter()) }

Swift 侧用UIViewControllerRepresentable嵌入,实现“一套 UI 代码双端运行”

五、痛点直击与避坑

  • API 密钥安全:密钥存本地(DataStore/Room/SQLDelight),不硬编码,BYOK 模式优先
  • 流式响应:Ktor 协程处理 SSE,Android/iOS 共用bodyAsChannel()解析data:增量
  • 平台差异:文件选择等用expect/actual隔离,公共 UI 无感知

综上,CMP + SQLDelight + Voyager 的组合让 Android/iOS AI 对话应用从“双代码库”收敛为“单 KMP 模块”,显著降低维护成本并保持一致体验。

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/7/17 8:46:59

Allwinner H618开发板实现OpenCV与PyQt5实时图像显示方案

1. 项目背景与核心需求 在嵌入式开发领域,Allwinner H618作为一款高性能低功耗处理器,广泛应用于机顶盒、智能终端等设备。最近在调试H618开发板时,我遇到了一个典型需求:需要通过摄像头采集实时图像,并在图形界面中显…

作者头像 李华
网站建设 2026/7/17 8:46:38

JUnit4 ComparisonFailure深度解析:从原理到实战优化断言调试

1. 项目概述:为什么我们需要深究ComparisonFailure? 如果你写过Java单元测试,尤其是用过JUnit4,那你一定对 Assert.assertEquals 这类断言方法再熟悉不过了。它们是我们验证代码逻辑的“标尺”。但很多时候,当断言失…

作者头像 李华
网站建设 2026/7/17 8:46:34

从快速原型到工业级AI应用的技术演进与实战

1. 从"凑合能用"到"真正大招"的技术演进路径OpenAI Codex负责人近期透露的内部开发细节,揭示了当前AI应用开发中一个鲜为人知的现状:即使是顶尖AI团队,在实际产品落地时也不得不采用"够用就好"的务实策略。他们…

作者头像 李华
网站建设 2026/7/17 8:45:51

大语言模型量化技术:原理、挑战与实践

1. 大语言模型量化的本质与挑战 大语言模型量化本质上是通过降低模型参数的数值精度来减少模型体积和计算资源消耗的技术手段。这项技术之所以重要,是因为当前主流大语言模型的参数量普遍达到百亿甚至千亿级别,直接部署和运行这些模型需要消耗大量显存和…

作者头像 李华
网站建设 2026/7/17 8:45:32

智能化技术体系构建与核心组件解析

1. 智能化技术体系概述 在当今数字化转型浪潮中,智能化技术体系已成为推动产业升级的核心引擎。这套体系不是单一技术的简单堆砌,而是由多个相互关联的技术模块组成的有机整体,能够实现感知、分析、决策和执行的闭环运作。 我曾在制造业数字…

作者头像 李华
网站建设 2026/7/17 8:43:23

CANN/asc-devkit Floor接口临时空间大小获取

GetFloorMaxMinTmpSize 【免费下载链接】asc-devkit 本项目是CANN 推出的昇腾AI处理器专用的算子程序开发语言,原生支持C和C标准规范,主要由类库和语言扩展层构成,提供多层级API,满足多维场景算子开发诉求。 项目地址: https://…

作者头像 李华