Amazon EC2でMozc for Android(オープンソース版Google日本語入力)をコンパイルしてみる

IMEを作っている(そして放置している)ものとして、Google日本語入力が出た時点で「こっちでいいじゃん」的な気持ちになっていたのですが、とりあえずMozc for Android(オープンソース版Google日本語入力)でも弄ってみようと思ってはや1年近く。ようやく時間ができたので試してみました。それなりに悪戦苦闘しそうだと思ってはいたのですが、割とすんなりできたので手順を公開します。

本来の手順自体はこちらにあります。
https://code.google.com/p/mozc/wiki/AndroidBuildInstructions

まずはEC2でインスタンスを作ります。t1.microでは途中でCPUパワーが足りずにBuildが進まなくなるため、最初からm1.smallで設定したほうが良いでしょう。tokyoリージョンなのは趣味です。

スクリーンショット 2014-01-01 11.33.41

この時点でEBSを16GiBにしておく必要があります。これもデフォルトの8GiBではコンパイル中に容量が足りなくなるためです。
また、今のところUbuntuでないとコンパイルが保証されていないので、Ubuntu Server 12.04.3 LTS 64bitを選択してますが、後から32bitライブラリを足たりしているので、もしかしたら最初から32bitが良かったのかもしれません。

ログインしたらまず足りないものをインストール

% sudo apt-get install ant g++ make python subversion openjdk-6-jdk

Unzip / Subversion / make / gcc / pkg-config も入れておきます。

% sudo apt-get install unzip
% sudo apt-get install subversion
% sudo apt-get install make
% sudo apt-get install gcc
% sudo apt-get install pkg-config

32bitライブラリを入れておきます。

% sudo apt-get install ia32-libs

一度インストールしたら、

% sudo apt-get update

も実行してください。

AndroidSDKとAndroidNDKもダウンロードして展開。

% wget http://dl.google.com/android/adt/adt-bundle-linux-x86_64-20131030.zip
% wget http://dl.google.com/android/ndk/android-ndk-r9c-linux-x86_64.tar.bz2
% unzip adt-bundle-linux-x86_64-20131030.zip
% tar jxfv android-ndk-r9c-linux-x86_64.tar.bz2

いよいよコードをダウンロード

% cd ~/
% svn co http://src.chromium.org/svn/trunk/tools/depot_tools
% export PATH=”$PATH”:`pwd`/depot_tools
% mkdir -p ~/src/mozc
% cd ~/src/mozc
% gclient config http://mozc.googlecode.com/svn/trunk/src
% gclient sync

周辺ライブラリzinnia(手書き文字認識エンジン)が足りないのでダウンロード・インストールしておく

% cd ~/
% wget http://downloads.sourceforge.net/project/zinnia/zinnia/0.06/zinnia-0.06.tar.gz
% tar zxvf zinnia-0.06.tar.gz
% cd zinnia-0.06/
% ./configure
% make
% sudo make install

再度 gclient syncから

% cd ~/src/mozc
% gclient sync

パスを通す

% export PATH=~/android-ndk-r9c:~/adt-bundle-linux-x86_64-20131030/sdk/tools:~/adt-bundle-linux-x86_64-20131030/sdk/platform-tools:”$PATH”
% which ndk-build android adb

さらにJava をインストールし、SDKをアップデートしておきます

% sudo add-apt-repository ppa:webupd8team/java
% sudo apt-get update
% sudo apt-get install oracle-java7-installer
% android update sdk -u -t platform,tool,platform-tool,extra-android-support

コンパイルを開始します

% cd ~/src/mozc/src
% python build_mozc.py gyp –target_platform=Android

(WPでは見えませんが、target_platform の前のハイフンは2つです)

% python build_mozc.py build_tools -c Release
% python build_mozc.py build android/android.gyp:android_manifest

local.propertiesを作成

% android update project -s -p android –target android-17

そしてBuildします

% python build_mozc.py build android/android.gyp:apk -c Debug_Android

これでDebugバージョンのapkが
/home/ubuntu/src/mozc/src/android/bin/MozcForAndroid-debug.apk
に出来ます。

 

以下補足です。

エラーが出る場合 1:

make: *** [out_android/Debug_Android/obj/gen/data_manager/oss/system.dictionary] Error 137
make: *** Waiting for unfinished jobs….

こんな感じのエラーはCPUパワーが足りてません。
t1.microではCPUパワーが足らないので、m1.small以上で起動しなおしましょう。

エラーが出る場合 2:

BUILD FAILED
/home/ubuntu/src/mozc/src/android/custom_rules.xml:42: The following error occurred while executing this line:
/home/ubuntu/adt-bundle-linux-x86_64-20131030/sdk/tools/ant/build.xml:601: The following error occurred while executing this line:
/home/ubuntu/adt-bundle-linux-x86_64-20131030/sdk/tools/ant/build.xml:653: The following error occurred while executing this line:
/home/ubuntu/adt-bundle-linux-x86_64-20131030/sdk/tools/ant/build.xml:698: Execute failed: java.io.IOException: Cannot run program “/home/ubuntu/adt-bundle-linux-x86_64-20131030/sdk/build-tools/android-4.4/aapt” (in directory “/home/ubuntu/src/mozc/src/android/protobuf”): error=2, No such file or directory

これは32bitライブラリが足りていないときです。このコマンドからia32を導入してください。

% sudo apt-get install ia32-libs

エラーが出る場合 3:

INFO: Running: make -j2 MAKE_JOBS=2 BUILDTYPE=Debug_Android builddir_name=out_android apk
ACTION android_android_gyp_assets_touch_stat_data_target_assets_touch_stat_data android/dummy_touch_stat_data
make: *** [android/dummy_touch_stat_data] Error 1
Traceback (most recent call last):
File “build_mozc.py“, line 1437, in <module>
main()
File “build_mozc.py“, line 1425, in main
BuildMain(cmd_opts, cmd_args, original_directory_name)
File “build_mozc.py“, line 1038, in BuildMain
BuildOnLinux(options, targets, original_directory_name)
File “build_mozc.py“, line 992, in BuildOnLinux
RunOrDie([make_command] + build_args + target_names)
File “/home/ubuntu/src/mozc/src/build_tools/util.py”, line 97, in RunOrDie
‘==========’]))
build_tools.util.RunOrDieError:
==========
ERROR: make -j2 MAKE_JOBS=2 BUILDTYPE=Debug_Android builddir_name=out_android apk
==========

なんらかの理由でコンパイルが失敗しているので、一度cleanして実施すると上手くいく可能性があります。

% python build_mozc.py clean –target_platform=Android

エラーが出る場合 4:

/home/ubuntu/android-ndk-r9c/toolchains/arm-linux-androideabi-4.6/prebuilt/linux-x86_64/bin/arm-linux-androideabi-ar: android/obj/local/armeabi/libclient.a: No space left on device

EBSボリュームが足りていません。EBSボリュームを拡張しましょう。詳しくは
http://docs.aws.amazon.com/ja_jp/AWSEC2/latest/UserGuide/ebs-expand-volume.html
でご確認ください。

さらに補足:
aaptのパスが通らなかった場合がありましたので、その場合は下記を投入してください。

% export PATH=/home/ubuntu/adt-bundle-linux-x86_64-20131030/sdk/build-tools/android-4.4/:”$PATH”

 

コメントをどうぞ

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です