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