我正在使用Cordova
构建一个Android应用程序,该应用程序正在Web视图中运行。我知道我可以通过chrome://inspect
访问Webview,但是它仅适用于调试版本。它无法检查APK版本中的Chrome。那么有没有办法通过adb
命令获取chrome控制台日志?
答案 0 :(得分:0)
有关通过adb获取控制台日志的信息,请参见:Debugging a WebView (Ionic) app on Android via logcat
请先尝试以上操作,因为我似乎误解了您有关通过远程调试来调试WebView的问题。
对于包装WebView的简单本机Java / Kotlin Android应用,the documentation is quite clear that all one needs to do is to enable the feature:
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.KITKAT) {
WebView.setWebContentsDebuggingEnabled(true);
}
并需要其他代码才能将其限制为调试版本:
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.KITKAT) {
if (0 != (getApplicationInfo().flags & ApplicationInfo.FLAG_DEBUGGABLE))
{ WebView.setWebContentsDebuggingEnabled(true); }
}
查看Cordova Android存储库中的内容:
Cordova Android - ... SystemWebViewEngine.java
相关代码在这里:
//Determine whether we're in debug or release mode, and turn on Debugging!
ApplicationInfo appInfo = webView.getContext().getApplicationContext().getApplicationInfo();
if ((appInfo.flags & ApplicationInfo.FLAG_DEBUGGABLE) != 0) {
enableRemoteDebugging();
}
我还发现了这个开放的ISSUE 500: Release version still have debugging enabled,这意味着即使将APK打包发布,Android模拟器也可以进行调试。
因此,对于在发行版APK上远程调试WebView的建议是:
尝试使用仿真器通过发行版APK进行调试。
考虑派生Cordova Android代码并创建特殊的调试模式,以便可以在设备上调试WebView的内容。可以通过自定义系统属性来隐藏启用这种功能:How to define and use a system property in Android?例如,假设您将标志定义为com.example.myapp.debugwebview
。您可以通过adb setprop com.example.myapp.debugwebview 1
之类的命令设置属性,并且在启动/重新启动时,应用将启用WebView调试。请注意,这确实需要更详细地了解Android以支持该功能,以及支持分叉的努力。
答案 1 :(得分:0)
无法在任何地方找到此 ,这对我有用:
adb -d logcat chromium:I *:S
在我的情况下,-d
表示物理设备。如果其他所有方法均失败,则只需将adb logcat
的结果转储到文本文件中并搜索“ CONSOLE”,即可为您的logcat过滤器提供程序。似乎随着时间的推移,这会发生变化,具体取决于您的特定开发环境。