Statsd 模块包含 statsd(一个在后台运行以收集指标的原生服务)和 Java 服务 StatsCompanionService(在系统进程中运行并在 statsd 和 Java 之间建立桥梁)。此模块是可更新的,这意味着它可以在正常的 Android 发布周期之外接收功能更新(例如,用于数据收集的指标的更新)。
模块边界
Statsd 是平台和启动安全数据收集之间的主要接触点。statsd 模块包含以下代码。
statsd,位于frameworks/base/cmds/statsd中StatsCompanionService,位于frameworks/base/services/core/java/com/android/server/stats/StatsCompanionService.java中平台 protobuf 结构的子集,主要位于
frameworks/base/core/proto中
作为原生服务,statsd 可以比框架更持久,并检测 system_server 本身中的崩溃。
在 Android 12 中,Statsd 模块代码从 frameworks/base/cmds/StatsD、frameworks/base/apex/StatsD 和 system/core/libstats 移动。
新项目结构
system/core/libstats→packages/modules/StatsD/lib/libstatssystem/core/libstats/socket→packages/modules/StatsD/lib/libstatssocketsystem/core/libstats/pull→packages/modules/StatsD/lib/libstatspull
frameworks/base/cmds/StatsD→packages/modules/StatsD/binframeworks/base/apex/StatsD→- 按原样复制顶层
- 将
jni移至framework/jni - 将顶层文件移至
/apex目录frameworks/base/apex/StatsD/\*→packages/modules/StatsD/apex/\*frameworks/base/apex/StatsD/jni→packages/modules/StatsD/apex/framework/jni
cts/hostsidetests/StatsD→packages/modules/StatsD/tests
补丁移动示例命令
将更改应用于以下分支
goog/mainline-prodgoog/maingoog/\*-plus-aospaosp/main
应保留 Statsd 中文件的历史记录。
模块格式
statsd 模块 (com.android.os.statsd) 采用 APEX 格式,适用于运行 Android 11 或更高版本的设备。
模块依赖项
Statsd 模块提供一组 @hide API,用于记录来自系统的事件。对于 Java 代码,大多数 @hide API 都经过重构,以构建在较小的 @SystemApi 标记方法集之上,并内置了一些小的生成粘合代码。对于原生代码,现有的原生函数经过重构,成为官方 VNDK C API,并生成粘合代码。
自定义
Statsd 模块不支持自定义。
测试
Android 兼容性测试套件 (CTS) 验证 statsd 的功能以及发布管理所依赖的原子。