Ubuntu 12.04 に Android をビルドする環境を準備する
Ubuntu 12.04 amd64 に Android をビルドする環境を整えた。 http://source.android.com/source/initializing.html の通りに行った。
Java のインストール
Android のコンパイルには Java 6 が必要なのだが、 PPA には Java 6 のリポジトリが見当たらなかった。 https://github.com/flexiondotorg/oab-java6 を使って、ローカルに java のパッケージのリポジトリを作成してインストールする。 https://github.com/flexiondotorg/oab-java6/raw/0.2.4/oab-java.sh を取得して
./oab-java.sh
とするだけでよい。
リポジトリは /var/local/oab/ 以下に作成され、 /etc/apt/sources.list.d/oab.list にそのリポジトリを使う設定が追加される。
apt-get install sun-java6-jre sun-java6-jdk
で java をインストールする。
Java 7 をインストールしたい場合は、
./oab-java.sh -7
apt-get install oracle-java7-jre oracle-java7-jdk
とする。
必要なパッケージのインストール
apt-get install git gnupg flex bison gperf build-essential \
zip curl libc6-dev libncurses5-dev:i386 x11proto-core-dev \
libx11-dev:i386 libreadline6-dev:i386 libgl1-mesa-glx:i386 \
libgl1-mesa-dev g++-multilib mingw32 openjdk-6-jdk tofrodos \
python-markdown libxml2-utils xsltproc zlib1g-dev:i386
あと
ln -s /usr/lib/i386-linux-gnu/mesa/libGL.so.1 /usr/lib/i386-linux-gnu/libGL.so
とする。
USB Access の設定
次のような /etc/udev/rules.d/51-android.rules を作成する。 <username> は使用するユーザ名に変更する。
# adb protocol on passion (Nexus One)
SUBSYSTEM=="usb", ATTR{idVendor}=="18d1", ATTR{idProduct}=="4e12", MODE="0600", OWNER="<username>"
# fastboot protocol on passion (Nexus One)
SUBSYSTEM=="usb", ATTR{idVendor}=="0bb4", ATTR{idProduct}=="0fff", MODE="0600", OWNER="<username>"
# adb protocol on crespo/crespo4g (Nexus S)
SUBSYSTEM=="usb", ATTR{idVendor}=="18d1", ATTR{idProduct}=="4e22", MODE="0600", OWNER="<username>"
# fastboot protocol on crespo/crespo4g (Nexus S)
SUBSYSTEM=="usb", ATTR{idVendor}=="18d1", ATTR{idProduct}=="4e20", MODE="0600", OWNER="<username>"
# adb protocol on stingray/wingray (Xoom)
SUBSYSTEM=="usb", ATTR{idVendor}=="22b8", ATTR{idProduct}=="70a9", MODE="0600", OWNER="<username>"
# fastboot protocol on stingray/wingray (Xoom)
SUBSYSTEM=="usb", ATTR{idVendor}=="18d1", ATTR{idProduct}=="708c", MODE="0600", OWNER="<username>"
# adb protocol on maguro/toro (Galaxy Nexus)
SUBSYSTEM=="usb", ATTR{idVendor}=="04e8", ATTR{idProduct}=="6860", MODE="0600", OWNER="<username>"
# fastboot protocol on maguro/toro (Galaxy Nexus)
SUBSYSTEM=="usb", ATTR{idVendor}=="18d1", ATTR{idProduct}=="4e30", MODE="0600", OWNER="<username>"
# adb protocol on panda (PandaBoard)
SUBSYSTEM=="usb", ATTR{idVendor}=="0451", ATTR{idProduct}=="d101", MODE="0600", OWNER="<username>"
# fastboot protocol on panda (PandaBoard)
SUBSYSTEM=="usb", ATTR{idVendor}=="0451", ATTR{idProduct}=="d022", MODE="0600", OWNER="<username>"
# usbboot protocol on panda (PandaBoard)
SUBSYSTEM=="usb", ATTR{idVendor}=="0451", ATTR{idProduct}=="d00f", MODE="0600", OWNER="<username>"
# usbboot protocol on panda (PandaBoard ES)
SUBSYSTEM=="usb", ATTR{idVendor}=="0451", ATTR{idProduct}=="d010", MODE="0600", OWNER="<username>"
環境変数など
ccache
ビルドに ccache を使うには
export USE_CCACHE=1
として環境変数を設定する。
キャッシュは ~/.ccache に保存されるが、
export CCACHE_DIR=<path-to-your-cache-directory>
でディレクトリを変更できる。
ソースコードをダウンロードした後に
prebuilt/linux-x86/ccache/ccache -M 50G
としてキャッシュサイズを設定する。
出力ディレクトリ
標準では out サブディレクトリにビルドの出力が保存される。
export OUT_DIR_COMMON_BASE=<path-to-your-out-directory>
で変更できる。ソースファイルと別のボリュームを指定するとビルドを高速化できる。