Androidのソースコードを入手する


Androidはオープンソースライセンスのソフトウェアです。
ソースコードが公開されているため、誰でも自由に入手し、自由にカスタマイズすることができます。

評価ボード上でAndroidを動作させたいという組み込み用途のほかにも、アプリケーションを開発する上でAPIの実装がどうなっているのか知りたいといった場合にもソースコードを自由に取得できることは非常に有用です。

今回と次回の2回に渡ってAndroidのソースコードの取得方法とビルド方法について説明します。

環境構築

Androidのソースコードの取得に環境の指定は特にありませんが、
取得したソースコードをビルドしたい場合にはUbuntu 10.04 64bit版が必要になりますので、今回もUbuntu 10.04 64bit版を前提にした説明をします。
※現在、64bit環境を要求されるのはAndroid 2.3のソースコードをビルドする場合に限ります。Android 2.3以前のソースコードをビルドする場合は必ずしも64bit環境は必要ではありません。

GitサーバとRepoコマンド
Androidのソースコードの取得にはRepoと呼ばれるツールを利用します。
Androidのソースコードは複数のGitサーバによって管理されていますが、
Repoは複数のGitサーバの情報を取り纏めることで効率的にAndroidのソースコードに
アクセスする機能を提供しています。

インストール
Gitのインストールには以下のコマンドを実行します。

# sudo apt-get install git-core

次にRepoをインストールします。
ホームディレクトリにrepoコマンドダウンロード用のディレクトリを作成し、
そこにrepoコマンドをダウンロードします。
また、忘れずにパスも通しておきましょう。

# mkdir ~/bin
# sudo apt-get install curl
# curl http://android.git.kernel.org/repo > ~/bin/repo
# chmod 755 ~/bin/repo
# export PATH=$PATH:~/bin

ソースコードのダウンロード

では実際にrepoコマンドを使ってソースコードをダウンロードしてみます。
まず、ソースコードをダウンロードしたいディレクトリを作成して、そのディレクトリに移動します。

# mkdir ~/mydroid
# cd ~/mydroid

次にrepoコマンドの初期化を行います。

# repo init -u git://android.git.kernel.org/platform/manifest.git

repoコマンドの初期化時には以下のように名前とユーザ名を求められますので入力します。

Your Name  [Android User]: Android User
Your Email [androiduser@ubuntu.(none)]: androiduser@hogehoge.com

なお、repoコマンドの初期化時に取得したいAndroidソースコードのブランチを指定することができます。
たとえばgingerbreadのソースコードを取得したい場合は以下のようにします。

# repo init -u git://android.git.kernel.org/platform/manifest.git -b gingerbread

初期化が完了したらソースコードをダウンロードします。
ソースコードのダウンロードには非常に時間がかかりますのでご注意下さい。

# repo sync

ディレクトリの構成

ダウンロードしたAndroidのソースコードのディレクトリ構成は以下のようになっています。
APIの調査などの参考にして下さい。

bionic/ Android用にカスタマイズされたCライブラリ群
bootable/ ブートローダーリファレンスコード
build/ ビルド用のMakefile、シェルスクリプト
cts/ Android用テストスイート
dalvik/ 仮想マシンDalvik
development/ SDKやNDKなどの開発ツール
external/ jpegなどAndroid以外のオープンソースソフトウェア
frameworks/ Androidフレームワーク
packages/ Androidアプリケーションとサービス
prebuilt/ ビルドに必要な各種バイナリファイル
sdk/ 開発ツール
system/ Bluetoothのソースコードや、デバッグツールなど

まとめ

ここまで説明したように、Androidのソースコードは少しの環境構築で簡単に取得することができます。
しかし、取得したソースコードをビルドして実際に動作させたい場合にはもう少し準備が必要になります。
次回はソースコードのビルド手順について説明したいと思います。

4 Comments