XperiaにおけるAndroidアプリ考察

【How-To】APK Multi-Toolの使い方

非常に簡単でしたが前身のApk Manager考察はしてますがAPK Multi-Toolの使い方をググったら無くて(´;ω;`)ブワッ

APK Multi-Toolとは、アプリをリコンパイル(オブジェクトコード(機械語)→ソースコードに変換)し、修正を加えたあとコンパイルするツールです。

なので今回はバッテリー100段階のアイコン変更する、というお題目で考察してみます。(バッテリーだけだったら素材準備して7-zipでやりゃいいじゃん、というツッコミごもっともな話w)

 

※APK Muiti-Toolを使うためにはAndroid-SDK環境が必須です。また修正したapkファイルを適用した時に変更に失敗してると文鎮化する可能性も高いです。十分なバックアップを強く推奨します。

 

■ツールを準備する■

ツールをDLし環境作るところまでまとめます

  1. APK Multi-Toolのダウンロードページ(http://apkmultitool.com/?q=node/5)よりファイルをダウンロード
    (冒頭にAPK Multi-Tool Windows Version 1.0.6 – Downloadとあります)
    #ダウンロードページの右上「ADD SKIP」で落とせます。
  2. ダウンロードしたexeファイルをダブルクリックし画面の指示に従いインストール、完了すると(何もチェックしなければ)APK Multi-Toolが起動します。(裏にDonate(寄付)画面が開きます。ツールを良いと思ったらぜひドネを!

  3. APK Multi-Tool画面で
    1.  アップデートチェック
    2. framework-res関連環境構築
      (自分だけかもですが、事前に端末からSystemUI.apkをインストールフォルダ直下に置いておき、4.Install SystemUI.apkを実行しました。コレやらないとdecompile、compileエラーになりました)
    3. 初めて使う場合は実行(APK Managerからのアップデートの場合は不要?)
      #projectフォルダなどを作成します。

これでインストール編は完了です。一旦「(quiet)00」(enter)で初期画面を閉じます。

セットアップをやり直したい場合はツールインストールフォルダ直下にsetup.batがありますのでダブルクリックして設定してください。

 

 

■APK Multi-Toolsの使い方■

冒頭書きました通り、お題目はXperia GXのバッテリー100段階アイコンを変更する場合を仮定したツールの使い方です。

<必要なファイル>

 

【使用方法】

  1. APK Multi-Toolを起動
    インストールフォルダ直下の「Script.bat」をダブルクリック。こんなAA出ますのでEnter
  2. メニュー構成
    画面はこんな感じ
  3. カスタムするファイルを抜き出す(まだ弄るファイルを抜いてない場合)
    メニュー「0」(Adb pull)
    (既に抜いている場合は、インストールフォルダ\APK_MultiTool\place-apk-here-for-moddingにコピー)
    ・抜くファイルを聞かれるので「system/app/SystemUI.apk」と入力しenter
    ・この時点で抜いたファイル名は「something.apk」なので、正しい名前に「SystemUI.apk」と入力しリネーム

    ・確認入るので「y」 これでリネームされます

    一連のコマンドはこんな感じで流れていきます。
  4. 変更するapkをプロジェクトとして登録
    No.23 Set current projectを選択(23と入力)しenter
    今は1つしかファイルがないと思うので1→enter
  5. apkファイルのデコンパイル(機械語→ソースコード変換)
    No.9 Decompile apkを選択しenter
    APK Multi-Toolのインストールフォルダ\APK_MultiTool\projects\SystemUI.apkフォルダにソースコードレベルに分解されてたファイルが展開されます。
  6. ファイルの差し替え
    準備した差し替え用ファイルを入れ替えます。基本はすべて上書きです。
    • drawableフォルダのxml
      インストールフォルダ\APK_MultiTool\projects\SystemUI.apk\res\drawable
    • drawable-hdpi-v4フォルダのpng
      インストールフォルダ\APK_MultiTool\projects\SystemUI.apk\res\drawable-hdpi

      ★ただしXperia NXやGXなどHD解像度の端末は
      インストールフォルダ\APK_MultiTool\projects\SystemUI.apk\res\drawable-xhdpi
      に入れておく(こちらを参照してる模様)

    ごろうさんのSystemUIで使われている画像群

    xdaからDLしたファイルに置き換えると

    同じようにdrawableフォルダのxmlも置き換えます。
    このxmlはバッテリー画像とバッテリー状態との紐付けを行う定義がされています。
    放電時のバッテリー状態(実容量)に対する表示画像はたぶんごろうさんのとxdaのは同じはずですが、充電時アニメーションする場合、定義が異なるため必ずxmlも上書きしてください。(今回のごろうさんのは充電時アニメなしで、入れ替えるmodはアニメ付きなので、zzz_stat_sys_battery_1.xmlというファイルは新規扱いとなってます)

    画像の差し替えが完了したら次の手順へ進みます。

  7. アプリの圧縮レベル設定 *忘れると書き換え失敗、最悪起動しなくなるので(systemファイルは必須!)
    APK Muiti-ToolのメインメニューよりNo.20 Select compression level for apk’sを選択しenter
    Enter Compression Level(圧縮レベル)は「0」です。(無圧縮)
  8. apkファイルのコンパイル(ソース→オブジェクトコード(機械語)変換)
    No.11 Compile apkを選択しEnter
    2回確認が入ります。2回とも「y」+enter (システムファイルの置き換えのため2回とも「y」)

    2回目のyの後にコマンドが流れ、「続行するには何かキーを押してください…」で停止。キーを押さずに次の手順へ
  9. 一時ファイルから書き換えたファイル削除
    インストールフォルダ\APK_MultiTool\keepを開き、手順6で入れ替えたファイルを一旦削除

    ココで削除したファイルがこのあとの作業で追記されます。面倒ならフォルダ以下のファイル全部消してもw

    【忘れずに!】今回はxmlを修正したので「resources.arsc」も削除

  10. apkファイルの生成
    APK Mult-tool画面に戻りenterキー。コマンドが流れてメイン画面に戻ります。
    インストールフォルダ\APK_MultiTool\place-apk-here-for-moddingに「unsignedSystemUI.apk」があるのを確認。
  11. 現行環境バックアップ
    書き換えするファイルのバックアップ及び文鎮化対策のため現在の環境をバックアップ(必須!)
  12. 端末へファイルを送る(1)
    unsignedSystemUI.apkをリネームし端末へ送り込む(スクリプト修正しないで済ませるなら)
    ごろうさんスクリプト(push.bat)を編集するといいかもです。コマンドプロンプトのカレントフォルダにSystemUI.apkをコピーしておく。
    @echo off
    adb push SystemUI.apk /data/local/tmp/
    
  13. 端末へファイルを送る(2)
    端末で設定するためのスクリプト(readme_tkymgr.txt)も使用させてもらいます。
    adb shell
    su
    に続き以下のコマンドをコピペ
    sync;sync;sync;
    /data/local/tmp/busybox mount -o remount,rw -t ext4 /dev/block/mmcblk0p12 /system
    dd if=/data/local/tmp/SystemUI.apk of=/system/app/SystemUI.apk
    chown root.root /system/app/SystemUI.apk
    chmod 644 /system/app/SystemUI.apk
    sync;sync;sync;
    /data/local/tmp/busybox mount -o remount,ro -t ext4 /dev/block/mmcblk0p12 /system
    
  14. 端末reboot
    下記のようになれば成功です!ちゃんと充電時にアニメーションしてます♪

    もし書き換えに失敗しているとステータスバーが表示されなくなるかも。
    そうなってしまったら元のSystemUI.apkを送り込めば復帰できると思います。
    #framework-res.apkだと起動しなくなる(=いわゆる文鎮化)場合も。。

 

 

■(参考)7-zipでの画像のみ差し替え方法■

冒頭書きました通り、アイコンの差し替えだけなら7-zipと素材画像だけあれば十分対応できたりします。

  1. SystemUI.apkをPCにコピー
  2. SystemUI.apkを右クリック>7-zip>展開>展開場所指定で分解
  3. ファイルの構成、中身を確認し必要な画像を準備しておく
  4. SystemUI.apkを右クリック>7-zip>開く
  5. 画像フォルダ(\SystemUI.apk\res\drawable-xhdpi\など)に差し替えたい画像をドラッグし、上書き確認でOK
  6. 7-zipを閉じる
  7. ファイルを送り込む

これで画像だけであれば差し替え可能です。

 

ちょっとややこしい手順かもしれないですが、いつも「クレクレ君」になってた人も自力でやってみて、自分好みのアイコンに変更できると更に愛着が増すと思いますよ。こうして端末のカスタムが楽しくなっていくと次第にハマってくるわけです、はいw

もし失敗してもFlashtoolでftf焼けば復活できますし(userdataをwipeしなければ環境残したままシステムファイルだけ初期化できます)