【framework-mod】2012 xperia のframework-res.apkをいじるために

2012年xperiaからxperia固有のテーマ参照が変わり、framework-res.apkが従来通りのやり方ではいじれなくなってしまったのでメモ。

 

apktoolでxperia系のframeworkをいじるときは、下のように固有のリソースを追加する必要があるわけですが

apktool if framework-res.apk
apktool if SemcGenericUxpRes.apk

テーマのファイルを読み込む際、framework-res.apkからSemcGenericUxpRes.apkを読み(今まではココ)、さらにそこからThemeManagerを経由して背景を参照するようになってしまったのです…

apktool自体の読み込むリソースが足りないため、素のままコンパイルしてもブートループしてしまいます。

というわけで、テーマの背景が適用されないですが力技で解決する方法のメモ。

ここからメモ

まずデコンパイル。で、ソースをちょっといじる。

SemcGenericUxpRes.apkを読まないようにし、テーマの背景画像を読みに行くところを書き変え。

diff --git a/framework-res.apk/apktool.yml b/framework-res.apk/apktool.yml
--- a/framework-res.apk/apktool.yml
+++ b/framework-res.apk/apktool.yml
@@ -1,9 +1,6 @@
 version: 1.5.0
 apkFileName: framework-res.apk
 isFrameworkApk: true
-usesFramework:
-  ids:
-  - 2
 sdkInfo:
   minSdkVersion: '15'
   targetSdkVersion: '15'
diff --git a/framework-res.apk/res/values/styles.xml b/framework-res.apk/res/values/styles.xml
--- a/framework-res.apk/res/values/styles.xml
+++ b/framework-res.apk/res/values/styles.xml
@@ -2155,7 +2155,7 @@
         <item name="buttonStyleSmall">@style/Widget.DeviceDefault.Button.Small</item>
         <item name="buttonStyleInset">@style/Widget.DeviceDefault.Button.Inset</item>
         <item name="buttonStyleToggle">@style/Widget.DeviceDefault.Button.Toggle</item>
-        <item name="windowBackground">@com.sonyericsson.uxp:drawable/semc_bg</item>
+        <item name="windowBackground">@drawable/semc_bg</item>
         <item name="windowTitleStyle">@style/WindowTitle.DeviceDefault</item>
         <item name="windowTitleBackgroundStyle">@style/WindowTitleBackground.DeviceDefault</item>
         <item name="alertDialogStyle">@style/AlertDialog.DeviceDefault</item>
@@ -2312,7 +2312,7 @@
         <item name="buttonStyleSmall">@style/Widget.DeviceDefault.Light.Button.Small</item>
         <item name="buttonStyleInset">@style/Widget.DeviceDefault.Light.Button.Inset</item>
         <item name="buttonStyleToggle">@style/Widget.DeviceDefault.Light.Button.Toggle</item>
-        <item name="windowBackground">@com.sonyericsson.uxp:drawable/semc_bg_bright</item>
+        <item name="windowBackground">@drawable/semc_bg_bright</item>
         <item name="windowTitleStyle">@style/WindowTitle.DeviceDefault</item>
         <item name="windowTitleBackgroundStyle">@style/WindowTitleBackground.DeviceDefault</item>
         <item name="alertDialogStyle">@style/AlertDialog.DeviceDefault.Light</item>

画像の参照先を書き変えたので、背景画像を上書き。

今回は /res/drawable-nodpi/ 以下にこれらの画像を上書き。(端末の解像度に合わせたものを!)

そして /resdrawable-land-hdpi 以下にこれを上書き。

これでおk。

コメントを残す

メールアドレスが公開されることはありません。

次のHTML タグと属性が使えます: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>