Android 3.2 SDK をMac(OS X 10.7 Lion)でビルドする手順
備忘録エントリ。
Android 3.2のSDKをLionでビルドしたので手順をメモしておく。
基本的には、公式ドキュメントの以下の手順に従えばよい。
手順ではSnow Leopard使えとか、MacPorts使うようになっているが、その辺りは変えている。
http://source.android.com/source/initializing.html
http://source.android.com/source/downloading.html
http://source.android.com/source/building.html
1.Xcode 3のインストール
Mac Dev CenterよりXcode 3をダウンロードする。無料だがアカウント登録が必要。
取得したバージョンは、xcode_3.2.6_and_ios_sdk_4.3だった。
最新版のXcode 4はApp Storeにあるが、Xcode 4の環境の場合、make時に以下のようなエラーでビルドに失敗してしまうためXcode 3を使用する。*1
Please install the 10.5 SDK on this machine at /Developer/SDKs/MacOSX10.5.sdk
external/qemu/Makefile.android:81: *** Aborting the build.. Stop.
Xcode 3のインストールだが、Xcode 3をダウンロードしてそのままFinderからmpkgを実行しても、Lionの場合、Xcode Toolsetがスキップになってしまいインストールできないので、以下のようにする必要がある。
export COMMAND_LINE_INSTALL=1 open /Volumes/Xcode\ and\ iOS\ SDK/Xcode\ and\ iOS\ SDK.mpkg
インストーラが起動するので、インストールの種類で
iOS SDK以外がすべてチェックされている状態にして*2インストールする。
2.ディスクイメージの作成、マウント
大文字小文字を区別するファイルシステムが必要になるため、ディスクイメージを作成する。
アプリケーション > ユーティリティ > ディスクユーティリティを起動し、新規イメージを作成する。
内容は以下の通りとする。
名前 | android(任意) |
場所 | ホームディレクトリ(任意) |
ボリューム名 | android(任意) |
ボリュームサイズ | 公式ドキュメントの記載は25GB以上だが、Android 3.2のSDKのビルドのみであれば20GB以上で足りた。 |
ボリュームフォーマット | Mac OS拡張(大文字/小文字を区別、ジャーナリング) |
暗号化 | なし |
パーティション | 単一パーティション - Appleパーティションマップ |
イメージフォーマット | 読み出し/書き込みディスクイメージ |
作成後、マウントする。
sudo hdiutil attach ~/android.dmg -mountpoint /Volumes/android
3.gitのインストール
http://code.google.com/p/git-osx-installer/downloads/list?can=3
からインストーラをダウンロードして、インストールする。
4.Homebrewのインストール
公式ドキュメントでは、MacPortsが使われているが、今はHomebrewの方が流行っていると思うので、Homebrewを使用した。インストール方法は以下の通り。
ruby -e "$(curl -fsSLk https://gist.github.com/raw/323731/install_homebrew.rb)"
5.gnupgのインストール
brew install gnupg
6.repoのインストール
mkdir ~/bin PATH=~/bin:$PATH curl https://dl-ssl.google.com/dl/googlesource/git-repo/repo > ~/bin/repo chmod a+x ~/bin/repo
8.ソースコードの取得
cd /Volumes/android mkdir src cd src repo init -u https://android.googlesource.com/platform/manifest -b master -m base-for-3.2-gpl.xml
※最新のバージョンを取得する場合は、
repo init -u https://android.googlesource.com/platform/manifest
とする。特定のバージョンを取得する場合は
repo init -u https://android.googlesource.com/platform/manifest -b android-4.0.1_r1
のようにタグを指定する。*3
ただし、Honeycombのみマニフェストファイルが異なるため、上記のように、-mでマニフェストファイルを指定する必要がある。
なお、マニフェストファイルは/Volumes/android/src/.repo/manifests/に格納される。
repo init実行後は、対象バージョンのソースコードの取得を行う。
repo sync
大量(10GB以上)にダウンロードされるため、回線速度によっては非常に時間がかかる。
9.SDKのビルド
. build/envsetup.sh lunch sdk-eng make -j4 sdk
※4はマシンのCPUコア/スレッド数に合わせる。
ビルドが終わると、以下にSDKのZIPアーカイブが出力されている。
/Volumes/android/src/out/host/darwin-x86/sdk/android-sdk_eng.ユーザ名_mac-x86.zip
なお、各種SDKのjarファイルは、/Volumes/android/src/out/target/common/obj/JAVA_LIBRARIES 以下に出力されている。
*1:Xcode 4を先にインストールしていたため、Xcode 3と4のインストール先ディレクトリを、それぞれ/Developer3と/Developerとして共存させた上で、/Developer3/SDKs/MacOSX10.4u.sdkと/Developer3/SDKs/MacOSX10.5.sdkを/Developerへシンボリックリンクをはり、さらにexport CC=/Developer3/usr/bin/llvm-gcc-4.2としてビルドを試みたが、同じエラーになったため、諦めてXcode 3と4をアンインストール後、Xcode 3のみを再インストールした。
*2:iOS SDKが不要だったため。iOS関連の開発を行う場合はiOS SDKにもチェックすればよい。
*3:2012/1/15 追記。-b android-sdk-4.0.3_r1で取得したソースコードを上記と同じ手順でビルドしようとしてもエラーになってmakeできませんでした。