2011-03-08

7-zip と 9patch と Apk Manager

9patchについてちょっと試してみたのでメモ
参考になるか分かりませんが、実行は自己責任で。

テストにはstatusbar_background.9.pngを使ってみました。

まずは、Apk Managerの使い方はこちらなどを参考に


デフォルトのframework-res.apkをデコンパイル。

projectsに出来たframework-res.apkフォルダの中の
statusbar_background.9.pngを参考に、
28x40のサイズなので26x38のpng画像を用意。

(私は24x34を用意して9patchで26x38になりました。
ただの間違いですが、とくに問題はないようです。)

で、こちらなどを参考に、9patch実行。デフォルトそのままで。
Draw 9-patch - ソフトウェア技術ドキュメントを勝手に翻訳
statusbar_background.9.pngにリネームしておきます。

それを、7-zipで変更したいframework-res.apkの
drawable-hdpiに上書き。

7-zipについてはこちらなどを参考に
7-zipの使い方

ほいで、出来たframework-res.apkを差し替える。
私はrecovery2eを導入したのでupdate.zipを
作って差し替えました。

recovery2eとupdate.zipについては
前回のエントリを参考に(ならないかも…)

その実行結果がこちら↓





すごく残念なことになりました。
(ちなみにデフォルトホームでpng画像は透過してます。)

そこで、始めに用意したpng画像を9patch処理をせずに
名前だけstatusbar_background.9.pngに変更。
それを前と同じやり方で7-zipで上書き。


その実行結果がこちら↓




きれいになりました。

が、一つ問題が。
このframework-res.apkをApk Managerで
デコンパイル→何もせずコンパイル。
なんか、エラーが出ます。

原因はこちら↓










9patchじゃなくなってる。

9patch処理を省いたせいかと思い始めに作った方を
確認すると↓









ここで既に9patchじゃなくなってる。

端っこが黒かったのはこのせいみたい。

で、Apk Managerで9patchを差し替えて
コンパイルしてみると↓






エラーが。
statusbar_background.pngの方を消し忘れたのが原因みたい。

statusbar_background.pngを消して再度コンパイル。
今度は大丈夫みたい。


あとは、keepフォルダのstatusbar_background.9.pngを削除。
resources.arscも忘れずに削除。

出来たframework-res.apkを差し替えると↓




見た目は同じ。
でも、framework-res.apkの中は










ちょっと違う。
ちゃんとstatusbar_background.9.pngになってる。
statusbar_background.pngも無い。

7-zipで9patchを差し替える場合はちょっと注意が必要かも。
まあ、7-zipでpngだけ差し替える分には関係ないけど。

xdaとかから拾ってきたthemeの、framework-res.apkも
デコンパイルしてみると、同じようになってるところがあるから
7-zipで差し替えてるのかも。
sc-02b用に作り変えるときは要確認。

まあ、私は某掲示板でいただいたthemeを元にして
ちょっと変更するだけなんだけど…。

ありがとう5z○nさん。

0 件のコメント:

コメントを投稿