Xiaomi Mi 4i
先月香港で購入したXiaomiのMi4iを使いやすいようにカスタマイズ。
まずは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
設定のアプリ(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
再起動すれば設定の画面が日本語化されてます。
端末情報
手間がかかるだけの自己満足の世界でしかないですね〜(笑)
私も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をサンプルに頂けたらとも思います。
長文、失礼致しました。
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で大丈夫ですよ。
店長様
不躾な質問にお答え頂き有難う御座います。
早急な対応に感銘をお受け致しました。
御指摘の通り、
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
は行っております。
お答え頂き有難う御座いました。
もう少し頑張ってみます。