Jetpack AndroidX (旧サポートライブラリとアーキテクチャー コンポーネント) をソースコードからビルドする方法です。単に AndroidX を利用する場合は [公式ドキュメント] (https://developer.android.com/jetpack/androidx) を参照してください。
Jetpack Compose を試すためには、現状 AOSP からソースコードを取得してビルドする必要があります。以下の手順に沿ってプロジェクトを開けばデモ アプリを実行したり、自分でコードを追加して試したりすることができます。
リポジトリをダウンロードする
AOSP からソースコードをダウンロードするには Repo というツールを使います。Repo は複数の Git リポジトリをまとめ、全体で一つの Repo リポジトリとして扱うためのツールです。Repo コマンドをインストールしましょう。
$ mkdir ~/bin
$ PATH=~/bin:$PATH
$ curl https://storage.googleapis.com/git-repo-downloads/repo > ~/bin/repo
$ chmod a+x ~/bin/repo
AOSP には AndroidX のビルド・開発に必要な Git リポジトリだけをまとめた Repo ブランチ androidx-master-dev
が存在します。ソースコードは以下のようにして取得できます。
$ mkdir androidx-master-dev && cd androidx-master-dev
$ repo init -u https://android.googlesource.com/platform/manifest \
-b androidx-master-dev
$ repo sync -c -j9
プロジェクトを開く
AndroidX の開発は Android Studio で行っています。開発者全員の Studio のバージョンを揃えるためのスクリプトが用意されているので、それを使って Android Studio を起動しましょう。
$ cd androidx-master-dev/frameworks/support
$ ./studiow
Jetpack Compose のプロジェクトを開くには、他のコンポーネントとは別の特殊な Android Studio が必要です。同じ名前のスクリプトが ui ディレクトリに含まれているので、そちらを実行しましょう。
$ cd androidx-master-dev/frameworks/support/ui
$ ./studiow
デモ プロジェクトを実行する
AndroidX のプロジェクトにはいくつかのデモ アプリが含まれています。これらは主に内部の開発者のデバッグ・テスト用ですが、API の使い方の参考にはなるでしょう。いずれも Android Studio から実行できます。
- support-v4-demos
- support-v7-demos
- support-transition-demos
- support-emoji-demos
- など
ビルドは Android Studio からもできます。コマンドラインで Gradle を使ってもビルドできます。
# ビルド
$ ./gradlew assembleDebug
# テスト
$ ./gradlew support-transition:connectedCheck
コントリビュートする
コントリビュートする前に イシュー トラッカー に不具合報告や機能要望を登録するのがいいでしょう。
GitHub で言うところのプル リクエストは、AOSP では CL (Change list) と呼ばれます。以下のようにして CL を送ることができます。
$ cd frameworks/support
# トピック ブランチを作る
$ repo start my-change .
# ファイル編集、デバッグ、テスト
# コミットは git コマンドで
$ git add .
$ git commit
# Gerrit にアップロード
$ repo upload .
# レビューでコメントがついたら、適宜修正してアップロードし直す
$ git add .
$ git commit --amend
$ repo upload .
コミット メッセージには自動で Change-Id: 〜
という行が付きます。この行を変更してはいけません。また、どのテストを実行したかを示す Test: {テスト クラス名など}
を Change-Id の上の行に追加してください。イシュー トラッカーにバグが登録されている場合 Bug: {バグ番号}
のようにすることで関連付けることができます。
以上。