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 的功能以及發布管理所依賴的原子。