Rays 中文文档 下载 App

Rays 技术栈速览:从 Room 到 ML Kit

技术栈总览

Rays 的核心技术组件来自 Google 的 Jetpack 和 AndroidX 生态,外加一些第三方库。按功能分类:

架构与基础

组件作用
Kotlin主语言
Jetpack Compose声明式 UI 框架
MVI Architecture应用架构模式
Kotlin Coroutines + Flow异步处理与响应式数据流
ViewModelUI 状态容器(AndroidX Lifecycle)
Hilt依赖注入
Splash ScreenAndroid 12+ 启动页 API
Navigation Compose页面导航

数据存储

组件作用
Room本地关系数据库(表情、标签、OCR 结果等)
DataStore键值对存储(设置项)

图像与媒体

组件作用
Coil异步图片加载(Compose 友好)
Lottie动画效果

机器学习 / AI

组件作用
ML Kit文字识别(OCR)、其他视觉能力
LiteRT轻量级模型推理引擎
自研 StickerClassification表情包分类模型(见 SkyD666/StickerClassification)

系统集成

组件作用
AIDL进程间通信(自动分享功能可能用到)
Profile Installer应用间数据传递
Paging列表分页加载(表情多的时候)

每个组件在 Rays 里的角色

Room(数据库)

Rays 的表情库是一个 Room 数据库。主要的表可能包括:

表存什么
sticker表情基本信息(路径、添加时间、收藏标记)
tag标签列表
sticker_tag表情和标签的多对多关系
ocr_result每张图的 OCR 识别结果
title每张图的自定义标题

Room 的好处是类型安全 + SQL + Kotlin Flow 响应式查询——搜"原神"这样的查询可以写成一个 Flow,结果变化自动通知 UI。

DataStore(设置存储)

DataStore 存简单的键值对:

比 SharedPreferences 更现代、类型安全、协程友好。

ML Kit(OCR)

ML Kit 是 Google 的移动端机器学习工具集。Rays 用它做:

ML Kit 的模型在设备本地跑,不联网。

Coil(图片加载)

在表情库里显示缩略图需要高效的图片加载。Coil 是 Compose 时代最流行的图片加载库:

Hilt(依赖注入)

Hilt 是 Google 推荐的依赖注入框架。Rays 的 Repository、DataSource、ViewModel 等都通过 Hilt 注入,不用手动 new 来 new 去。

好处:

为什么选这些组件

Rays 用的每个组件都有更轻量或更重量级的替代品。作者的选择体现了一个够用就行的原则:

整套技术栈都是 Google 官方推荐的 Modern Android Development(MAD)组件的子集,没有特别偏门的东西。