Android API Guides---Debugging Web Apps

如果您正在使用运行Android 4.4或更高版本的设备测试您的Web应用程序,您可以远程调试网页中的WebView与Chrome开发者工具,同时继续支持旧版本的Andr​​oid。欲了解更多信息,请参阅在Android远程调试。
如果你没有运行Android 4.4或更高版本的设备,您可以使用JavaScript API和查看输出信息到logcat的控制台调试你的JavaScript。如果你熟悉调试网页使用Firebug或Web Inspector中,那么你很可能熟悉如何使用控制台(如执行console.log())。 Android的WebKit的框架支持大多数相同的API,所以你可以从你的网页在Android浏览器,或在自己的WebView调试时接收日志。本文介绍了如何使用控制台的API进行调试。
在Android浏览器中使用控制台的API
logcat的
logcat的是一个工具,转储日志系统消息。这些消息包括:当设备引发错误堆栈跟踪,以及从应用程序写日志消息,那些使用JavaScript控制台API编写的。
要运行logcat的和查看短信,从你的Andr​​oid SDK工具/目录下执行亚行logcat,或者从DDMS,选择设备>运行logcat的。当使用ADT的Eclipse插件,您还可以通过打开的logcat视图中查看logcat的信息,可以从窗口>显示视图>其它> Android的> logcat中。
请参见调试有关的更多信息。

当你调用一个控制台功能(在DOM的window.console对象),输出出现在logcat中。例如,如果你的网页执行下面的JavaScript:

console.log("Hello World");
然后logcat的消息看起来是这样的:

Console: Hello World http://www.example.com/hello.html :82
该消息的格式取决于您所使用的Android版本可能会出现不同的。在Android 2.1及更高版本,Android浏览器控制台消息的标签名称为“浏览器”。在Android1.6和更低的,Android浏览器的消息的标签名称为“WebCore的”。
Android的WebKit的不会实现所有其他桌面浏览器提供的控制台的API。你可以,但是,使用基本的文字记录功能:

  • console.log(String)
  • console.info(String
  • console.warn(String)
  • console.error(String)
其他控制台功能不会引发错误,但可能不会表现得一样的,你从其他Web浏览器的期望。


在WebView中使用控制台的API


上面显示的所有控制台的API在WebView中调试时也支持。如果你的目标是Android 2.1(API7级)或更高,则必须提供一个实现onConsoleMessage()方法,以便控制台消息出现在logcat的一个WebChromeClient。然后,应用WebChromeClient到您的WebView与setWebChromeClient()。



例如,为了支持API7级,这是你的onConsoleMessage(字符串,整数,字符串)代码可能是什么样子:

WebView myWebView = (WebView) findViewById(R.id.webview);
myWebView.setWebChromeClient(new WebChromeClient() {
  public void onConsoleMessage(String message, int lineNumber, String sourceID) {
    Log.d("MyApplication", message + " -- From line "
                         + lineNumber + " of "
                         + sourceID);
  }
});
但是,如果你的最低支持的版本是API级别8或更高,则应该实现onConsoleMessage(控制台消息) 例如:

WebView myWebView = (WebView) findViewById(R.id.webview);
myWebView.setWebChromeClient(new WebChromeClient() {
  public boolean onConsoleMessage(ConsoleMessage cm) {
    Log.d("MyApplication", cm.message() + " -- From line "
                         + cm.lineNumber() + " of "
                         + cm.sourceId() );
    return true;
  }
});
控制台消息还包括一个MessageLevel对象,以指示被输送控制台消息的类型。您可以查询与messageLevel()消息级别来确定消息的严重程度,然后使用适当的Log方法或采取其他适当的行动。
无论您使用的onConsoleMessage(字符串,整数,字符串)或onConsoleMessage(控制台消息),当你在网页中执行一个控制台方法,Android的调用适当的onConsoleMessage()方法,这样你就可以报告错误。例如,与上面的示例代码,打印一个logcat的消息,如下所示:

Hello World -- From line 82 of http://www.example.com/hello.html

你可能感兴趣的:(java,Web,android,api,APP,sdk)