updating-android-sdk について
Flutter リポジトリ向けに、packages.txt へ Android SDK コンポーネントを追加し、各プラットフォーム用アーカイブを CIPD に公開するスキルです。パッケージ ID、タグの一意性、権限、アップロード確認を扱います。
主な機能
- 01packages.txt での SDK パッケージ設定
- 02公式パッケージ ID の確認
- 03CIPD タグの一意性確認
- 04クロスプラットフォーム SDK アーカイブのアップロード
- 05アップロード済みパッケージタグの確認
活用シーン
- 01新しい Android プラットフォーム SDK の追加
- 02SDK アーカイブの CIPD への公開
- 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 アップロードを開始したりする前に、ローカル環境と認証情報が正しく設定されていることを確認してください。
- Depot Tools の確認:
cipdCLI を提供するdepot_toolsが環境で利用できることを確認します。 - CIPD 書き込み権限の確認:この操作には、CIPD プレフィックス
flutter/android/sdk/all/への書き込みアクセスが必要です。作業を進める前にアクセス権を確認してください。
アクセスが拒否された場合は、ユーザーにcipd acl-check flutter/android/sdk/all/ -writerflutter-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>
スクリプトの実行方法
- クリーンなワークスペース:スクリプトは、キャッシュの再利用を防ぐため、初期状態の一時作業ディレクトリ(
mktemp -d)を作成します。 - クロスプラットフォームのバンドル:
REPO_OS_OVERRIDEを利用して、linux、macosx(amd64とarm64)、windows向けのパッケージを取得します。 - ライセンスの承諾:必要な Android SDK ライセンスはすべて自動的に承諾され、アップロードディレクトリにパッケージ化されます。
- 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/Grants8h/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です)。