Pixel Blue 指 Pixel 獨享的藍色主題配色.
準備
farmework-res.apk
(/system/framework/framework-res.apk
)framework-res.apk
(Pixel)- Java SE Development Kit (JDK)
apktool
反編譯 framework-res.apk
為了防止搞錯, 你可以先重命名兩個 framework-res.apk
, 例如我的做法是將牠們命名為 framework-res-Nexus.apk
和 framework-res-Pixel.apk
.
打開命令列, 使用 apktool d framework-res-Nexus.apk
和 apktool d framework-res-Pixel.apk
來反編譯牠們.
在目錄下得到 framework-res-Nexus
和 framework-res-Pixel
兩個資料夾.
修改 framework-res.apk 顏色設定檔
在 framework-res-Pixel/res/values
裡找到 colors.xml
, 牠就是決定系統主題顏色的設定檔.
這裡依照 color name
分為三種情形討論:
- 「我有的, Pixel 沒有的」
color name
這種情形不必作任何修改.
- 「Pixel 有的, 我沒有的」
color name
請將「Pixel 有的, 我沒有的」代碼拷貝到你的 colors.xml
中.
- 「Pixel 和我不一樣的」
color name
即 color name
相同, 值不相同. 請將「Pixel 和我不一樣的」的代碼覆寫到你的 colors.xml
中. (左 93 至 96 對應右 71 至 73 行屬於第二種情形, 應將右 71 至 73 行拷貝入, 而不是進行覆寫)
如果正在使用 Nexus 和 Android 7.1.1, 你可以直接將 Pixel 的
colors.xml
覆寫到你的framework-res-Nexus/res/values/colors.xml
之上, 牠們是互通的.
重編譯 framework-res.apk
使用 apktool b framework-res-Nexus
重新編譯修改過的 Nexus framework-res.apk
.
在 framework-res-Nexus/dist
得到修改後的 framework-res-Nexus.apk
.
重簽名 framework-res.apk
使用 apktool b
編譯的 APK 檔是沒有簽名過的, 使用沒有簽名過的 APK 必定會造成 boot loop. 對於一般的 APK, 可以直接簽一個名上去就 OK, 但是對於 framework-res.apk
等系統級 APK, 隨便簽名亦會導致 boot loop.
正確的做法如下:
- 使用解壓縮軟體解壓縮原
framework-res-Nexus.apk
和剛剛編譯好的新framework-res-Nexus.apk
. - 拷貝原
framework-res-Nexus.apk
解壓縮出來的META-INF
目錄和AndroidManifest.xml
檔案. - 把拷貝出來的
META-INF
目錄和AndroidManifest.xml
檔案覆寫到新framework-res-Nexus.apk
解壓縮出來的目錄裡面. - 使用壓縮軟體以 ZIP (僅存儲, 即無壓縮) 的方式打包修改後的新
framework-res-Nexus.apk
解壓縮出來的目錄裡的所有檔案 (見圖). - 將打包好的 ZIP 的副檔名修改為 APK, 即是將檔名修改為
framework-res.apk
.
應用到 Android
以上即是對 framework-res.apk
的修改流程, 現在使用 TWRP 等帶檔案總管的高級 Recovery 對 /system/framework/framework-res.apk
進行覆寫.
不要在 Android 系統下覆寫
/system/framework/framework-res.apk
, 系統會即刻偵測到, 然後 Android 會崩潰.