POBox 5.3をXperia以外の端末でも動くようにする。(root不要)

POBox 5.3で五十音キーボードと手書きの軌跡を有効化し、ソニーチェックを無効化した状態。

すでに某所で公開しましたが、一応。ちなみにWindows向けです。

POBox 5.3はAndroid 4.0/ICS 以上向けです。それ以下の端末では動作しません。(2.3/GB,2.2/CCなど)

[tip]この記事でPOBox5.4について扱っています。タブレット向けレイアウトも追加されていますが、個人的にはタブレット向けにはPOBox5.3の方がいいと思います。[/tip]

準備するもの(ツール編):

  1. やる気(結構大事。
  2. いろいろやる知識ちょこっと。
  3. **Grepできるもの(ここではGrep and Replaceを使います。)**
  4. テキストエディタ(TeraPadでもサクラエディタでもEmEditorでもUTF-8対応のものならおk。ただし、Grep and Replaceを使う場合は不要。)
  5. 展開ソフト(7-zipやWinRARなど。)
  6. apktool(android-apktool | Google Project Hosting)
  7. JarSigner
  8. zipalign(某所ではやり忘れてました;)
  9. JDK(英Oracle、パスの設定はここを参考にしてみてください。一応パックにはバッチを含めてあります。)

3,4,5,9については各自インストールしておいてください。

6,7,8については別途記事を書きます。たぶん。とりあえずパック(#2012/01/10 23:10更新)しておきました(Windows向け)。

あるいはAPK Multi-Toolを使うと6,7,8は簡略化できます。

 

準備するもの(データ編):

  1. POBox5.3関係のファイル(POBox 5.3 | 所感 ~android~
  2. apkを展開(デコード)するのに必要なファイル(SemcGenericUxpResVL.apk)

手順:

1.適当なフォルダを作成し、コマンドプロンプトで開く。

適当なフォルダを今回はC:\Temp\POBoxとします。必要に応じて各自読み替えても結構です。

ついでにいろいろ展開。

コマンドプロンプトやGrep and Replaceなどは指示があるまで終了しないでください。

Windowsキー+R」を押下しファイル名を指定して実行を開き「cmd」入力しOKをクリック。

ファイル名を指定して実行

すると

コマンドプロンプト

こんなんが出てくるので、

mkdir C:\Temp\POBox
C:
cd C:\Temp\POBox
start .

この4行をコピペして「Enter」を押すとこんな感じになると思います。

コピペ後のコマンドプロンプト

エクスプローラーで「C:\Temp\POBox」が開かれたはずなのでそこに先ほどダウンロードした、APK-modding-tools.zipを展開。

続いて、POBox_5.3cwm.zipを7zipやWinRARなどで開きsystemの下のlibというフォルダ、appフォルダの中身も展開。

手順1の段階でのフォルダの中身

手順1の段階でのフォルダの中身
最新のzipではzip.exeとtr.exe、set_java.batが加わっています。

 

 

 2.展開してlibを配置、文字列の置換

何も言わずにコマンドプロンプトに以下4行をコピペして「Enter

zip -d POBoxSknSelector.apk META-INF/*
apktool if SemcGenericUxpResVL.apk Sony2012
apktool d -b -r -t Sony2012 JapaneseIME.apk POBox53
xcopy C:\Temp\POBox\lib C:\Temp\POBox\POBox53\lib\armeabi\

その後、Grep and Replaceを開き

ファイルの名前に「*」、

含まれる文字列に「/system/lib/」、

探す場所に「C:\Temp\POBox\POBox53\lib\armeabi\」、

置換に「/data/data/com.sonyericsson.android.pobox/lib/」と入力します。

また、動作設定をクリックし、「保存時バックアップ作成」を無効化します。

 

Grep and Replace

入力が終わった状態。

次に、「検索」をクリックすると「置換」が押せるようになるので押します。

Grep and Replace

追記した手順を行うと、IWnnEngine.smali、IMorphemeService.smaliがリストアップされます。

すると、このようになるので、「リストのファイルを一括置換」を選択。

Grep and Replace

 

保存確認が3回出るので全部「はい」を選択します。

 

追記: 実行する際は最新のパックを用いてください。

左下の検索設定をクリックし、「サブフォルダも探す」にチェックを入れ有効化します。

その後、探す場所に「C:\Temp\POBox\POBox53\smali」を入れ再度検索、置換、リストのファイルを一括置換を選択します。(暫く時間がかかると思います。)

また、改行コードを修正するために次のコードをコマンドプロンプトにコピペし「Enter

set libPath=C:\Temp\POBox\POBox53\lib\armeabi
tr -dIO \r < %libPath%\lib_dic_en_USUK.conf.so > %libPath%\lib_dic_en_USUK.conf.tmp
tr -dIO \r < %libPath%\lib_dic_ja_JP.conf.so > %libPath%\lib_dic_ja_JP.conf.tmp
tr -dIO \r < %libPath%\lib_dic_morphem_ja_JP.conf.so > %libPath%\lib_dic_morphem_ja_JP.conf.tmp
move /y %libPath%\lib_dic_en_USUK.conf.tmp %libPath%\lib_dic_en_USUK.conf.so
move /y %libPath%\lib_dic_ja_JP.conf.tmp %libPath%\lib_dic_ja_JP.conf.so
move /y %libPath%\lib_dic_morphem_ja_JP.conf.tmp %libPath%\lib_dic_morphem_ja_JP.conf.so

 

 

3.smaliの書き換え

ここでもGrep and Replaceを使います。

探す場所に「C:\Temp\POBox\POBox53\smali」と入力しておいてください。

引数はやるたびに違うので参考程度にとどめてください。

・ソニーチェックの無効化

該当ファイル:

  • OpenWnn.smali
  • IWnnLanguageSwitcher.smali
  • ControlPanelJaJp.smali

含まれる文字列に「Ljava/lang/String;->startsWith(Ljava/lang/String;)Z」を入力して検索。

その後、上記のファイル名をクリックするとウィンドウの右下に内容が表示されるため、赤い下線が引かれた行の引数(ひきすう)を一致させます。この際、どちらに合わせてもよいのですが、ここでは後ろの引数に合わせます。1つのファイルが終わり次のファイルを選ぶと保存確認が出るのでOKを選んでください。3つめが終わったあとは保存するためどれかファイル名をクリックしてください。

Grep and Replace

 

・50音キーボードと手書きの軌跡有効化

該当ファイル:

  • POBoxConfig.smali

Lcom/sonyericsson/android/pobox/preferences/POBoxPreference;->setEnable50Letter(ZZ)V

Lcom/sonyericsson/android/pobox/preferences/POBoxPreference;->setEnableHandwritingFading(ZZ)V

この2行には2つではなく3つの引数が含まれるので後半の2つを一致させてください。

たとえば、

invoke-virtual {v1, v0, v2}, Lcom/sonyericsson/android/pobox/preferences/POBoxPreference;->setEnable50Letter(ZZ)V

これを

invoke-virtual {v1, v2, v2}, Lcom/sonyericsson/android/pobox/preferences/POBoxPreference;->setEnable50Letter(ZZ)V

こう。

 

・存在しないリソースへの参照を書き換え

該当ファイル、書き換え回数:

  • IWnnImeJaJp.smali ×2
  • SkinData.smali ×3

含まれる文字列で「

0x206

」を検索します。

IWnnImeJaJp.smaliの場合は、

invoke-virtual {p0}, Lcom/sonyericsson/android/pobox/core/IWnnImeJaJp;->getResources()Landroid/content/res/Resources;

    move-result-object v5

    const/high16 v6, 0x206

    invoke-virtual {v5, v6}, Landroid/content/res/Resources;->getColor(I)I

    move-result v5

この「invoke-direct」から「move-result v5」までを次の1行に置き換えます。

const/16 v5, 0xffffffff

このとき「move-result v5」の「v5」という引数と、置き換えたあと「const/16 v5, 0xffffffff」の「v5」という引数が一致することに注意してください。これを2ヶ所。

 

 2013/01/06追記

コメントからこうならない場合も有ると発覚したので上記のようなヶ所が見当たらなかった場合はコメントも見てみてください。

手順を確認していて勘違いに気づきました。間違った修正箇所を掲載していたようです。すみません。したがって次の画像の書き換え範囲は間違っています。

 

Grep and Replace

 

SkinData.smaliの場合は、

const/high16 v2, 0x206

    invoke-virtual {p1, v2}, Landroid/content/res/Resources;->getColor(I)I

    move-result v0

これを、次の1行に置き換えます。

const/16 v0, 0xffffffff

先ほどと同じで、引数を一致させるように気をつけてください。3ヶ所。

 

・存在しないフォントの置き換え

該当ファイル:

  • KeyboardView.smali

SoMARegular.ttf→Roboto-Regular.ttf

SoMABold.ttf→Roboto-Bold.ttf

このようになるように置き換えます。それぞれ2ヶ所の計四ヶ所。

 

 4.apkのビルド、署名

 Grep and Replaceはこの段階になったら終了してください。

・apkのビルド

コマンドプロンプトに次のコマンドをコピペし「Enter

apktool b POBox53 POBox5.3.apk

 ・apkの署名

この作業はとても厄介なのでしっかりと確認してください。

コマンドプロンプトに次の行をコピペして「Enter

keytool -genkey -v -sigalg SHA1withRSA -keyalg RSA -keystore test.keystore -alias testkey -validity 10000

すると、キーストアのパスワード、姓名、組織名、都市名、州名、国番号を問われるので答えていきます。答えを入力、「Enter」という流れです。

パスワード入力中は入力中の文字は表示されません。

必要になった際に使えるようにしておくためキーストアパスワードは忘れないでください。

国番号を答えたあと、 「[いいえ]:」とひょうじされるので「y」と入力し「Enter

その次に再度「Enter」と押すと署名に必要なキーができあがります。

 

コマンドプロンプトに次の行をコピペして「Enter

jarsigner -sigalg SHA1withRSA -digestalg SHA1 -keystore test.keystore -verbose POBox5.3.apk testkey

キーストアのパスワードを聞かれるので入力して「Enter

 

次の行も同じです。

jarsigner -sigalg SHA1withRSA -digestalg SHA1 -keystore test.keystore -verbose POBoxSknSelector.apk testkey

 

・apkの最適化(zipalign)

次の2行をコピペして「Enter

zipalign -v 4 POBox5.3.apk POBox5.3_aligned.apk
zipalign -v 4 POBoxSknSelector.apk POBoxSknSelector_aligned.apk

 

 5.インストール

さすがにここは書かなくてもいいかなと思ったのですが一応書いておきます。

ここまででapkの改変そのものは作業が終了しています。

改変済みなのとインストールした方がよいapkは

  • POBox5.3_aligned.apk
  • POBoxSknSelector_aligned.apk
  • POBoxSknMono.apk

 

・提供元不明のアプリ

Android端末の設定を開きます。

セキュリティをタップし、提供元不明のアプリにチェックを入れます。すると警告が表示されるのでしっかりと読んだ上で「OK」をタップします。

提供元不明のアプリ

TabUIなので通常の表示とは違いますがこんな感じです。

 

・インストール

adbが使える環境なら話は簡単で、端末をPCにつなぎ次の3行をコマンドプロンプトにコピペ、「Enter」で完了です。

adb install POBoxSknSelector_aligned.apk
adb install POBoxSknMono.apk
adb install POBox5.3_aligned.apk

問題はそういった環境がない場合です。

たとえばPCと端末をつなぎ、SDカード上に「apk」など適当なフォルダを作り、前述のapkを転送します。

そこに「ES ファイルエクスプローラー」などを使ってアクセスし、インストールしたいapkをタップすればインストール可能です。

 

・有効化

ほかのIMEを使ったことがある人は知っていると思いますが、POBoxもその例に外れず、インストールしただけでは使うことができません。

そこで何をすればよいかというと、先ほどのようにAndroidの設定を開きます。

言語と入力をタップし、POBox Touch (日本語)にチェックを入れます。ここでも注意が表示されるので納得の上で「OK」をタップしてください。

言語と入力

IMEが多すぎる件にはあんまり突っ込まないでください…

 

 ・テスト

無事に起動しましたか?50音キーボードの有効化はできていますか?手書きの軌跡は表示されていますか?

何事もなく成功した人はお疲れ様でした。

失敗してしまった人はトライアンドエラーを繰り返してみてください。それでもだめなら、分かる範囲、できる範囲で対応します。

 

 

6.最後に

ここまで読んでくれてありがとうございました。

初めて書いた記事なので至らない点など多々あると思いますが、なにとぞご容赦のほどを…

Twitter – @watiko

 

追記:2013/01/07 22:40

XP Mode上で一通り動作するのを確認しました。一先ず、手順はこれでよいはずです。

 

 

一応今回できたものPOBox5.3

 

では。

adb  Android  apktool  cmd  Grep  jdk  POBox  Smali