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/master
-
goog/\*-plus-aosp
-
aosp/master
應保留 Statsd 中文件的歷史記錄。
模塊格式
statsd 模塊 ( com.google.android.os.statsd
) 採用APEX格式,可用於運行 Android 11 或更高版本的設備。
模塊依賴
Statsd 模塊提供了一組@hide
API 來記錄來自系統的事件。對於 Java 代碼,大多數@hide
API 被重構為構建在一組較小的@SystemApi
標記方法上,並內置了一些小的生成膠水代碼。對於本機代碼,現有的本機函數被重構為官方 VNDK C API,生成膠水。
定制
Statsd 模塊不支持自定義。
測試
Android 兼容性測試套件 (CTS) 驗證 statsd 的功能以及發布管理所依賴的原子。