使用Xposed強制android WebView開啟debug模式
從 https://developer.chrome.com/devtools/docs/remote-debugging 我們可以知道在android 4.4+可以通過在apk中使用下面的代碼開啟webview的chrome遠程調試
WebView.setWebContentsDebuggingEnabled(true);
但我們開發中接觸的apk往往是第三方的,沒誰會為我們開啟webContentsDebuggingEnabled。而Xposed能強制做到這一點
Xposed
Xposed能夠勾住(Hook) Android應用程序對象的方法,實現AOP,一個簡單的例子:
public class WebViewHook implements IXposedHookLoadPackage {
// handleLoadPackage 會在android加載每一個apk后執行
public void handleLoadPackage(LoadPackageParam lpparam) throws Throwable {
// 可以從lpparam中獲取當前apk的名字
if (! lpparam.packageName.equals("com.tencent.mobileqq")) { return; }
XposedBridge.log("WebViewHook handleLoadPackage: " + lpparam.packageName);
// 勾住 WebView 所有的構造器
XposedBridge.hookAllConstructors(WebView.class, new XC_MethodHook() {
@Override protected void beforeHookedMethod(MethodHookParam param) throws Throwable {
// 打開webContentsDebuggingEnabled
XposedHelpers.callStaticMethod(WebView.class, "setWebContentsDebuggingEnabled", true);
XposedBridge.log("WebViewHook new WebView(): " + packageName);
} }); } }
上面的代碼可以為QQ打開WebView的webContentsDebuggingEnabled Xposed工作原理可以參考文檔: https://github.com/rovo89/XposedBridge/wiki/Development-tutorial 沒有
詳細的API可以查看源代碼:
https://github.com/rovo89/XposedBridge/tree/master/src/de/robv/android/xposed
前期工作
1、需要android 4.4+ Root手機
2、安裝 Xposed框架
3、已開啟QQ WebView的Apk: webviewdebughook.Apk