<HOME
AOSPのソースコードを取得する
10時間
Android公式サイト
に記載されている手順に従って、ソースコードをダウンロードします。
ここでは参考程度に、「Ubuntu 16.04 LTS」での環境構築手順を記載しておきます。
repoをインストールします。
repoは、複数のGitプロジェクトを一括管理するツールです。
AOSPソースコードプロジェクトは、機能ごと・アプリごとにGitプロジェクトが存在し、それらを集めて構成されています。
そのため、repoを用いて、バージョンを指定して各Gitプロジェクトを一括ダウンロードしたり、タグを付与したりします。
ホームディレクトリに「bin」ディレクトリを作成し、システム環境変数「PATH」に追加します。
Terminalで以下のコマンドを実行して、「bin」ディレクトリを作成します。
mkdir ~/bin
「bin」ディレクトリができているかは、以下のコマンドで確認できます。
ls -la ~/bin
以下のコマンドを実行して、「.bashrc」ファイルをエディタで開きます。
gedit ~/.bashrc
「.bashrc」ファイルの最後に以下の内容を追記し、ファイルを上書き保存してエディタを閉じます。
PATH=~/bin:$PATH
「.bashrc」ファイルの更新に成功しているかは、以下のコマンドで確認できます。
cat ~/.bashrc
「.bashrc」の変更はTerminal再起動で反映されますが、以下のコマンドで即時反映することができます。
「.bashrc」を変更したら、このコマンドを実行する癖をつけておきましょう。
source ~/.bashrc
環境変数「PATH」の内容は、以下のコマンドで確認できます。
echo ${PATH}
「~」は「/home/<ユーザー名>」と同一なので、環境変数PATHへの追加に成功していることが確認できます。
以下のコマンドを実行して、repoをインストールします。
curl https://storage.googleapis.com/git-repo-downloads/repo > ~/bin/repo
repoをプログラムとして実行できるように、以下のコマンドでrepoに実行権限を付与します。
chmod a+x ~/bin/repo
repoへの実行権限付与に成功しているかは以下のコマンドで確認できます。
ls -la ~/bin/repo
Gitを利用してソースコードを取得するので、Gitの初期設定を行います。
Terminalで以下のコマンドを実行して、Git使用時のユーザー名とメールアドレスを設定します。
git config --global user.name "<あなたの名前> <あなたの姓>"
git config --global user.email "<あなたのメールアドレス>"
git config --global user.name "Taro Yamada"
git config --global user.email "you@example.com"
以下のコマンドで設定されている値を確認できます。
git config -l
repoを利用してAOSPソースコードを取得します。
ただし、ソースコードを複数パターン置いておきたいケースを鑑みて、後述のローカルにミラー環境を作る方法をお勧めします。
(その方法を実施する場合、この項の作業は割愛していただいて問題ありません)
今回は「~/android/src」の下にソースコードを取得してみます。ディレクトリ作成し、カレントディレクトリを変更します。
mkdir -p ~/android/src
cd ~/android/src
ダウンロードの準備として「repo init」を行います。
repo init -u https://android.googlesource.com/platform/manifest
特定のバージョンを指定してソースコードを取得したい場合、「-b」オプションでタグ名やブランチ名を指定します。
repo init -u https://android.googlesource.com/platform/manifest -b <ブランチ名>
repo init -u https://android.googlesource.com/platform/manifest -b android-7.0.0_r1
なお、指定できるタグ・ブランチ名は以下を参考にしてください。
Codenames, Tags, and Build Numbers
AOSP gitweb - platform/manifest - refs
「repo sync」を行うとサーバーと同期がとられ、ソースコードのダウンロードが開始されます。
repo sync
マシン性能やネットワーク等の環境にも依りますが、軽く10時間以上かかります。根気よく頑張ってください。
放置しておいて他の作業をされるのが良いです。
たまにいつまで経っても終わらないことがあります。
その場合はCtrl+Cで中断してやり直したり、
Android開発向けに設定を変更
したりしてみてください。
(ただし、sync中のCtrl+Cの中断は、運が悪いとダウンロード済みの状態が壊れてしまう可能性があるので、あまり多用はしないことをお勧めします)
「-j」オプションをつけると、並行でジョブ実行することができます。
ただし、ネットワークへの影響があるため、環境に合わせて利用してください。
AOSPソースコードのダウンロード時には、job4にするのが一般的なようです。
repo sync -j4
なお、「-j」をつけなくても、デフォルトでjob4になっているようです。
ただ、AOSPソースコードは、Androidバージョン別に複数持っておきたいことがあると思います。
そのたびに上記の方法で公式サーバーからダウンロードすると時間がかかってしょうがないので、ローカルにミラー環境を作ることをお勧めします。
構築手順は
Android公式サイト
にも記載されています。
ここでは参考程度に、「Ubuntu 16.04 LTS」での環境構築手順を記載しておきます。
ミラー環境を作成します。
今回は「~/android/mirror」の下にミラー環境を構築してみます。ディレクトリ作成し、カレントディレクトリを変更します。
mkdir -p ~/android/mirror
cd ~/android/mirror
ミラー用のURLを指定し、「--mirror」オプションをつけて「repo init」を行い、サーバーとsyncします。
repo init -u https://android.googlesource.com/mirror/manifest --mirror
repo sync
マシン性能やネットワーク等の環境にも依りますが、軽く10時間以上かかります。根気よく頑張ってください。
放置しておいて他の作業をされるのが良いです。
たまにいつまで経っても終わらないことがあります。
その場合はCtrl+Cで中断してやり直したり、
Android開発向けに設定を変更
したりしてみてください。
(ただし、sync中のCtrl+Cの中断は、運が悪いとダウンロード済みの状態が壊れてしまう可能性があるので、あまり多用はしないことをお勧めします)
(↑の1つめの画像でエラーが出ているのは、途中でディスク空き容量がなくなったためです…。ミラー環境だけで200GB近く占有していました。)
ミラー環境からソースコードを取得します。
今回は「~/android/src2」の下に、「android-7.0.0_r1」のソースコードを取得してみます。ディレクトリ作成し、カレントディレクトリを変更します。
mkdir -p ~/android/src2/android-7.0.0_r1
cd ~/android/src2/android-7.0.0_r1
なお、指定できるタグ・ブランチ名は以下を参考にしてください。
Codenames, Tags, and Build Numbers
AOSP gitweb - platform/manifest - refs
URLにミラー環境を指定し、ブランチ名に「android-7.0.0_r1」を指定して、「repo init」を行います。
repo init -u ~/android/mirror/platform/manifest.git/ -b android-7.0.0_r1
「repo sync」を行うとミラー環境からソースコードの取得が開始されます。
repo sync
サーバーからの取得に比べるとかなり早く完了するはずです。
これでミラー環境からソースコード取得できるようになりましたが、ミラー環境は取得した時点の状態になっているので、
AOSP公式サーバーが更新された場合はミラー環境をsyncしないと、更新内容が反映されません。
ミラー環境は定期的にsyncしましょう。
cd ~/android/mirror
repo sync