ごりぽんソフトウェア

2013-01-27

CyanogenModのビルド環境を整える・改

ビルド環境構築の際に試行錯誤を繰り返したって話はしましたが、その際に何回もUbuntuのインストールからやりなおしたんで、同じ手順を何回も繰り返すことになって大変でした。

そうそう繰り返すことがある話じゃないですが、いつものノリで「面倒だからシェルスクリプトにまとめるか」ってことで作ってみたのでエントリ。まさかの「お手軽ビルド環境構築シェルスクリプト」です。

ということで、シェルスクリプトの内容は以下の通り。Ubuntu 12.04.1 LTSの64bit版向けですので他のディストリビューションや他のバージョンでは使えません。それと、USBデバイスの対応がP-01Dだけですので、他のAndroid端末ではそのままでは基本的に使えません。解る人はアレンジしちゃってください。

また、いつものように無保証です。一応、実PC上とVirtualBox上の仮想環境で試していますので大丈夫だと思いますが、環境構築が失敗したとしても恨まないでください(苦笑)。

#!/bin/bash
cd ~
(cat << EOF) >> .bashrc

# for Build Android OS
export PATH=\$PATH:~/Development/bin:~/Development/android-sdk-linux/tools:~/Development/android-sdk-linux/platform-tools
export USE_CCACHE=1
export CCACHE_DIR=~/Development/CCACHE
EOF
(cat << EOF) > 51-android.rules
SUBSYSTEM=="usb", ATTRS{idVendor}=="04da", MODE="0666", GROUP="plugdev"
SUBSYSTEM=="usb", ATTRS{idVendor}=="05c6", MODE="0666", GROUP="plugdev"
EOF
sudo mv 51-android.rules /etc/udev/rules.d/
sudo chmod a+r /etc/udev/rules.d/51-android.rules
sudo apt-get -y install git-core 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 tofrodos \
python-markdown libxml2-utils xsltproc zlib1g-dev:i386 \
schedtool optipng pngcrush
sudo apt-get -y autoremove
sudo ln -s /usr/lib/i386-linux-gnu/mesa/libGL.so.1 /usr/lib/i386-linux-gnu/libGL.so
mkdir -p ~/Development/bin; cd ~/Development/bin
curl -O https://dl-ssl.google.com/dl/googlesource/git-repo/repo
chmod a+x repo
mkdir ~/tmp; cd ~/tmp
git clone https://github.com/flexiondotorg/oab-java6.git
sudo ./oab-java6/oab-java.sh
cd ~; rm -rf ~/tmp
sudo apt-get -y install sun-java6-plugin sun-java6-jre sun-java6-bin sun-java6-jdk
cd ~/Development
curl -o sdk.tgz http://dl.google.com/android/android-sdk_r21.0.1-linux.tgz
tar -xvzof sdk.tgz
rm sdk.tgz
cd ~/Development/android-sdk-linux/tools
./android

前回の手順通りにUbuntu 12.04.1 LTSの64bit版をインストールしてアップデートマネージャーでアップデートを掛けた後、上記の内容をinstall-build-env.shというファイル名で保存*1し、実行属性をつけて端末アプリから実行すれば、あとはほぼ自動で環境構築が行われます。アップデートを忘れるとエラー山盛りになりますのでご注意を。

最後にAndroid SDKのSDKマネージャーが起動するので、必要なファイル*2をダウンロードしておしまいです。終わったら一応、PCを再起動しておきましょう。インストールが正常に終わっていて再起動も済ませていれば、端末アプリからadbコマンド、javaコマンド、repoコマンドが実行できるようになっているはずです。念のため確認してみてください。ついでにP−01Dを繋いでadb devicesコマンドでデバイスが表示されるかも確認を。

途中1回だけ(のはず)、sudoコマンドがパスワードを要求して来ますので、インストール時に決めたパスワードを入力します。パスワードを入力する関係で、端末アプリから実行しないと正常に動作しません。ホームフォルダーアプリから実行する場合は、ファイルをダブルクリック→[端末内で実行する(T)]で実行するようにしてください。

ハードディスク容量に余裕があるなら、最後の行を

./android update sdk -u

とすれば、sudoのパスワード入力以外は完全に自動化できますが、Android SDKをフルセットでダウンロードしてくる関係で、ハードディスク容量を7GBほど余計に使いますし、時間もかなり掛かります。

また、Android SDKのアーカイブファイルのURL(最後から数えて5行目のcurlコマンドの行)は、Android SDKのバージョンが更新されると変化しますので、適宜変更してください。ここのURLも自動取得にしようと思えば出来なくはないんですが、さすがに手間が掛かり過ぎるので手抜きしてます。

ちなみに上記内容のファイルをウチのWEBページにアップロードしてありますので、実は端末エミュレータから

cd ~
wget http://www.zob.jp/~goripon/android/p01d/install-build-env.sh
chmod a+x install-build-env.sh
./install-build-env.sh

と4行入力すれば、シェルスクリプトをダウンロードして環境構築を始められます。ただし、内容の更新は保証できないので、Android SDKのバージョンが上がったら動かなくなるかもしれません。念のため、wgetした後にテキストエディタで内容を確認し、必要があれば修正するようにしてください。

基本的に1回しか実行しないという前提で組まれていますので、複数回の実行はしないでください。使用後はシェルスクリプトの削除を推奨です。もし、何らかの事情で実行が失敗し、再実行する必要がある場合は、ホームディレクトリの.bashrcファイルの末尾に追記されている内容を削除したうえで行なってください。他はそのままで大丈夫なはず。

これでAndroidをビルドしてみる人が増えたら面白いですね。Cyanogenmod for P-01Dへの加勢もちょっと期待してます。

*1:Ubuntu上でこのページを表示し、テキストエディタを起動して直接コピペするのが面倒が無いです。

*2:Cyanogemod for P-01Dをビルドするなら、[Android 4.0.3 (API 15)]と[Tools]の2項目。