Xiaomi Mi Pad - MIUIに日本語リソースを追加してみる

Xiaomi Mi Pad - MIUI 7.1.1.0の設定を日本語化


Xiaomi Mi Pad - MIUI 7.1.1.0は日本語が選択できません。
MIUI translate プロジェクト

https://crowdin.com/project/miui-v6

日本語化のプロジェクトがあった!!

Apktoolで展開

※MIUI独自のリソースファイル(drawable-godzillaui-xhdpi-v8等)の再構築が現在最新のapktool2.0.3では対応していないようです。 そこで修正済みのapktool-3.0.9-bz-small.jarLinuxで使用します。

Apktoolで展開しようとすると以下の様なエラーが表示されました。

Can't find framework resources for package of id: 17. You must install proper framework files, see project website for more info.
Can't find framework resources for package of id: 16. You must install proper framework files, see project website for more info.
これは追加のframeworkを読み込ませておくことで解決できました。
apktool if framework/framework-res.apk
apktool if framework/framework-ext-res.apk
apktool if system/app/miui.apk
apktool if system/app/miuisystem.apk

日本語リソース

日本語化のプロジェクトがありましたが、今回は購入時のバージョン6.6.5.0(KXFCNCF)に含まれていた日本語リソースを使用して framework-res.apk, MiuiSystemUI.apk, Settings.apkのみを日本語化しました。

Apktoolで再構築

以下のコマンドで再構築

apktool b -c XXXX -o new.apk
Settings.apkを再構築する際、以下の様なエラーが表示されました。
Error: No resource found that matches the given name (at 'layout' with value '@miui.system:layout/provision_bg').
これは展開時にはmiuisystem.apkが不要だったのが再構築時には必要になるためで、Settings/apktool.ymlを以下のように修正することで解決しました。
usesFramework:
  ids:
  - 1
  - 16
  - 17
usesFramework:
  ids:
  - 1
  - 16
  - 17
  - 18
これでエラー無く再構築ができました。
(この作業は全てのMIUIアプリの再構築時にやっておいたほうがいいかもしれない。)

これでOK.ブートループにはならずに起動した。



詰まった所メモ

再構築した際、

7za.exe u -tzip -mx=0 Settings.apk resources.arsc
上のコマンドのように元のapkファイルのresources.arscだけを入れ替えるという方法がありますが、この方法だと以下の様なエラーが出てアプリが落ちます。
E/AndroidRuntime(2469): java.lang.RuntimeException: Unable to start activity ComponentInfo{com.android.settings/com.android.settings.MiuiSettings}: android.content.res.Resources$NotFoundException: File res/layout-sw600dp-v13/settings_main.xml from xml type layout resource ID #0x7f0400eb
E/AndroidRuntime(2469): Caused by: android.content.res.Resources$NotFoundException: File res/layout-sw600dp-v13/settings_main.xml from xml type layout resource ID #0x7f0400eb

また、apktoolの使用しているaapt.exeがdrawable-godzillaui-xhdpi-v8の再構築に対応しておらずdrawable-uiModeType=0-xhdpi-v8となってしまいアプリが落ちます。
E/AndroidRuntime(2262): java.lang.RuntimeException: Unable to start activity ComponentInfo{com.android.settings/com.android.settings.MiuiSettings}: java.lang.NullPointerException
E/AndroidRuntime(2262): Caused by: java.lang.NullPointerException
ぬるぽ

つづく

日本語化シリーズ
AOSPベースのAndroid端末に日本語リソースを追加する
Xiaomi Mi Pad - MIUIに日本語リソースを追加してみる
Lenovo K3 Note - VibeUIに日本語リソースを追加してみる
Lenovo K3 Note - VibeUIに日本語リソースを追加する (その2)
Meizu m2 note - Flyme OSに日本語リソースを追加してみる



12 件のコメント :

匿名 さんのコメント...

はじめまして。
xiaomi mi5 でも同じ方法で日本語化は出来る可能性はありますか?

がじぇったほりっく さんのコメント...

はじめまして!
MiPadを例にしていますが、MIUI7までであれば同様に日本語化可能なはずですよ。
ちなみに日本語リソースにAOSPのstring.xmlを使っても共通部分が日本語化できます。

匿名 さんのコメント...

即日にご返答頂きながら申し訳ありません。
ご回答ありがとうございます。
mi5 の日本語化をしたいと思っておりますが、2通りあるどちらのやり方の方がより日本語化が出来るでしょうか?
また、mi5 に適したファイルはどれを使えば良さそうでしょうか?
宜しければ詳しく教えて頂けるとありがたいです。
コメント欄では不自由であれば私のアドレスをお伝えしますので、ご迷惑でなければ宜しくお願い致します。

がじぇったほりっく さんのコメント...

Mi5のMIUI7はAndroid5.1ベースのようなので、同バージョンのAOSPリソースファイルを使ってみてはどうでしょうか?
AOSP5.1のSettingsリソースファイル

より日本語化をしたいなら自分で翻訳することもできますよ^^

匿名 さんのコメント...

ご回答ありがとうございます。

Mi5のMIUI7はAndroid 6.0 Marshmallow となっておりますが、実際はAndroid5.1ベースなのですか?

足りないところを自分で翻訳するのも可能なのですね?
まずはリソースファイルで上手く出来るか試してみようかと思っておりますが、root前提の作業ですよね?

匿名 さんのコメント...

何度も申し訳ありません。
apktool-3.0.9-bz-small.jar を落とそうと思ったのですが、リンク先にありません。
どこから入手出来るのでしょうか。

がじぇったほりっく さんのコメント...

root化必須です。念の為にカスタムリカバリなど、リカバリできる環境を整えておくと良いと思います。
apktoolは更新されているようなのでリンク先の新しい物を使えば大丈夫だと思います。
Mi5のMIUIはAndroid6.0ベースでした。

匿名 さんのコメント...

こんにちは。
ブログを拝見し、xiaomi端末の日本語化をしようとしております。
apktoolでリコンパイル時の署名の仕方がわからず詰まっております。
もしご迷惑で無ければ、署名の仕方についてお教え頂けないでしょうか。
宜しくお願い致します。

がじぇったほりっく さんのコメント...

システムアプリでは署名は必要ありませんよ。
記事中ではリコンパイル時にapktoolの-cオプションを使用して元の署名ファイルを書き戻しています。
日本語化がんばってください!!

匿名 さんのコメント...

ご返答ありがとうございます。
apktoolの-cオプションを使用して元の署名ファイルを書き戻すというのがよくわかりません。
「apktoolの-cオプションを使用して元の署名ファイルを書き戻す」際のコマンド例を教えて頂けないでしょうか?
宜しくお願い致します。

がじぇったほりっく さんのコメント...

デコンパイル時にoriginalフォルダに元の署名ファイルが出力されます。
apktool b -c XXXX -o new.apk
上記コマンドのように、-cオプションを付けることで元の署名ファイルを使用してリコンパイルされるため再署名は不要です。
システムアプリの場合はこれだけで動作可能です。

匿名 さんのコメント...

ご返答ありがとうございます。挑戦してみます。