Statsd 模組包含 statsd (在背景執行的原生服務,用於收集指標) 和 Java 服務 StatsCompanionService
(在系統程序中執行,並橋接 statsd 和 Java)。這個模組可更新,也就是說,即使不在正常的 Android 發布週期內,也能接收功能更新 (例如資料收集時使用的指標更新)。
模組邊界
Statsd 是平台與發布安全資料收集之間的主要接觸點。statsd 模組包含下列程式碼。
frameworks/base/cmds/statsd
的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 的功能,以及發布管理作業所依據的原子。