Edited at

AndroidX をソースからビルドする

Jetpack AndroidX (旧サポートライブラリとアーキテクチャー コンポーネント) をソースコードからビルドする方法です。単に 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: {バグ番号} のようにすることで関連付けることができます。

以上。