Android Open Source Project (AOSP) のソースコードは、Googleが管理する GIT リポジトリにあります。
このページでは、どのようにAndroidのソースコードを入手(クローン)するかを3つの手順で示します。
変更履歴を含めた好きなバージョンのプロジェクト一式を取得できます。
こんな方におすすめ
- Androidのプロジェクト一式を入手したい
- Androidのソースコードを入手して解析してみたい
- Androidのソースコード変更履歴を見てみたい
手順①:repo のインストール
repo は Android ソースツリーの GIT リポジトリ群を扱うためのツールです。
※ツールの詳しい使い方はこちらを参照してください。
インストール手順
command
$ mkdir ~/bin
$ export PATH=~/bin:${PATH}
$ curl https://storage.googleapis.com/git-repo-downloads/repo > ~/bin/repo
$ chmod a+x ~/bin/repo
手順②:repo クライアントの初期化
Android の GIT リポジトリを取得するため、
- 作業用ディレクトリ(WORKING_DIRECTORY)の作成
- GIT の初期設定
- repo の初期化
を行います。
command
$ mkdir WORKING_DIRECTORY
$ cd WORKING_DIRECTORY
$ git config --global user.name "Your Name"
$ git config --global user.email "you@example.com"
$ repo init -u https://android.googlesource.com/platform/manifest
master ブランチを取得(クローン)する場合の repo の初期化
特に何も引数を指定せず、初期化します。
command
$ repo init -u https://android.googlesource.com/platform/manifest
特定のブランチやタグを指定して取得(クローン)する場合の repo の初期化
ブランチやタグを指定して取得したい場合は、「-b」オプションを使用します。
存在するブランチやタグの一覧はこちらで確認できます。
command
$ repo init -u https://android.googlesource.com/platform/manifest -b android-8.1.0_r65
or
$ repo init -u https://android.googlesource.com/platform/manifest -b android-10.0.0_r47
など
変更履歴を除外して高速ダウンロード(クローン)する repo の初期化
Android のソースコードは、数十GBありダウンロードに時間がかかります。(半日くらい)
そこで、「--depth 0」のオプションで変更履歴を排除して高速化可能です。
command
$ repo init -u <url> -b <branch> --depth 0
手順③:Android プロジェクトのソースコード取得
先ほど初期化した repo をサーバー側と同期させるとダウンロード(クローン)が始まります。
command
$ repo sync
以下のように「-jX」のオプションを使用すると、GITリポジトリ群を並列で取得するようになります。
「X」は数字で、CPUの物理コア数を入れると適切に高速化(並列実行)されます。
command
$ repo sync -j8
番外偏:プロキシサーバーを使用している場合の設定
プロキシサーバーを利用しているネットワーク環境の場合、以下の設定が必要です。
command
$ export HTTP_PROXY=http://<user>:<password>@<proxy_server>:<port>
$ export HTTPS_PROXY=http://<user>:<password>@<proxy_server>:<port>
番外編:ローカルミラーを作成してダウンロード(クローン)高速化
GITが持っている reference 機能を利用してダウンロード(repo sync)を高速化する方法です。
ミラー側は差分更新、ミラー側からのダウンロード(クローン)はローカルコピーで完結します。
ミラー側の準備
command
$ mkdir -p /usr/local/aosp/mirror
$ cd /usr/local/aosp/mirror
$ repo init -u https://android.googlesource.com/mirror/manifest --mirror
$ repo sync
ミラーを使用してダウンロード(クローン)する
command
$ mkdir -p /usr/local/aosp/master
$ cd /usr/local/aosp/master
$ repo init -u /usr/local/aosp/mirror/platform/manifest.git
$ repo sync
最新のソースツリーに追従する
ミラー側
command
$ cd /usr/local/aosp/mirror
$ repo sync
ローカル側(クローン側)
command
$ cd /usr/local/aosp/master
$ repo sync
参考
- Google Source https://source.android.com/setup/build/downloading