Statsd

Statsd モジュールには、バックグラウンドで動作して指標を収集するネイティブ サービスの statsd、システム プロセスで動作し、statsd と Java の橋渡しを行う Java サービスの StatsCompanionService が含まれています。このモジュールは更新可能です。つまり、通常の Android リリース サイクル外で機能のアップデート(データ収集で使用される指標のアップデートなど)を受信できます。

モジュールの境界

statsd は、プラットフォームと起動時の安全性データの収集における主要なタッチポイントです。statsd モジュールには以下のコードが含まれています。

  • statsdframeworks/base/cmds/statsd にあります)

  • StatsCompanionServiceframeworks/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
    • 最上位をそのままコピーする
    • jniframework/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.android.os.statsd)は APEX 形式であり、Android 11 以降を搭載したデバイスで利用できます。

モジュールの依存関係

statsd モジュールは、システムからのイベントを記録するための @hide API のセットを提供します。Java コードの場合、ほとんどの @hide API はリファクタリングされ、少数の @SystemApi のタグ付きメソッドでビルドされ、生成された小さなグルーコードが組み込まれています。ネイティブ コードの場合、既存のネイティブ関数は、生成されたグルーを使用して公式の VNDK C API にリファクタリングされます。

カスタマイズ

stats モジュールではカスタマイズがサポートされていません。

テスト

Android 互換性テストスイート(CTS)は、statsd の機能と、リリース管理が依存する Atom を検証します。