EC2のAmazon Linux上でビルドする。おそらくUbuntuでやる方が多数派である。
■準備
curl http://repo.us-east-1.amazonaws.com/latest/main/mirror.list sudo vim /etc/yum.repos.d/amzn-main-32.repo
glibc-develの32bit版が必要になるので、以下のようにしてリポジトリを追加する必要がある。
[amzn-main-32] name=amzn-main-Base-32 baseurl=http://packages.us-east-1.amazonaws.com/2012.09/main/201209eb6a01/i386 metadata_expire=300 priority=1 failovermethod=priority fastestmirror_enabled=0 gpgcheck=1 gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-amazon-ga enabled=1
必要なパッケージをインストールする。その他は適宜。
sudo yum install make git bison libxslt flex gperf gcc-c++ glibc-devel zlib-devel
OpenJDKが邪魔なので一旦消す。
sudo yum remove java-1.6.0-openjdk
OpenJDKでビルドしようとすると以下のようにエラーがでる。
Checking build tools versions... ************************************************************ You are attempting to build with an unsupported JDK. You use OpenJDK but only Sun/Oracle JDK is supported. Please follow the machine setup instructions at https://source.android.com/source/download.html ************************************************************
oracleのサイトに行って、JDK6をダウンロードしてインストールする。かなり省略するが、以下の様な感じにPATHを通せば良い。
PATH=$PATH:$HOME/jdk1.6.0_39/bin JAVA_HOME=$HOME/jdk1.6.0_39 export JAVA_HOME
oracleアカウントが必要になってかなりイライラさせられるが、ダウンロードの準備をする。
mkdir ~/bin PATH=~/bin:$PATH curl https://dl-ssl.google.com/dl/googlesource/git-repo/repo > ~/bin/repo chmod a+x ~/bin/repo mkdir android cd android repo init -u https://android.googlesource.com/platform/manifest repo init -u https://android.googlesource.com/platform/manifest -b android-4.0.1_r1
■ダウンロード
以下のコマンドでダウンロードする。恐らく1時間以上かかる。
repo sync
■ビルド
largeでも4時間以上かかるらしいのでそれよりも大きいインスタンスを選択する事を勧める。
make
ちなみにOpenWnnをビルドしたかったので以下のように実行した。smallインスタンスでも1時間以上かかるのでlarge以上にするのが良い。
make OpenWnn
共有ライブラリは以下のパスに生成される。
out/target/product/generic/obj/lib/libwnndict.so out/target/product/generic/obj/lib/libWnnJpnDic.so out/target/product/generic/obj/lib/libWnnEngDic.so
OpenWnnのソースの取得
リモートのソースをそのまま持ってきても問題ないのだが、OpenWnnのソースの取得だけだったら、以下のコマンドですぐに終わる。
git clone https://android.googlesource.com/platform/packages/inputmethods/OpenWnn.git
マスターは多分ビルドできないと思うので適切なブランチに切り替える。
git checkout -b ics-mr1-release origin/ics-mr1-release
以下のコマンドを実行してリモートの共有ライブラリをローカルに配置する。
cd OpenWnn/libs/ mkdir armeabi cd armeabi scp -i your_key.pem user@host:/home/user/android/out/target/product/generic/obj/lib/libwnndict.so ./ scp -i your_key.pem user@host:/home/user/android/out/target/product/generic/obj/lib/libWnnJpnDic.so ./ scp -i your_key.pem user@host:/home/user/android/out/target/product/generic/obj/lib/libWnnEngDic.so ./
EclipseのProject ExplorerでImport > Existing Android ProjectでImportする。この時、Copy projects into work spaceにチェックを入れる必要がある。