AppSearch 是一种设备端索引编制和结构化搜索引擎,在 Android 12 中以 APEX 的形式提供。在 Android 13 中,AppSearch 作为 Mainline 模块提供。
动机
为了确保在整个 Android 生态系统中一致地实现 AppSearch 并支持可更新性。
优势:
- 支持通过 Play 商店更新 AppSearch
- 可确保符合 AppSearch CDD 要求
详细信息
- 通过 AppSearch API 收集的数据仍会保留在用户设备上(但汇总的指标数据除外,这些数据将用于性能优化目的)。
- 一种 I/O 占用率低的移动设备优先快速存储实现
- 快速高效地对大型数据集进行索引编制和查询
- 支持多种语言,例如英语、西班牙语和 CJKT
- 相关性排名和使用情况评分
AppSearch 架构
图 1 着重展示了 AppSearch 概念以及系统服务进程的边界。
图 1. AppSearch 模块架构
模块边界
AppSearch Mainline Apex -
com.android.appsearch
- AppSearch API Surface (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 Surface (Java)
HAL 接口/实现 (C++)
- 不适用
请参阅图 1 中的模块架构图。
软件包格式
此模块的主要函数包含在 APEX 软件包 com.android.appsearch
中。
依赖项
- libicu
- libprotobuf-cpp-lite
- ndk
自定义
此模块不可自定义。