@blog.justoneplanet.info

日々勉強

Androidのソースコードを取得してビルドする

■準備

必要なパッケージをインストールする。その他は適宜。

sudo yum install make git bison libxslt flex gperf gcc-c++ glibc-devel zlib-devel

以下はUbuntu12.0.4の場合である。

sudo 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 tofrodos python-markdown libxml2-utils xsltproc zlib1g-dev:i386

OpenJDKが邪魔なので一旦消す。

sudo yum remove java-1.6.0-openjdk 

Ubuntuは以下のコマンドを実行する。

sudo apt-get purge openjdk-\* icedtea-\* icedtea6-\*

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
curl http://commondatastorage.googleapis.com/git-repo-downloads/repo > ~/bin/repo
chmod a+x ~/bin/repo
PATH=~/bin:$PATH
mkdir android
cd android
repo init -u https://android.googlesource.com/platform/manifest

以下のコマンドでbranchをリストアップし切り替える。

ls -1 .repo/manifests.git/logs/refs/remotes/origin/
repo init -u https://android.googlesource.com/platform/manifest -b android-4.0.1_r1

■ダウンロード

以下のコマンドでダウンロードする。恐らく1時間以上かかる。

repo sync

■ビルド

source build/envsetup.sh

largeでも4時間以上かかるらしいのでそれよりも大きいインスタンスを選択する事を勧める。

make

考えてみたらlargeだと4コアなので以下のコマンドでビルドする。

make -j4

ちなみに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 clone https://android.googlesource.com/platform/packages/inputmethods/PinyinIME.git

その他の言語はLatin語としてまとまっていて以下のコマンドを実行する。

git clone https://android.googlesource.com/platform/packages/inputmethods/LatinIME.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にチェックを入れる必要がある。

参考

コメントはまだありません»

No comments yet.

RSS feed for comments on this post.TrackBack URL

Leave a comment