2011年6月14日火曜日


今回もカスタムROMの導入です。。今月何度目だ?
今回は日本語リソースを付けてAndroid 2.3.4(I9000XXJVP)がベースのTweaky ROMを導入したいと思います。
※以下、自己責任でお願いします。
※記事の最後に日本語化したTweaky ROMのダウンロードを用意しました

ファームアップ前に...
 インストールしているアプリケーションのバックアップをしておいたほう
 がいいと思います。(私はTitanium Backupを使用しています。)

ClockworkMod Recoveryのインストール
 AndroidマーケットからROM Manager経由でClockworkMod Recovery
 インストールしておきます。

ツール類の入手

 以下のツールを入手してください。
  ・Android SDK
   (adb.exeが必要。adb.exeのフォルダにパスを通しておくとベター)
  ・Java Runtime Environment
  ・apktool
   (apktool*****.tar.bz2apktool-install-*******.tar.bz2をダウンロード)
  ・7-zip
 上記のうち、apktoolと7-zipの関連ファイルを1つのフォルダに入れておきます。
 今回は「R:\apktool」とします。 
 


ClockworkMod Recoveryのインストール
 マーケットからROM Manager経由でClockworkMod Recovery
 インストールしておきます。

Tweaky ROMの入手
 ココにある、「Tweaky ROM JVP Wipe」か「Tweaky ROM JVP no Wipe」
 を入手してください。(Wipe:初期化)
 今回私はWipeのほう(Tweaky ROM JVP Wipe.zip)にしました。

Tweaky ROM JVP Wipe.zipから日本語化するapkの抜き出し
 今回は「framework-res.apk」と「Settings.apk」と「twframework-res.apk」
 を抜き出して、日本語リソースの埋め込みを行います。
 zipを解凍するソフトで以下の3ファイルを抜き出して「R:\apktool」にコピーします。
  ・framework-res.apkの場所: ・・・・\system\framework
  ・Settings.apkの場所: ・・・\system\app
  ・twframework-res.apkの場所: ・・・\system\framework
  


リソース参照用ファイルの作成
 コマンドラインから以下のコマンドを実行します。
 apktool if framework-res.apk
 apktool if twframework-res.apk
 

 framework-res.apkなどをデコードするときに参照されるリソースファイル
 がユーザーフォルダ以下コピーされます。
 


Settings.apkのデコード
 コマンドラインから以下のコマンドを実行します。
 apktool d Settings.apk
 

 デコードされたSettings.apkが「R:\apktool\Settings」にコピーされます。
 

  
Settings.apkに日本語リソースの追加
 Settings.apkに限らずAndroidのアプリの構造として、resフォルダ直下に
 各国用の言語リソースファイルが埋め込まれています。例えばドイツ語なら
 「values-de」、フランス語なら「values-fr」といった具合です。
 

 このフォルダに日本語のリソースフォルダとファイルを作成します。
  ・「values-ja」:arrays.xmlstrings.xml
  ・「values-ja-nokeys」:strings.xml
 
※作成するファイルの中身についてはこの記事の最後に書きます
 続いて R:\apktool\Settings\res\values\arrays.xml を開き、
 下記セクションにキーを追加します。
  ・ special_locale_codes に <item>ja_JP</item>
  ・ special_locale_names に <item>日本語</item>
 


framework-res.apkとtwframework-res.apkのデコードと日本語リソースの追加
 長くなってきたので割愛しますが、ざっと書くと
  デコード
   apktool d framework-res.apk
   apktool d twframework-res.apk
  日本語のリソースフォルダとファイルを作成
   R:\apktool\framework-res\res に
    ・「raw-ja」:loaderror.htmlnodomain.html
    ・「values-ja」:arrays.xmlplurals.xmlstrings.xml
    ・「values-ja-rJP」:arrays.xml
   R:\apktool\twframework-res\res に
    ・「values-ja」:dimens.xmlstrings.xml

リソースの手直し
 本来であればここからリソースファイルの作成に入るのですが、
 どうやら元のリソースファイルにバグ(?)があるのか、このままでは
 リソースファイルの作成でエラーが出ます。
 ということで、日本語化とは関係ありませんがリソースの手直しを行います
  ・R:\apktool\framework-res\res\values\strings.xml に、
   permdesc_accessUsbキーとpermlab_accessUsbキーを追加
   <string name="permdesc_accessUsb">Allows the application to access USB devices.</string>
   <string name="permlab_accessUsb">access USB devices</string>
   
リソースファイルの作成
 コマンドラインから以下のコマンドを実行します。
  apktool b Settings
  apktool b framework-res
  apktool b twframework-res
  
 
  これで其々の buid\apkにresources.arscファイルが生成されました。
  
  上はSettings.apkの例


resources.arscを各apkに上書き
 上記で作成したresources.arscを各apkファイルに上書きしていきます。
 コマンドラインから以下のコマンドを実行します。
 copy Settings.apk Settings.zip
 copy framework-res.apk framework-res.zip
 copy twframework-res.apk twframework-res.zip
 7z.exe u -mx=0 Settings.zip R:\apktool\Settings\build\apk\resources.arsc
 7z.exe u -mx=0 framework-res.zip R:\apktool\framework-res\build\apk\resources.arsc
 
7z.exe u -mx=0 twframework-res.zip R:\apktool\twframework-res\build\apk\resources.arsc
 

 7z.exeが拡張子apkでは実行してくれないので、拡張子zipでコピー
 してからresources.arscの上書きを行っています
 resources.arscの上書きが終わったら、拡張子zipを拡張子apkにリネームしてください。

apkファイルをTweaky ROM JVP Wipe.zipに上書きコピー
 上記で出来上がったapkファイルを、元のTweaky ROM JVP Wipe.zip
 コピーします。私の場合はWinRARでTweaky ROM JVP Wipe.zipを開いて各apkをD&Dでコピーしました。
 コピー先は、「Tweaky ROM JVP Wipe.zipから日本語化するapkの抜き出し」を参照ください。
 
Tweaky ROM JVP Wipeのコピー
 端末をUSBで接続し、SD CardにTweaky ROM JVP Wipe.zipをコピーします
 adb push "*:***\Tweaky ROM JVP Wipe.zip” \sdcard\
 

 
Tweaky ROM JVP Wipeのインストール
 
リカバリーモードで立ち上げて「install zip from sdcrad」をクリック、
 「choose zip from sdcard」をクリック、Tweaky ROM JVP Wipe.zip
 クリックしてインストールしてください。
 終了したら「Go Back」をクリックして「reboot system now」で再起動

以上でAndroid 2.3.4ベースのTweaky ROMのインストールが完了しました。



日本語化も上手くいっているようです。。

おまけ。。。
日本語リソースの作り方
 日本語リソースの作り方ですが、一番確実なのは各リソースフォルダの
 valueフォルダにあるstring.xmlなどを翻訳していく方法です。
 ただしこのやり方ではかなりの労力がかかってしまいます。
 そこで私は色んなやり方を併用して今回日本語リソースを作成しました。
  ・http://fus.samsungmobile.com/*******.encファイルの入手
    これは日本版GalaxySのバイナリファイルです。
    このバイナリをバラして日本語リソースを入手します。
  ・ココからリソースファイルをコピーさせていただく
    上記サイトは海外端末を日本語表記にするために立ちあげられた
    サイトです。色んな端末の日本語リソースがあります。
  ・各xmlのキーでググって日本語表記を探す
    実はこの方法が結構有用です。キーで探したらあるもんです。
  ・google翻訳と自力意訳
    地味ですがこの方法も多用しました。。まるまる2日間は費やしたような。。
 あとは、リソースファイルの作成(apktool bコマンド)をして表示されるエラーを潰していく作業になります。

ここまで読んで下さった皆様に。
分りにくい箇所だらけかもしれません、、もっと上手く書くように努力します。。。
まだ導入してからあまり時間が経っていませんが、今のところ正常に日本語で動いています。今回は結構大変でしたが遣り甲斐はありました。そこで今回は私が日本語リソースを埋め込んだTweaky ROM JVP Wipe.zipをダウンロード出来るようにしました。
最後まで読んでいただき、ありがとうございました。

※本当に本当に
自己責任でお願いします。
最悪の場合ブリック化が待っています。。。
Tweaky_ROM_JVP_Wipe_JA.zip
 

2 コメント:

  1. 大変興味深く読ましていただきました。
    海外版GT-I9000(Froyo2.2)がSamsung Kiesに接続できず、
    2.3にファームアップできないまま困っていました。
    どうせなら日本語標準のカスタムROMにチャレンジしようとググっていたら、
    本サイトに行き当たりました。
    まったくの素人質問ですみません。
    上記のxxx_JA ROMの導入手順は、zipをDLしてSDカードにコピーし、
    リカバリーモード以下の作業でよろしいですか?

    返信削除
  2. 19 さん
    全然更新していないこんなBlogを見に来ていただいて有難う御座います。

    > 上記のxxx_JA ROMの導入手順は、zipをDLしてSDカードにコピーし、
    リカバリーモード以下の作業でよろしいですか?

    ですね。ClockworkMod Recoveryが入っていれば、リカバリーブートで「install zip from sdcrad」をすればOKです。

    i9000の情報がだんだん少なくなってきていますが、なんとかBlogの更新を再開したいのと持ってますので、引き続き覗きに来てもらえると嬉しいです。。

    返信削除