Android電話

[電話] apktoolでapkを弄り回す日々。そのに

Amazonのアソシエイトとして、8796.jp管理日誌は適格販売により収入を得ています。

前回分解した apk を組み立てる。


[bash]
apktool b Radio
[/bash]

これで Radio/build と Radio/dist フォルダができました。build には apk に圧縮前の部品が入っていて dist には Radio.apk が出来ているはずです。この dist/Radio.apk は署名の問題があるので今回は使いません。この apk の材料は build/apk にあるいくつかのファイルとフォルダです。こいつらの一部を元々端末から持ってきたオリジナルの apk に戻すと端末に戻しても署名でエラーが出ない日本語対応ファイルになります。

さて、先程増やした values-ja フォルダが build/apk/res フォルダにありません。これは前回も書きましたが values 関連は resources.arsc にまとめられています。これを元の apk に無圧縮で戻すとほぼ完了です。

ポイントは無圧縮。普通に apk ファイルを 7-zip で開き resources.arsc をドラッグアンドドロップすると圧縮してファイルを置き換えてしまいます。apk のファイルサイズが小さくなってお得感がありますが、きっとその apk を端末に戻しても起動しません。

7-zip の GUI では無圧縮でファイルを置き換えたりするのが面倒なのでコマンドラインでします。

[bash]
7z u –tzip -mx=0 Radio.apk /path_to_Radio/build/apk/resources.arsc
[/bash]

みたいな感じ。タイプは zip で圧縮率は0で書庫を更新だ!7zのパスを通すか 7z.exe と 7z.dll をパスの通ったところに置くと良いと思います。追加するファイルは絶対パスで指定しないと残念なことになるので注意が必要です。

その他のフォルダで追加したもの(xml-ja とか)必要であれば元の apk に追加してください。xmlファイルは build/res 以下のファイルを普通にドラッグアンドドロップで追加してしまってOKでした。png などの画像ファイルは無圧縮にしないと本体に戻してからリソースが見つからないって怒られたこともあります。

これでファイルの変更は完了

XPERIA X10 mini proの場合は

[bash]
adb push Radio.apk /sdcard/
adb shell
su
mount –o remount,rw /dev/block/mtdblock0 /system
cp /sdcard/Radio.apk /system/app/
[/bash]

のように元に戻せば良いはずです。

ここらへんのアプリは起動しなくなっても慌てず騒がずオリジナルをコピーし直せばいいんですが、framework-res.apk はマジ危険。手違いがあるとロゴ画面から先に進まなくなるので注意。通常使ってる su は GUI が立ち上がって SuperuserPermissions と連携するように出来ていて framework がエラーで落ちてる段階では動かないので元のファイルに置き換える手段がなくなってしまってただの屍になるよ!SEUSで戻せればいいけど修復ボタンが出ないとマジ死亡。慌ててもう一個発注しなくちゃいけなくなったりするので十分に注意が必要です。

image image

そうして日本語化しても Radio.apk なんてほとんど日本語関係ないのであんまり意味がw

色々やった経験上 Camera.apk で元々が drawable-ldpi なのに apktool を通すと drawable-ldpi-v4 に変わっていて元の apk のフォルダ名をリネームしないと動かないということがありました。うまくいかないときは adb logcat を念入りに確認することが重要です。なんかしら解決の手がかりがきっとあります。

とりあえずこんな感じ?

タイトルとURLをコピーしました