Statsd

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/StatsDframeworks/base/apex/StatsDsystem/core/libstats 移出。

新的專案架構

  • system/core/libstatspackages/modules/StatsD/lib/libstats
    • system/core/libstats/socketpackages/modules/StatsD/lib/libstatssocket
    • system/core/libstats/pullpackages/modules/StatsD/lib/libstatspull
  • frameworks/base/cmds/StatsDpackages/modules/StatsD/bin
  • frameworks/base/apex/StatsD
    • 複製頂層資料夾
    • jni 移至 framework/jni
    • 將頂層檔案移至 /apex 目錄
      • frameworks/base/apex/StatsD/\*packages/modules/StatsD/apex/\*
      • frameworks/base/apex/StatsD/jnipackages/modules/StatsD/apex/framework/jni
  • cts/hostsidetests/StatsDpackages/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 Compatibility Test Suite (CTS) 可驗證統計資料和版本管理所需的 Atom。