mcpField
U
updating-android-sdk

updating-android-sdk

github.com/flutter開発180.5k65 回インストール今日更新
リポジトリ

updating-android-sdk について

Flutter リポジトリ向けに、packages.txt へ Android SDK コンポーネントを追加し、各プラットフォーム用アーカイブを CIPD に公開するスキルです。パッケージ ID、タグの一意性、権限、アップロード確認を扱います。

主な機能

  1. 01packages.txt での SDK パッケージ設定
  2. 02公式パッケージ ID の確認
  3. 03CIPD タグの一意性確認
  4. 04クロスプラットフォーム SDK アーカイブのアップロード
  5. 05アップロード済みパッケージタグの確認

活用シーン

  1. 01新しい Android プラットフォーム SDK の追加
  2. 02SDK アーカイブの CIPD への公開
  3. 03パッケージ解決やアップロード失敗の調査

インストール

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

$npx skills add https://github.com/flutter/flutter --skill updating-android-sdk

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

詳細

Flutter Android SDK と CIPD パッケージの更新

このスキルでは、packages.txt で新しい Android SDK コンポーネントを設定し、タグの一意性を確認してから、リポジトリの自動化スクリプトを実行して、クロスプラットフォームのアーカイブを Chrome Infrastructure Package Deployment(CIPD)にアップロードする手順をエージェントに順を追って説明します。

前提条件と権限の確認

パッケージを変更したり CIPD アップロードを開始したりする前に、ローカル環境と認証情報が正しく設定されていることを確認してください。

  1. Depot Tools の確認:cipd CLI を提供する depot_tools が環境で利用できることを確認します。
  2. CIPD 書き込み権限の確認:この操作には、CIPD プレフィックス flutter/android/sdk/all/ への書き込みアクセスが必要です。作業を進める前にアクセス権を確認してください。
    cipd acl-check flutter/android/sdk/all/ -writer
    
    アクセスが拒否された場合は、ユーザーに flutter-cipd-writers ロールを申請し、cipd auth-login で認証するよう依頼してください。

ステップ 1:対象 SDK パッケージを設定する(packages.txt)

スクリプト create_cipd_packages.sh は、対象の SDK コンポーネントとバージョンを packages.txt から読み取ります。

  • 場所:src/flutter/tools/android_sdk/packages.txt
  • 形式:<package_name>:<subdirectory_to_upload>(複数ディレクトリのアップロードでは : で区切ります)
公式パッケージ識別子の確認

正確なパッケージ識別子を確認するため、必ずローカルまたはリモートの Android SDK リポジトリを照会してください。

sdkmanager --list --include_obsolete

重要

Canary/プレビューと安定版の API レベル Android 37(Cinnamon Bun)などのプレリリース版または Canary 版の Android を採用する場合、sdkmanager はプラットフォームコンポーネントを .0 のサフィックス付きで公開することがよくあります(例:platforms;android-37.0)。 sdkmanager が platforms;android-37.0 を明示的に必要としている場合、整数の API レベル文字列(platforms;android-37)を想定したり、強制したりしないでください。誤ったパッケージ文字列を使用すると、後続のダウンロードが失敗します。

packages.txt の更新例

Android 37 のプラットフォームと build-tools を追加するには:

platforms;android-37.0,platforms;android-36,platforms;android-35,platforms;android-34:platforms
cmdline-tools;latest:cmdline-tools
build-tools;37.0.0,build-tools;36.1.0,build-tools;36.0.0,build-tools;35.0.0:build-tools
platform-tools:platform-tools
tools:tools
cmake;3.22.1:cmake
ndk;28.2.13676358:ndk

ステップ 2:タグの一意性を確認してアップロードスクリプトを実行する

メモ

CIPD バージョンタグの標準化 整理されたバージョン記述子(例:37v1、37v2)を使用してください。create_cipd_packages.sh が標準のアップロードパイプラインになったため、unmodified などの従来の推測的なサフィックスは付けないでください。

CIPD のタグと ref は不変です。スクリプトを実行する前に、指定するバージョンタグ(例:37v1)がまだ登録されていないことを確認してください。

cipd describe flutter/android/sdk/all/mac-arm64 -version version:<VERSION_TAG>
  • タグが未使用の場合:コマンドは終了コード 1 と Error: no such tag. を返します。作業を進めてかまいません。
  • タグが存在する場合:コマンドは既存の Package: と Instance ID: を出力します。新しく一意なバージョンタグを選ぶ必要があります。

一意性を確認したら、スクリプトを実行します。

cd src/flutter/tools/android_sdk
./create_cipd_packages.sh <VERSION_TAG> <PATH_TO_LOCAL_SDK>
スクリプトの実行方法
  1. クリーンなワークスペース:スクリプトは、キャッシュの再利用を防ぐため、初期状態の一時作業ディレクトリ(mktemp -d)を作成します。
  2. クロスプラットフォームのバンドル:REPO_OS_OVERRIDE を利用して、linux、macosx(amd64 と arm64)、windows 向けのパッケージを取得します。
  3. ライセンスの承諾:必要な Android SDK ライセンスはすべて自動的に承諾され、アップロードディレクトリにパッケージ化されます。
  4. CIPD パッケージの作成:cipd create を呼び出し、パッケージを flutter/android/sdk/all/<cipd_name> の下にコピーしてタグを付けます。

ステップ 3:CIPD へのアップロードとタグ付けを確認する

Engine の依存関係をロールする前に、すべてのアーキテクチャターゲットでパッケージが正常に登録されたことを確認してください。

# macOS Apple Silicon (arm64)
cipd describe flutter/android/sdk/all/mac-arm64 -version version:<VERSION_TAG>

# macOS Intel (amd64)
cipd describe flutter/android/sdk/all/mac-amd64 -version version:<VERSION_TAG>

# Linux (amd64)
cipd describe flutter/android/sdk/all/linux-amd64 -version version:<VERSION_TAG>

# Windows (amd64)
cipd describe flutter/android/sdk/all/windows-amd64 -version version:<VERSION_TAG>

出力に有効な Instance ID が表示され、要求したタグが ref に紐付けられていることを確認してください。


トラブルシューティングと失敗への対処

パッケージの選択、認証、スクリプトの実行中に操作が失敗した場合は、以下の対処法を適用してください。

1. 権限が拒否される(cipd acl-check または cipd create が失敗する)
  • 症状:cipd acl-check でロールがないと報告されるか、アップロードが認証エラーで中断されます。
  • 対処方法:flutter-cipd-writers ロールへの申請をユーザーに案内してください(MDB/Grants 8h/flutter-cipd-writers 経由)。ロールが付与されたら、再試行する前に cipd auth-login を実行して、ローカルのアクセス認証情報を更新してください。
2. パッケージの解決に失敗する(ダウンロード中に sdkmanager が中断する)
  • 症状:create_cipd_packages.sh が Warning: Failed to find package '<package_name>' を出力して終了します。
  • 対処方法:推測したり、厳密な整数ルール(例:platforms;android-37)を適用したりしないでください。sdkmanager --list --include_obsolete を実行して公開済みのリモートタグを確認し、packages.txt 内のパッケージ文字列を正確に修正してください(例:platforms;android-37.0 のようにプレビューの .0 接尾辞を維持します)。
3. アップロードの中断とタグの非推奨化
  • 症状:ネットワークの中断によって複数プラットフォームのアップロードが途中で停止するか、誤ったパッケージバンドルがアップロードされます。
  • 対処方法:CIPD のアップロードは確定すると上書きできません。タグが一部だけアップロードされた場合や、非推奨化が必要な場合は、タグの削除に関する LuCI Playbook の社内ガイド(重複した CIPD タグの削除)をユーザーに案内してください。失敗後にアップロードを再試行する場合は、必ず新しい一意のバージョンタグを選択してください(例:v1 を v2 に変更します)。
4. コマンドラインツールが見つからない
  • 症状:スクリプトが SDK directory does not contain cmdline-tools を出力します。
  • 対処方法:指定したパスが、cmdline-tools/latest/bin/sdkmanager を含む有効な Android SDK ルートを指していることを確認してください(macOS では通常 ~/Library/Android/sdk です)。

コメント