統計數據

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