AppSearch 是一款设备端索引和结构化搜索引擎,已在 Android 12 中作为 APEX 发布。在 Android 13 中,AppSearch 作为主线模块发布。
动机
确保在整个 Android 生态系统中 AppSearch 实现的一致性,并支持可更新性。
优势
- 允许通过 Play 商店更新 AppSearch
- 确保符合 AppSearch CDD 要求
详情
- 通过 AppSearch API 收集的数据仍保留在用户的设备上(聚合指标数据除外,这些数据用于性能优化目的)。
- 快速、移动优先的存储实现,具有低 I/O 使用率
- 针对大型数据集的高效索引和查询
- 多语言支持,例如英语、西班牙语和 CJKT
- 相关性排名和用量评分
AppSearch 架构
图 1 重点介绍了 AppSearch 概念以及系统服务进程边界。
图 1. AppSearch 模块架构
模块边界
AppSearch 主线 Apex -
com.android.appsearch
- AppSearch API 表面 (Java)
- 代码位置:
frameworks/base/apex/appsearch/framework
- 进程:BOOT_CLASS_PATH
- 代码位置:
- AppSearchManagerService (Java)
- 代码位置:
frameworks/base/apex/appsearch/service
- 进程:system_server
- 代码位置:
- Icing 原生库 (C++)
- 代码位置:
external/icing
- 进程:system_server
- 代码位置:
- AppSearch API 表面 (Java)
HAL 接口/实现 (C++)
- 不适用
请参阅图 1 中的模块架构图。
软件包格式
此模块的主要功能包含在 APEX 软件包 com.android.appsearch
中。
依赖项
- libicu
- libprotobuf-cpp-lite
- ndk
自定义
此模块不可自定义。