mcpField
R
r8-analyzer

r8-analyzer

github.com/android開発10.0k3.3k 回インストール2 日前に更新
リポジトリ

r8-analyzer について

r8-analyzer は、Android 開発者向けに R8 の設定や keep ルール、その影響を評価するスキルです。プロジェクトの AGP バージョンに応じて分析手順を選び、生成された指標を基に Markdown レポートを作成します。

主な機能

  1. 01Gradle と R8 の設定確認
  2. 02AGP バージョンに応じた分析経路の選択
  3. 03keep ルールの影響指標の分析
  4. 04冗長な keep ルール候補の検出
  5. 05構造化された Markdown レポートの生成

活用シーン

  1. 01Android プロジェクトの R8 設定の確認
  2. 02R8 ビルドへの keep ルールの影響測定
  3. 03冗長な keep ルール候補の特定

インストール

コマンドをコピーしてターミナルで実行します。

$npx skills add https://github.com/android/skills --skill r8-analyzer

インストール後、Claude Code で/r8-analyzerを入力して読み込まれたか確認します。

同梱ファイル

SKILL.md と一緒にインストールされる参考資料やスクリプト。

references/
CONFIGURATION.md
FULL_BUILD_CONFIG_ANALYZER.md
INSPECT-RULES.md
REPORT_FORMAT.md
references/android/topic/performance/app-optimization/
enable-app-optimization.md
scripts/
analyze.py
convert_pb_to_json.py
keep_radius_pb2.py

詳細

ステップ 1. セットアップと構成の確認

  • build.gradle、build.gradle.kts、gradle.properties を調べます。
  • references/CONFIGURATION.md を使用して、不足している最適化を特定します。
  • AGP:バージョンが 9.3 未満の場合は、簡素化された optimization {} DSL と Configuration Analyzer タスクを利用するため、9.3 への移行を提案します。
  • Full mode:gradle.properties ファイルから android.enableR8.fullMode=false が削除されていることを確認します。

ステップ 2. 分析パスの選択

  • build.gradle、build.gradle.kts、settings.gradle、settings.gradle.kts、gradle.properties、libs.versions.toml を調べ、AGP と R8 のバージョンを確認します。settings.gradle(.kts) で固定された R8 のバージョンは、AGP にバンドルされている R8 に置き換わります。

  • アプリモジュール(通常は app)と、R8 が有効になっているビルドバリアント(通常は release)を見つけます。以下のコマンドでは、これらを <module> と <Variant> として使用します。たとえば、:app:minifyReleaseWithR8 です。

  • ヘルパースクリプトは、このスキルの scripts/ ディレクトリにあります。以下の コマンドでは、<skill_dir> はこのスキルのディレクトリです。すべてのコマンドを プロジェクトのルートディレクトリから実行します。

  • AGP >= 9.3.0 の場合:**パス A(スタンドアロンタスク)**に進みます。

  • AGP < 9.3.0 の場合:**パス B(定量分析)**に進みます。

パス A:スタンドアロンの Gradle タスク(AGP >= 9.3.0)
  • ステップ 1:要件の確認:Python と protobuf パッケージ 6.33.4 以降が必須です(scripts/keep_radius_pb2.py で使用)。pip install "protobuf>=6.33.4" でインストールします。6.33.4 未満のバージョンでは、インポート時に VersionError または ImportError が発生します。
  • ステップ 2:R8 が有効なビルドでスタンドアロンタスクを実行:パスの選択時に確認したモジュールとバリアントに対して、./gradlew :<module>:analyze<Variant>R8Config(例:./gradlew :app:analyzeReleaseR8Config)を実行します。レポートは <module>/build/reports/r8/(例:app/build/reports/r8/r8-config-analyzer-release.pb)に生成されます。続行する前に、このコマンドの完了を待つ必要があります。
  • ステップ 3:JSON に変換:変換スクリプト scripts/convert_pb_to_json.py を、python3 <skill_dir>/scripts/convert_pb_to_json.py として、引数 <module>/build/reports/r8 および tmp/keepradius/keepruleradius.json を指定して明示的に実行する必要があります。このコマンドの完了を待ちます。
  • ステップ 4:分析:分析スクリプト scripts/analyze.py を、python3 <skill_dir>/scripts/analyze.py tmp/keepradius/keepruleradius.json を実行して明示的に実行する必要があります。これにより tmp/keepradius/analysis_result.txt が出力されます。このコマンドの完了を待ちます。
パス B:R8 リリースビルドの実行(AGP < 9.3.0)
  • ステップ 1:要件の確認:Python と protobuf パッケージ 6.33.4 以降が必須です。pip install "protobuf>=6.33.4" を実行します。
  • ステップ 2:生成と分析:references/FULL_BUILD_CONFIG_ANALYZER.md に記載されているシェルコマンドを実行し、レポートを R8 に生成させるために settings.gradle(.kts) の R8 バージョンを一時的に 9.4.34 以降に更新します。次に、proto レポートを tmp/r8analysis/ に生成し、tmp/r8analysis/keepruleradius.json に変換して、結果を分析し、一時的に変更した settings.gradle(.kts) を元に戻します。
  • ステップ 3:分析:スコアとルールの影響指標を確認できるよう、分析結果が tmp/r8analysis/analysis_result.txt に出力されることを確認します。

ステップ 3. レポートの生成

  • 形式: references/REPORT_FORMAT.md に厳密に従ってください。
  • 重複ルール:keep ルールを references/INSPECT-RULES.md と照合してください。keep ルールが references/INSPECT-RULES.md のパターンに一致する場合は、影響指標と併せて、その参照先に記載されたガイダンスと修正方法を含めてください。
  • 入力:Path A を使用する場合は tmp/keepradius/analysis_result.txt、Path B を使用する場合は tmp/r8analysis/analysis_result.txt から、指標(Scores、Impacts、Example Classes、rule origins)を直接抽出してください。
  • 出力:Gradle の実行中に短い進捗報告をしてもかまいませんが、最終メッセージにはレポートのみを出力してください。チャットには生の Markdown レポートのみを出力してください(「レポートはこちらです……」などの会話的な前置きは出力しないでください)。references/REPORT_FORMAT.md で定義されたセクション以外に、推奨事項、次の手順、その他のテキストを記載しないでください。設定の分析に使用したパスについて言及しないでください。

制約

  • 出力の厳格な制限:最終出力には Markdown レポートのみを含め、それ以外は一切出力しないでください。
  • コード変更禁止:調査と提案のみを行い、プロジェクトファイルは変更しないでください。ファイルの作成は tmp/ 配下(分析出力、設定のバックアップ、一時的なスクリプト)のみにしてください。また、レポートをファイルに書き込まないでください。唯一の例外は、プロジェクトで R8 9.4.34 以降がすでに固定されていない場合に Path B で必要となる、settings.gradle(.kts) 内の一時的な R8 classpath です。対話形式で実行している場合は、変更前にユーザーに確認し、分析後に元に戻してください(references/FULL_BUILD_CONFIG_ANALYZER.md を参照)。この変更が必要でユーザーが拒否した場合、またはビルドファイルを編集しないよう求めた場合は、スコアを示さずにルール単位の調査結果とビルドファイルの調査結果を報告し、その理由を記載してください。
  • プレースホルダーのスコア禁止:スコアとして N/A% を絶対に出力しないでください。
  • 重複説明の禁止:R8 の利点を説明したり、スキルの内部ファイルに言及したりしないでください。
  • 焦点:問題や該当項目がないセクション(たとえば、Subsumed Rules、Configuration)は省略してください。

コメント