Xperia Mini ProにCM7.2.0とPOBox Touch 4.3を導入

4.0.2.A.0.42にアップデートしたものの、バッテリー消費が1時間に1~5%をばらつきがある。3Gのままスリープすると、WiFiが使える場所に行っても3Gのままバックグランドで通信しているぽい。

最近CM7.2.0がかなり使えるようになってきたので、SE ROMからCM7に切り替えることに決めた。いつも通り普通にROMを作ればいいんだけど、ここで2つ難点が…

一つ目は、そのままの状態ではキーボードのマップがぐちゃぐちゃで使えない… この解決方法は簡単で、SE ROMの/system/usr/keycharsにあるファイルをそのまま持ってくればいいだけ。

二つ目はPOBox Touch 4.3が使えなくなること。既にPOBoxに慣れてしまっているので、今さらOpenWnnには戻れない…

POBoxの本体は/system/app/JapaneseIME.apkで、/system/libには

libWnnEngDic.so
libWnnJpnDic.so
libwnndict.so
libemoji.so

というライブラリが4つある。これを入れてROMを焼いてみるとFCの嵐… JapaneseIME.apkをシステムアプリにしたり、署名したり、署名をなくしたりしてみたけど、うまくいかない。

ネットには誰かが作ったPOBoxのパッケージをそのまま使ってます!みたいな使えない情報や古い情報ばかりで、4.3の構造の情報が全くない。JapaneseIME.apkを野郎アプリとしてインストールすると使えるけど、/system/appに入れると使えない。この辺の情報を探してみると、どうもJapaneseIME.apk内に格納されているライブラリが展開されていない模様。JapaneseIME.apk\lib\armeabiをのぞいてみると、以下のファイルが入っている。

libEnjemailuri.so
libennjcon.so
libennjubase1.so
libennjubase1gb.so
libennjubase1us.so
libennjubase2.so
libennjubase3.so
libennjyomi.so
libiwnn.so
libkaomoji_kihon.so
libkaomoji_tyukyu.so
libnjaddress.so
libnjcon.so
libnjemoji.so
libnjexyomi.so
libnjexyomi_new.so
libnjexyomi_re.so
libnjfzk.so
libnjname.so
libnjtan.so
libnjubase1.so
libnjubase2.so
lib_dic_en_USUK.conf.so
lib_dic_ja_JP.conf.so
lib_dic_morphem_ja_JP.conf.so

ということで、これらのファイルをJapaneseIME.apkから抜き出し、/system/libにコピーしてみると、無事エラーもなくCM7.2.0でPOBox Touch 4.3が起動した。

と、ここで安心していると、日本語変換がされない… このままでは平仮名とアルファベットしか入力できないことが発覚。orz

野郎でインストールすると何にも問題がないので、再度野郎でインストールしてみると、/data/data/com.sonyericsson.android.poboxにlibというディレクトリができて、中身を見ると上のJapaneseIME.apk/lib/armeabiの中身が入っている。/system/app/に入れておいた場合、ここの中身が空。ということで、/system/libに(JapaneseIME.apk/lib/)armeabiをコピーしておいて、/data/data/com.sonyericsson.android.poboxにシンボリックリンクを張ってみたところ、ビンゴ!

これで一件落着!使い慣れたCM7が一番使いやすいし、やっぱりバッテリの持ちもいいし、速い。後でinit.dにこのシンボリックリンクを張るスクリプトを入れておこう。

【まとめ1】POBox Touch 4.3をSE以外のROMに入れる場合
1. build.propにro.product.manufacturer=Sony Ericssonと記述があるか確認

2. JapaneseIME.apkを/system/appにコピー

3. JapaneseIME.apkの中にある(JapaneseIME.apk/lib/)armeabiをディレクトリごと/system/libにコピー

4. ln -s /system/lib/armeabi /data/data/com.sonyericsson.android.pobox/libでシンボリックリンクを張る

【まとめ2】自作ROMを作る場合
5. 初回起動時に/data/data/com.sonyericsson.android.poboxは初期化されてしまい、POBoxがFCに陥るので、/META-INF/com/google/android/updater-scriptに以下のスクリプトを追加して、エラーを回避。(ただし、初回起動時は日本語変換ができない)

symlink("/system/lib/armeabi/libEnjemailuri.so", "/system/lib/libEnjemailuri.so");
symlink("/system/lib/armeabi/libennjcon.so", "/system/lib/libennjcon.so");
symlink("/system/lib/armeabi/libennjubase1.so", "/system/lib/libennjubase1.so");
symlink("/system/lib/armeabi/libennjubase1gb.so", "/system/lib/libennjubase1gb.so");
symlink("/system/lib/armeabi/libennjubase1us.so", "/system/lib/libennjubase1us.so");
symlink("/system/lib/armeabi/libennjubase2.so", "/system/lib/libennjubase2.so");
symlink("/system/lib/armeabi/libennjubase3.so", "/system/lib/libennjubase3.so");
symlink("/system/lib/armeabi/libennjyomi.so", "/system/lib/libennjyomi.so");
symlink("/system/lib/armeabi/libiwnn.so", "/system/lib/libiwnn.so");
symlink("/system/lib/armeabi/libkaomoji_kihon.so", "/system/lib/libkaomoji_kihon.so");
symlink("/system/lib/armeabi/libkaomoji_tyukyu.so", "/system/lib/libkaomoji_tyukyu.so");
symlink("/system/lib/armeabi/libnjaddress.so", "/system/lib/libnjaddress.so");
symlink("/system/lib/armeabi/libnjcon.so", "/system/lib/libnjcon.so");
symlink("/system/lib/armeabi/libnjemoji.so", "/system/lib/libnjemoji.so");
symlink("/system/lib/armeabi/libnjexyomi.so", "/system/lib/libnjexyomi.so");
symlink("/system/lib/armeabi/libnjexyomi_new.so", "/system/lib/libnjexyomi_new.so");
symlink("/system/lib/armeabi/libnjexyomi_re.so", "/system/lib/libnjexyomi_re.so");
symlink("/system/lib/armeabi/libnjfzk.so", "/system/lib/libnjfzk.so");
symlink("/system/lib/armeabi/libnjname.so", "/system/lib/libnjname.so");
symlink("/system/lib/armeabi/libnjtan.so", "/system/lib/libnjtan.so");
symlink("/system/lib/armeabi/libnjubase1.so", "/system/lib/libnjubase1.so");
symlink("/system/lib/armeabi/libnjubase2.so", "/system/lib/libnjubase2.so");
symlink("/system/lib/armeabi/lib_dic_en_USUK.conf.so", "/system/lib/lib_dic_en_USUK.conf.so");
symlink("/system/lib/armeabi/lib_dic_ja_JP.conf.so", "/system/lib/lib_dic_ja_JP.conf.so");
symlink("/system/lib/armeabi/lib_dic_morphem_ja_JP.conf.so", "/system/lib/lib_dic_morphem_ja_JP.conf.so");

(set_perm_recursive(0, 0, 0755, 0644, “/system”);の前)

6. init.dのスクリプトに4のシンボリックリンクを張るスクリプトを追加。今回は/system/etc/init.d/04modulesに以下のスクリプトを追加。これにより、リブート後日本語変換ができるようになる。

if [ ! -e /data/data/com.sonyericsson.android.pobox/lib ]
then
 ln -s /system/lib/armeabi /data/data/com.sonyericsson.android.pobox/lib
else
 if [ -d /data/data/com.sonyericsson.android.pobox/lib ]
 then
 rm -r /data/data/com.sonyericsson.android.pobox/lib
 ln -s /system/lib/armeabi /data/data/com.sonyericsson.android.pobox/lib
 fi
fi

CM7にしてSEご謹製要らないアプリもろもろがなくなって、いつも使うアプリなどをごっそり/system/appに入れたけど、/systemパーティションの空きが140MBもある…もったいない。

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out / Change )

Twitter picture

You are commenting using your Twitter account. Log Out / Change )

Facebook photo

You are commenting using your Facebook account. Log Out / Change )

Google+ photo

You are commenting using your Google+ account. Log Out / Change )

Connecting to %s


%d bloggers like this: