Feed

Xiaomi Mi 4i

Posted on 5月 24th, 2016 in 店長日記 by 店長

先月香港で購入したXiaomiのMi4iを使いやすいようにカスタマイズ。

device-2016-05-24-110235

まずはroot化ですが、やり方はいたって簡単です。
Mi4iの場合はじめからfastbootが使えるので、改造boot.imgから起動すればroot化完了。

fastboot boot boot.img

同時にfastbootからTWRPもフラシュします。

fastboot erase recovery
fastboot flash recovery twrp-2.8.7.0-ferrari.img

ついでにEFS (IMEI) もddでバックアップしておきます。デュアルsimなので2箇所あります。

dd if=/dev/block/mmcblk0p20 of=/sdcard/efs-backup/mmcblk0p20
dd if=/dev/block/mmcblk0p21 of=/sdcard/efs-backup/mmcblk0p21

ここまですれば、あとは煮るなり焼くなりです(笑)

日本語化
グローバルモデルと言っても日本語は入ってません。
日本では発売されてませんからね・・・
morelocaleという手もありますがココはちょっとfreamwork-res.apkを弄くります。
編集するにはApktoolを使用します。
まずはdecompile

apktool d framework-res.apk

展開されたframework-res/resの中にvalues-ja-rJPフォルダを作成して中に次の内容のarrays.xmlを作成します。

<resources>
<integer-array name="maps_starting_lat_lng">
<item>35666667</item>
<item>139750000</item>
</integer-array>
<integer-array name="maps_starting_zoom">
<item>5</item>
</integer-array>
</resources>

終わったらrecompile

apktool b -c framework-res -o framework-res_new.apk

これで日本語が選べるようになります。
device-2016-05-24-112502

設定のアプリ(Settings.apk)を変更して日本語表示できるようにします。

/system/priv-app/settings/Settings.apkをdecompile

まずは以下のファイルを読み込みます。

apktool if framework-res.apk
apktool if framework-ext-res.apk
apktool if miui.apk
apktool if miuisystem.apk

decompile

apktool d Settings.apk

展開された/Settings/res/values/strings.xmlを編集していきます。
この作業が滅法大変・・・・うんざり。
参考ソースはこれ
https://android.googlesource.com/platform/packages/apps/Settings.git/+/lollipop-release/res/values-ja/strings.xml

同じように/Settings/res/values/strings.xmlを編集していきます。
https://android.googlesource.com/platform/packages/apps/Settings.git/+/lollipop-release/res/values-ja/arrays.xml

/Settings/resの中にvalues-jaホルダーを作って編集したstrings.xmlとarrays.xmlをコピーします。

終わったらrecompile

apktool b -a aapt Settings -o Settings.new.apk

※recompileの時にはmiui7用のaaptが必要になるんでここからいただきます。

署名は面倒いので出来上がったSettings/build/apk/resources.arscを、Settings.apkの中に差し替えて終了。

後はframework-res_new.apkをframework-res.apkにリネーム
framework-res.apkとSettings.apkを端末に戻します。permissionは644
再起動すれば設定の画面が日本語化されてます。

device-2016-05-24-110248

device-2016-05-24-110311

device-2016-05-24-110328

端末情報

device-2016-05-24-110348

device-2016-05-24-110413

手間がかかるだけの自己満足の世界でしかないですね〜(笑)

(関連記事)

 


トラックバック URL

コメント:3個
  1. 4kiより、 2016/5/27 金曜日:

    私もMIUIを日本語化したくて、色々彷徨ってこちらに辿り着きました。
    分かる範囲で御教授頂けると助かりますが、
    気分を害してしまうようでしたら、スルーもしくはコメント削除して下さい。

    私はRedmi3 Proを日本語化しようとしています。
    apktoolにて、framework-res.apkの方は問題なく
    decompile→編集→recompile
    出来たのですが、settings.apkの方のdecompileでは

    Exception in thread “main” brut.androlib.err.UndefinedResObject: resource spec:0x01010501
    at brut.androlib.res.data.ResPackage.getResSpec(ResPackage.java:59)
    at brut.androlib.res.data.ResTable.getResSpec(ResTable.java:66)
    at brut.androlib.res.data.ResTable.getResSpec(ResTable.java:62)
    at brut.androlib.res.data.value.ResReferenceValue.getReferent(ResReferenceValue.java:57)
    at brut.androlib.res.data.value.ResStyleValue.serializeToResValuesXml(ResStyleValue.java:54)
    at brut.androlib.res.AndrolibResources.generateValuesFile(AndrolibResources.java:513)
    at brut.androlib.res.AndrolibResources.decode(AndrolibResources.java:264)
    at brut.androlib.Androlib.decodeResourcesFull(Androlib.java:128)
    at brut.androlib.ApkDecoder.decode(ApkDecoder.java:108)
    at brut.apktool.Main.cmdDecode(Main.java:163)
    at brut.apktool.Main.main(Main.java:81)

    とエラーっぽく表示が出ます。
    一応、settingsフォルダは作成されていて、中身も入っています。
    試しに、そのまま何も編集しないで

    apktool b -a aapt Settings -o Settings.new.apk

    としてみましたが、

    Exception in thread “main” brut.androlib.AndrolibException: brut.directory.PathNotExist: apktool.yml
    at brut.androlib.Androlib.readMetaFile(Androlib.java:249)
    at brut.androlib.Androlib.build(Androlib.java:261)
    at brut.androlib.Androlib.build(Androlib.java:254)
    at brut.apktool.Main.cmdBuild(Main.java:224)
    at brut.apktool.Main.main(Main.java:84)
    Caused by: brut.directory.PathNotExist: apktool.yml
    at brut.directory.AbstractDirectory.getFileInput(AbstractDirectory.java:105)
    at brut.androlib.Androlib.readMetaFile(Androlib.java:245)
    … 4 more

    と表示され、Settings.new.apkは作成されません。

    javaはjdk1.8.0_92及びjer1.8.0_92、
    apktoolは2.1.1を使っています。

    何かヒントでも頂ければ助かります。
    可能であれば、settings.apkをサンプルに頂けたらとも思います。

    長文、失礼致しました。

  2. 店長より、 2016/5/27 金曜日:

    4kiさん

    recompileの時にPathNotExist: apktool.ymlとメッセージ帰ってきてるので
    apktool.ymlaがないということでしょうね。
    decompileが完了すると、例えばSettings.apkの場合Settingsフォルダーの中にapktool.ymlができてるはずです。
    存在しないならdecompileに失敗してるのでしょう。

    decompileする前に4個のファイルを読み込みましたか?
    apktool if framework-res.apk
    apktool if framework-ext-res.apk
    apktool if miui.apk
    apktool if miuisystem.apk

    apktoolは2.1.1で大丈夫ですよ。

  3. 4kiより、 2016/5/28 土曜日:

    店長様

    不躾な質問にお答え頂き有難う御座います。
    早急な対応に感銘をお受け致しました。

    御指摘の通り、
    decompileにSettingsフォルダが出来ておりますが
    中には、

    ・resフォルダ
    ・AndroidManifest.xml

    のみで、apktool.ymlはありません。

    なので、decompileが失敗しているということですね。

    同じ環境でのframework-res.apkのdecompileでは
    作成されるframework-resフォルダの中にapktool.ymlがあるのですが・・・。

    decompile前には

    apktool if framework-res.apk
    apktool if framework-ext-res.apk
    apktool if miui.apk
    apktool if miuisystem.apk

    は行っております。

    お答え頂き有難う御座いました。
    もう少し頑張ってみます。

コメントをどうぞ

日本語が含まれない投稿は無視されますのでご注意ください。(スパム対策)