AppSearch

AppSearch 是一种设备端索引编制和结构化搜索引擎,在 Android 12 中以 APEX 的形式提供。在 Android 13 中,AppSearch 作为 Mainline 模块提供。

动机

为了确保在整个 Android 生态系统中一致地实现 AppSearch 并支持可更新性。

优势:

  • 支持通过 Play 商店更新 AppSearch
  • 可确保符合 AppSearch CDD 要求

详细信息

  • 通过 AppSearch API 收集的数据仍会保留在用户设备上(但汇总的指标数据除外,这些数据将用于性能优化目的)。
  • 一种 I/O 占用率低的移动设备优先快速存储实现
  • 快速高效地对大型数据集进行索引编制和查询
  • 支持多种语言,例如英语、西班牙语和 CJKT
  • 相关性排名和使用情况评分

AppSearch 架构

图 1 着重展示了 AppSearch 概念以及系统服务进程的边界。

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
  • HAL 接口/实现 (C++)

    • 不适用

请参阅图 1 中的模块架构图。

软件包格式

此模块的主要函数包含在 APEX 软件包 com.android.appsearch 中。

依赖项

  • libicu
  • libprotobuf-cpp-lite
  • ndk

自定义

此模块不可自定义。