OS

【手順】Androidのソースコードをダウンロード

2020年12月6日

Android Open Source Project (AOSP) のソースコードは、Googleが管理する GIT リポジトリにあります。
このページでは、どのようにAndroidのソースコードを入手(クローン)するかを3つの手順で示します。

 

SANACHAN
SANACHAN
AOSPの開発では、GITリポジトリでソースコードの構成管理を行っており、
変更履歴を含めた好きなバージョンのプロジェクト一式を取得できます。

 

こんな方におすすめ

  • 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

 

SANACHAN
SANACHAN
ダウンロードする repo の実態は、Python で記述されたスクリプトです。

 

手順②:repo クライアントの初期化

Android の GIT リポジトリを取得するため、

  1. 作業用ディレクトリ(WORKING_DIRECTORY)の作成
  2. GIT の初期設定
  3. 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
SANACHAN
SANACHAN
repo initのコマンドは、先述したバージョン指定等のオプションが使えます。

 

最新のソースツリーに追従する

ミラー側

 command
$ cd /usr/local/aosp/mirror
$ repo sync

 

ローカル側(クローン側)

 command
$ cd /usr/local/aosp/master
$ repo sync

 

 

参考

 

こちらの記事もよく読まれています

  • この記事を書いた人
  • 最新記事
SANACHAN

SANACHAN

「生涯一エンジニア」を掲げ、大手グローバル企業でSE/PGとして8年勤め、キャリアアップ転職した現役のエンジニアです。世にあるメジャーな全プログラム言語(コボル除く)を自由に扱えます。一児の父。自分のため、家族のため、日々勉強してます。システムエンジニア、プログラミングに関する情報を蓄積している雑記帳です。

-OS
-, ,