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/StatsD 、およびsystem/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) は、statsd の機能と、リリース管理が依存するアトムを検証します。