- 安装最新的 Android System Webview (com.google.android.webview)
- 拷贝 (pull) 一份
/System/framework/framework-res.apk的副本到任意位置 - 搜索在其中搜索
webview, 将/android/string/config_webViewPackageName的值改为com.google.android.webview - 将修改后的文件覆盖回 (push) 原位置
- 重启
-
-
Save tw-Frey/42ddda775f5f64c67bad2d2ce40711d6 to your computer and use it in GitHub Desktop.
3. 搜索在其中搜索 webview, 将 /android/string/config_webViewPackageName 的值改为 com.google.android.webview
以 Android L Emulator 的framework-res.apk來說
android/string/config_webViewPackageName 是在/res/values/strings.xml裡
如果沒有 decompile 工具
很難搜尋到
在 /res/values/strings.xml 裡
<string name="config_webViewPackageName">com.android.webview</string>改成
<string name="config_webViewPackageName">com.google.android.webview</string>承上,修改完要打包起來
使用的 decompile 工具是ApkTool
最新版是2.4.0
一開始 decompile 沒有困難
但要 compile/build 回去就一直不成功
原本還以為可能是用最新的映像檔 所以 apk 有加工過
嘗試修改錯誤, 嘗試很多方法, trial and error
最後成功打包出來
直接說結論:ApkTool要用2.3.1
因為 framework-res.apk 來源是 Android L Emulator
使用 反譯/打包aapt2好像會有問題
而ApkTool自2.3.2預設是aapt2
打包出來的 framework-res.apk 還不能直接 push 回去
真的會 變磚
(幸好使用的是 Android Emulator)
打包出來的 framework-res.apk 需要再調整
雖然ApkTool (v2.3.2) 支援將原本簽名(META-INF) 一併打包進來
但試過沒用
調整的方法應該是
將 新的 framework-res.apk 裡的
resources.arsc拷貝到 舊的 framework-res.apk 裡
網路上有很多參考資料
這裡附上圖文並茂中文連結:反編譯+回編譯教程【反編譯framework-res.apk為例】
附帶使用 apktool 指令暨步驟
(預架) apktool if framework-res.apk (optional)- (反譯) apktool d framework-res.apk
- (打包) apktool b framework-res
4. 将修改后的文件覆盖回 (push) 原位置
這也不簡單
詳情參考:如何 push 檔案到 Android Emulator 的 /system (USE -writable-system)
實施起來不簡單
緣由於 AOSP 的 WebView 預設是
com.android.webview在 Android Emulator 安裝 Google 發布的 Android System WebView (
com.google.android.webview)執行 App 使用 WebView 元件依然是
com.android.webview(附上外國人解釋...感覺比較權威)
只好從源頭:更改
config_webViewPackageName的值為com.google.android.webview步驟如上
但實施起來不簡單
(除了步驟 1. 2. 5.)