Statsd モジュールには、バックグラウンドで動作して指標を収集するネイティブ サービスの statsd、システム プロセスで動作し、statsd と Java の橋渡しを行う Java サービスの StatsCompanionService
が含まれています。このモジュールは更新可能です。つまり、通常の 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/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 を検証します。