<HOME

AOSPのソースコードを取得する10時間


  1. Android公式サイトに記載されている手順に従って、ソースコードをダウンロードします。

    ここでは参考程度に、「Ubuntu 16.04 LTS」での環境構築手順を記載しておきます。

    1. repoをインストールします。

      repoは、複数のGitプロジェクトを一括管理するツールです。

      AOSPソースコードプロジェクトは、機能ごと・アプリごとにGitプロジェクトが存在し、それらを集めて構成されています。

      そのため、repoを用いて、バージョンを指定して各Gitプロジェクトを一括ダウンロードしたり、タグを付与したりします。

      1. ホームディレクトリに「bin」ディレクトリを作成し、システム環境変数「PATH」に追加します。

        1. Terminalで以下のコマンドを実行して、「bin」ディレクトリを作成します。

          mkdir ~/bin

          「bin」ディレクトリができているかは、以下のコマンドで確認できます。

          ls -la ~/bin

        2. 以下のコマンドを実行して、「.bashrc」ファイルをエディタで開きます。

          gedit ~/.bashrc

          「.bashrc」ファイルの最後に以下の内容を追記し、ファイルを上書き保存してエディタを閉じます。

          PATH=~/bin:$PATH

          「.bashrc」ファイルの更新に成功しているかは、以下のコマンドで確認できます。

          cat ~/.bashrc

        3. 「.bashrc」の変更はTerminal再起動で反映されますが、以下のコマンドで即時反映することができます。

          「.bashrc」を変更したら、このコマンドを実行する癖をつけておきましょう。

          source ~/.bashrc

        4. 環境変数「PATH」の内容は、以下のコマンドで確認できます。

          echo ${PATH}

          「~」は「/home/<ユーザー名>」と同一なので、環境変数PATHへの追加に成功していることが確認できます。

      2. 以下のコマンドを実行して、repoをインストールします。

        curl https://storage.googleapis.com/git-repo-downloads/repo > ~/bin/repo

      3. repoをプログラムとして実行できるように、以下のコマンドでrepoに実行権限を付与します。

        chmod a+x ~/bin/repo

        repoへの実行権限付与に成功しているかは以下のコマンドで確認できます。

        ls -la ~/bin/repo

    2. Gitを利用してソースコードを取得するので、Gitの初期設定を行います。

      1. 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

    3. repoを利用してAOSPソースコードを取得します。

      ただし、ソースコードを複数パターン置いておきたいケースを鑑みて、後述のローカルにミラー環境を作る方法をお勧めします。

      (その方法を実施する場合、この項の作業は割愛していただいて問題ありません)

      1. 今回は「~/android/src」の下にソースコードを取得してみます。ディレクトリ作成し、カレントディレクトリを変更します。

        mkdir -p ~/android/src

        cd ~/android/src

      2. ダウンロードの準備として「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

        なお、指定できるタグ・ブランチ名は以下を参考にしてください。

      3. 「repo sync」を行うとサーバーと同期がとられ、ソースコードのダウンロードが開始されます。

        repo sync

        マシン性能やネットワーク等の環境にも依りますが、軽く10時間以上かかります。根気よく頑張ってください。

        放置しておいて他の作業をされるのが良いです。

        たまにいつまで経っても終わらないことがあります。

        その場合はCtrl+Cで中断してやり直したり、Android開発向けに設定を変更したりしてみてください。

        (ただし、sync中のCtrl+Cの中断は、運が悪いとダウンロード済みの状態が壊れてしまう可能性があるので、あまり多用はしないことをお勧めします)

        「-j」オプションをつけると、並行でジョブ実行することができます。

        ただし、ネットワークへの影響があるため、環境に合わせて利用してください。

        AOSPソースコードのダウンロード時には、job4にするのが一般的なようです。

        repo sync -j4

        なお、「-j」をつけなくても、デフォルトでjob4になっているようです。

  2. ただ、AOSPソースコードは、Androidバージョン別に複数持っておきたいことがあると思います。

    そのたびに上記の方法で公式サーバーからダウンロードすると時間がかかってしょうがないので、ローカルにミラー環境を作ることをお勧めします。

    構築手順はAndroid公式サイトにも記載されています。

    ここでは参考程度に、「Ubuntu 16.04 LTS」での環境構築手順を記載しておきます。

    1. ミラー環境を作成します。

      1. 今回は「~/android/mirror」の下にミラー環境を構築してみます。ディレクトリ作成し、カレントディレクトリを変更します。

        mkdir -p ~/android/mirror

        cd ~/android/mirror

      2. ミラー用の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近く占有していました。)

    2. ミラー環境からソースコードを取得します。

      1. 今回は「~/android/src2」の下に、「android-7.0.0_r1」のソースコードを取得してみます。ディレクトリ作成し、カレントディレクトリを変更します。

        mkdir -p ~/android/src2/android-7.0.0_r1

        cd ~/android/src2/android-7.0.0_r1

        なお、指定できるタグ・ブランチ名は以下を参考にしてください。

      2. URLにミラー環境を指定し、ブランチ名に「android-7.0.0_r1」を指定して、「repo init」を行います。

        repo init -u ~/android/mirror/platform/manifest.git/ -b android-7.0.0_r1

      3. 「repo sync」を行うとミラー環境からソースコードの取得が開始されます。

        repo sync

        サーバーからの取得に比べるとかなり早く完了するはずです。

    3. これでミラー環境からソースコード取得できるようになりましたが、ミラー環境は取得した時点の状態になっているので、

      AOSP公式サーバーが更新された場合はミラー環境をsyncしないと、更新内容が反映されません。

      ミラー環境は定期的にsyncしましょう。

      cd ~/android/mirror

      repo sync