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>

で変更できる。ソースファイルと別のボリュームを指定するとビルドを高速化できる。

Tags of current page

,