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/libstats- system/core/libstats/socket→- packages/modules/StatsD/lib/libstatssocket
- system/core/libstats/pull→- packages/modules/StatsD/lib/libstatspull
 
- frameworks/base/cmds/StatsD→- packages/modules/StatsD/bin
- frameworks/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-prod
- goog/main
- goog/\*-plus-aosp
- aosp/main
应该保留 Statsd 中文件的历史记录。
模块格式
statsd 模块 (com.android.os.statsd) 采用 APEX 格式,适用于搭载 Android 11 或更高版本的设备。
模块依赖项
Statsd 模块提供了一组 @hide API 来记录系统中的事件。对于 Java 代码,大多数 @hide API 都被重构,现构建在更小的一组以 @SystemApi 标记的方法之上,其中内置了一些生成的小段粘合代码。对于原生代码,现有的原生函数被重构为官方 VNDK C API,并含有生成的粘合代码。
自定义
Statsd 模块不支持自定义。
测试
Android 兼容性测试套件 (CTS) 可验证 statsd 的功能及版本管理所依赖的 Atom。
