Kindle fireを日本語仕様に変更する(4)
日本語仕様にするには、以下の3点をクリアする必要がある。
- まともな日本語フォントの導入
- 日本語ロケールの有効化
- 日本語入力の追加
まともな日本語フォントの導入
日本語フォントは、Androidのソースコードにも取り込まれているモトヤフォントに入れ替える。
たとえば、ここからRAWボタンでダウンロードする。
https://github.com/android/platform_frameworks_base/blob/master/data/fonts/MTLc3m.ttf
フォントファイルは、/system/fonts/に置く必要がある。systemは通常ROM領域になっているので、フォントをインストールするには、ROM領域を書き込み可能にしてやる必要がある。
そのため、まずsystemの実体がどこであるか探す必要がある。
# df Filesystem Size Used Free Blksize /dev 223M 32K 223M 4096 /mnt/asec 223M 0K 223M 4096 /mnt/obb 223M 0K 223M 4096 /system 503M 278M 225M 4096 /data 1G 132M 986M 4096 /cache 251M 4M 247M 4096 /dropbox 4M 1M 3M 1024 /mnt/sdcard 4G 648K 4G 2048 /mnt/secure/asec 4G 648K 4G 2048
結構細かく分かれている。
# ls /dev/block/mmc* /dev/block/mmcblk0 /dev/block/mmcblk0p1 /dev/block/mmcblk0p10 /dev/block/mmcblk0p11 /dev/block/mmcblk0p12 /dev/block/mmcblk0p2 /dev/block/mmcblk0p3 /dev/block/mmcblk0p4 /dev/block/mmcblk0p5 /dev/block/mmcblk0p6 /dev/block/mmcblk0p7 /dev/block/mmcblk0p8 /dev/block/mmcblk0p9
# cat /proc/mounts rootfs / rootfs ro,relatime 0 0 tmpfs /dev tmpfs rw,relatime,mode=755 0 0 devpts /dev/pts devpts rw,relatime,mode=600 0 0 proc /proc proc rw,relatime 0 0 sysfs /sys sysfs rw,relatime 0 0 none /acct cgroup rw,relatime,cpuacct 0 0 tmpfs /mnt/asec tmpfs rw,relatime,mode=755,gid=1000 0 0 tmpfs /mnt/obb tmpfs rw,relatime,mode=755,gid=1000 0 0 none /dev/cpuctl cgroup rw,relatime,cpu 0 0 /sys/kernel/debug /sys/kernel/debug debugfs rw,relatime 0 0 /dev/block/platform/mmci-omap-hs.1/by-name/system /system ext4 ro,relatime,barrier=1,data=ordered 0 0 /dev/block/platform/mmci-omap-hs.1/by-name/userdata /data ext4 rw,nosuid,nodev,noatime,errors=continue,barrier=1,data=ordered 0 0 /dev/block/platform/mmci-omap-hs.1/by-name/cache /cache ext4 rw,nosuid,nodev,noatime,errors=continue,barrier=1,data=ordered 0 0 /dev/block/platform/mmci-omap-hs.1/by-name/splash /dropbox ext4 rw,nosuid,nodev,noatime,errors=continue,barrier=1,data=ordered 0 0 /dev/block/vold/179:12 /mnt/sdcard vfat rw,dirsync,nosuid,nodev,noexec,relatime,uid=1000,gid=1015,fmask=0702,dmask=0702,allow_utime=0020,codepage=cp437,iocharset=iso8859-1,shortname=mixed,utf8,errors=remount-ro 0 0 /dev/block/vold/179:12 /mnt/secure/asec vfat rw,dirsync,nosuid,nodev,noexec,relatime,uid=1000,gid=1015,fmask=0702,dmask=0702,allow_utime=0020,codepage=cp437,iocharset=iso8859-1,shortname=mixed,utf8,errors=remount-ro 0 0 tmpfs /mnt/sdcard/.android_secure tmpfs ro,relatime,size=0k,mode=000 0 0
# ls -l /dev/block/platform/mmci-omap-hs.1/by-name lrwxrwxrwx root root 2012-05-25 04:40 media -> /dev/block/mmcblk0p12 lrwxrwxrwx root root 2012-05-25 04:40 cache -> /dev/block/mmcblk0p11 lrwxrwxrwx root root 2012-05-25 04:40 userdata -> /dev/block/mmcblk0p10 lrwxrwxrwx root root 2012-05-25 04:40 system -> /dev/block/mmcblk0p9 lrwxrwxrwx root root 2012-05-25 04:40 splash -> /dev/block/mmcblk0p8 lrwxrwxrwx root root 2012-05-25 04:40 boot -> /dev/block/mmcblk0p7 lrwxrwxrwx root root 2012-05-25 04:40 backup -> /dev/block/mmcblk0p6 lrwxrwxrwx root root 2012-05-25 04:40 recovery -> /dev/block/mmcblk0p5 lrwxrwxrwx root root 2012-05-25 04:40 dfs -> /dev/block/mmcblk0p4 lrwxrwxrwx root root 2012-05-25 04:40 dkernel -> /dev/block/mmcblk0p3 lrwxrwxrwx root root 2012-05-25 04:40 bootloader -> /dev/block/mmcblk0p2 lrwxrwxrwx root root 2012-05-25 04:40 xloader -> /dev/block/mmcblk0p1
systemがmmcblk0p9にあることがわかった。
書き込み可能にして再マウントする。
# mount -o rw,remount -t ext4 /dev/block/platform/mmci-omap-hs.1/by-name/system /system # cat /proc/mounts (snip) /dev/block/platform/mmci-omap-hs.1/by-name/system /system ext4 rw,relatime,barrier=1,data=ordered 0 0 (snip)
日本語フォントは含まれていないのを確認する。
# ls -l /system/fonts/DroidSansJapanese.ttf /system/fonts/DroidSansJapanese.ttf: No such file or directory # exit
MacBook:tools kinneko$ ./adb push ~/Downloads/MTLc3m.ttf /system/fonts/DroidSansJapanese.ttf 2860 KB/s (1924864 bytes in 0.657s)
これで終了。
日本語ロケールの有効化
日本語リソースを有効にするために、ありやまさん作のMoreLocale 2を入れる。
以下からapkファイルをダウンロードする。
http://ccl.c-lis.co.jp/modules/d3blog/details.php?bid=112
http://ccl.c-lis.co.jp/modules/mydownloads/singlefile.php?cid=5&lid=78
インストールする。
MacBook:tools kinneko$ ./adb install ~/Downloads/MoreLocale2.apk 886 KB/s (31996 bytes in 0.035s) pkg: /data/local/tmp/MoreLocale2.apk Success
ホームに戻ると、アイコンが出ているので、起動する。
設定可能なロケール一覧が表示される。
日本語は下にスクロールしていくとある。
クリックすると、日本語に設定が変更される。
もともと、fireのホームアプリは、日本語設定情報を持たないので見た目は変わらないが、設定やアプリ一覧などを出すと日本語になっているのがわかる。
日本語入力の追加
そもそもfireには、キーボードはkindle keyboardしか設定がない。
他のキーボードアプリケーションをインストールしても切り替えることができない。
表示を日本語にしてしまうと、このメニューを選ぶこともできない。
Androidの言語とキーボードの設定は、"/data/data/com.android.providers.settings/databases/settings.db"に入っているので、SQLite3のツールを使って、必要なエントリを直接書き換えることもできるが、settings.db -> secure -> enabled_input_methodsのレコードを直接編集するのは、少々手間である。
そこで、imeコマンドを使うことにする。
デフォルトでは、以下のようにLatinIMEが1つだけインストールがされているのが確認できる。
MacBook:tools kinneko$ ./adb shell # ime list -a com.android.inputmethod.latin/.LatinIME: mId=com.android.inputmethod.latin/.LatinIME mSettingsActivityName=com.android.inputmethod.latin.LatinIMESettings mIsDefaultResId=0x7f080001 Service: priority=0 preferredOrder=0 match=0x108000 specificIndex=-1 isDefault=false ServiceInfo: name=com.android.inputmethod.latin.LatinIME packageName=com.android.inputmethod.latin labelRes=0x7f0c0020 nonLocalizedLabel=null icon=0x0 enabled=true exported=true processName=com.android.inputmethod.latin permission=android.permission.BIND_INPUT_METHOD # exit
IMEとして、Simejiの最新版をインストールする。
MacBook:tools kinneko$ ./adb install "/Users/kinneko/Downloads/Simeji 4.11.2.apk" 2267 KB/s (4471802 bytes in 1.926s) pkg: /data/local/tmp/Simeji 4.11.2.apk Success
きのこの山が出た。
Simejiが追加されたのがimeコマンドでも確認できる。
MacBook:tools kinneko$ ./adb shell# ime list -a com.android.inputmethod.latin/.LatinIME: mId=com.android.inputmethod.latin/.LatinIME mSettingsActivityName=com.android.inputmethod.latin.LatinIMESettings mIsDefaultResId=0x7f080001 Service: priority=0 preferredOrder=0 match=0x108000 specificIndex=-1 isDefault=false ServiceInfo: name=com.android.inputmethod.latin.LatinIME packageName=com.android.inputmethod.latin labelRes=0x7f0c0020 nonLocalizedLabel=null icon=0x0 enabled=true exported=true processName=com.android.inputmethod.latin permission=android.permission.BIND_INPUT_METHOD com.adamrocker.android.input.simeji/.OpenWnnSimeji: mId=com.adamrocker.android.input.simeji/.OpenWnnSimeji mSettingsActivityName=com.adamrocker.android.input.simeji.SimejiSettingsActivity mIsDefaultResId=0x0 Service: priority=0 preferredOrder=0 match=0x108000 specificIndex=-1 isDefault=false ServiceInfo: name=com.adamrocker.android.input.simeji.OpenWnnSimeji packageName=com.adamrocker.android.input.simeji labelRes=0x7f080001 nonLocalizedLabel=null icon=0x0 enabled=true exported=true processName=com.adamrocker.android.input.simeji permission=android.permission.BIND_INPUT_METHOD #
現在有効になっているIMEを確認する。
# ime list -s com.android.inputmethod.latin/.LatinIME
imeコマンドで表示される情報のうち、mIdを使って直接有効にする。
# ime enable com.adamrocker.android.input.simeji/.OpenWnnSimeji Input method com.adamrocker.android.input.simeji/.OpenWnnSimeji: now enabled
有効になっているのを確認する。
# ime list -s com.android.inputmethod.latin/.LatinIME com.adamrocker.android.input.simeji/.OpenWnnSimeji
候補になればあとは、入力欄を長押しして、IMEの一覧を表示して切り替えるだけ。
というわけで、これにて日本語化の作業は終わった。
あとは再起動してやるだけ。
MacBook:tools kinneko$ ./adb shell # reboot
rootでなくなっていることと、systemがリードオンリーに戻っていることが確認できる。
MacBook:tools kinneko$ ./adb shell $ cat /proc/mounts (snip) /dev/block/platform/mmci-omap-hs.1/by-name/system /system ext4 ro,relatime,barrier=1,data=ordered 0 0 (snip)
しかし、無線設定していないし、アプリを何も入れていないし、Amazonでの認証もしていないので、日本語化したからといって何か便利になるわけではないのであった... orz