`
WebAppTrend
  • 浏览: 54956 次
社区版块
存档分类
最新评论

Android官方文档之Web Apps调试

 
阅读更多

概览

  • 你可以使用控制台的Javascript方法调试你的web app
  • 如果是在定制的WebView中调试,你需要实现一个回调方法来处理调试信息

文档内容

在Android Browser中使用控制台API

在WebView中使用控制台API

参考

调试

如果你是在为Android开发web应用,那么,你可以使用控制台(console)的Javascript API(the console  JavaScript APIs)来调试你的Javascript代码并将信息输出到logcat。如果你对使用Firebug 或 Web Inspector调试web页面比较熟悉,那么,你对使用console(比如console.log())也应该比较熟悉了。Android的 Webkit框架支持大多数同样的API,因此在Android的浏览器中或者WebView 中调试的时候,你可以接收来自于web页面的logs。

在Android Browser中使用控制台API

Logcat

Logcat是一个工具,用来转储(dump)系统信息日志。这些信息包括设备抛出错误时的堆栈路径,以及你的应用写下的日志信息和使用JavaScript console  API写下的日志信息。

要运行logcat并查看信息,从你的Android SDK  tools/ 目录执行adb logcat  ,或者从DDMS选择 Device > Run logcat 。当使用 ADT plugin for Eclipse 时,你同样可以通过打开Logcat view来查看logcat信息,打开途径是 Window > Show View > Other > Android > Logcat .。

在 Debugging 你可以获取更多关于 <codelogcat< code="">.</codelogcat<>的信息。

当你调用一个console 函数(在DOM的window.console 对象中),输出会出现在logcat中。例如:如果你的web页面执行了下面的Javascript:

console.log("Hello World");

那么logcat 信息看起来就是类似于下面的样子:

Console: Hello World http://www.example.com/hello.html :82

在 各个信息的格式根据Android版本的不同可能看起来会有不同。在Android 2.1及更高,来自于Android Browser的console信息会标记为"browser"。在Android 1.6及更低版本,AndroidBrowser信息则是标记为"WebCore"。

Android的WebKit并没有实现在桌面版浏览器中所实现的所有console API。但是,你可以使用下面的基本的文本日志函数(text logging function):

  • console.log(String)
  • console.info(String)
  • console.warn(String)
  • console.error(String)

其他一些console函数不产生错误,但是它的行为与你在其他web浏览器中预期的行为可能不一样。

在WebView中使用控制台API

如果你在应用中实现了一个定制的WebView , 那么,当你在WebView中调试你的web页面的时候,所有相同的console API也是被支持的。在Android 1.6及更低版本,console信息是自动发送给logcat的,并加上了"WebCore"日志标签。如果你是为Android 2.1(API Level 7)及更高版本开发,那么就必须提供一个实现了onConsoleMessage()  回调方法的WebChromeClient ,以便让console信息显示在logcat中。

另外,在API Level 7中引入的onConsoleMessage(String, int, String) 方法已经弃用了,而在API Level 8中使用的是onConsoleMessage(ConsoleMessage)

无论你是在为Android 2.1(API Level 7) 或 Android 2.2 (API Level 8 或更高)开发,你都需要实现WebChromeClient  并覆盖onConsoleMessage()  回调方法。然后,使用setWebChromeClient() WebChromeClient 应用到你的WebView  中。

如果是使用 API Level 7,那么是使用 onConsoleMessage(String, int, String) 的代码看起来可能是下面这个样子:

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 Level 8或更高版本, 那么你使用 onConsoleMessage(ConsoleMessage) 代码看起来可能是下面的样子:

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;
  }
});

ConsoleMessage  还包括 MessageLevel 来指示出发送的console 信息的类型。你可以通过 messageLevel() 来查询信息层次(message level),以便确定信息重要性,然后再使用合适的Log 方法或采用其他合适的行动。

无论你是使用 onConsoleMessage(String, int, String)  还是 onConsoleMessage(ConsoleMessage) ,当你在web页面中执行一个console方法时,Android会调用合适的 onConsoleMessage() 方法,以便你能报告错误。例如,采用上面的示例代码,一个logcat信息打印出来可能是下面这个样子的:

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

 

原文链接:Debugging Web Apps

 

译文来源:http://www.webapptrend.com/
 WebAppTrend是一个独立的技术博客,关注Web App前瞻和实践,以及智能浏览器发展 

请大家在关注ITeye的同时,关注我们的新浪微博 @WebAppTrend,关注我们的腾讯微博@WebAppTrend,Q Q群见官方博客右侧。
分享到:
评论

相关推荐

    中式汉堡市场调研报告:2023年市场规模约为1890亿元

    汉堡市场调研报告:2023年市场规模约为1890亿元 在快节奏的现代生活中,汉堡以其便捷、快速且标准化的特点,成为了大众日常饮食的重要选择。然而,随着消费者对健康、口味和文化认同感的追求日益提升,传统西式汉堡已难以满足所有消费者的需求。在此背景下,中式汉堡应运而生,以其独特的口味和文化内涵,迅速赢得了市场的青睐。那么,中式汉堡市场究竟蕴含着怎样的增长潜力?又该如何把握这一市场机遇呢? 市场概况: 近年来,中国西式快餐市场规模持续扩大,2023年已达到约3687.8亿元。其中,汉堡作为西式快餐的代表之一,市场规模约为1890亿元,占据了西式快餐最大的市场份额。值得注意的是,中式汉堡品牌异军突起,凭借其独特的口味和文化内涵,迅速在市场上站稳脚跟。截至2024年11月,全国中式汉堡门店数已近2万家,展现出强劲的增长势头。 技术创新与趋势: 中式汉堡的成功,离不开技术创新和趋势把握。一方面,中式汉堡品牌通过结合中式烹饪方式,推出了更符合中国消费者口味的产品,如加入秘制酱料、使用传统烹饪技艺等,使汉堡更加美味可口。另一方面,中式汉堡品牌还注重数智化转型,通过运用大数据、人工智能等先进技术,实现精

    基于MATLAB的导航科学计算库

    * GPS IMU经典15维ESKF松组合 * VRU/AHRS姿态融合算法 * 捷联惯导速度位置姿态解算例子 * UWB IMU紧组合融合 * 每个例子自带数据集

    Docker以及Docker-Compose的安装与卸载

    Docker以及Docker-Compose的安装与卸载 适合开发下运维人员学习

    尚硅谷宋红康C语言精讲.zip

    尚硅谷宋红康C语言精讲.zip

    matlab实现基于多源信息融合的水果虫灾智能检测系统研究-虫灾检测-智能检测系统-matlab-机器学习

    内容概要:本文提出了一种结合生物信息学、遥感技术和物联网技术的水果虫灾智能检测系统。通过收集和分析生物标志物、遥感影像和传感器数据,利用机器学习算法实现对虫灾的自动识别与预警,提高检测的准确性和时效性,为水果种植业的可持续发展提供支持。 适合人群:农业科学家、农艺师、农业技术开发人员。 使用场景及目标:适用于水果种植园的虫害监控,帮助农民及时发现和控制虫灾,减少农业生产损失。 其他说明:该系统不仅提高了虫灾检测的效率,还在一定程度上解决了传统方法耗时费力、准确性低的问题。系统未来将优化数据处理方法、提取更多有效特征,并尝试应用到其他农业领域。

    南平市2005-2024年近20年历史气象数据下载

    南平市2005-2024年近20年的历史气象数据,每3小时更新一次数据,参数包含气温、气压、降水量、云层、能见度、风向、湿度等,几万条数据

    数据结构上机实验大作业-线性表选题.zip

    数据结构上机实验大作业-线性表选题.zip

    弱电人需要的网络基础知识汇总.docx

    弱电人需要的网络基础知识汇总.docx

    生菜生长记录数据集(3K+ 记录,7特征) CSV

    本数据集记录了不同环境条件下植物生长数据信息。分析这些数据可以了解到,随着时间的推移,不同的温度、湿度、pH值和总溶解固体(TDS)等因素如何影响植物的生长发展。 数据说明: Plant_ID 每株植物的标识符 Date 观测日期 Temperature (°C) 温度,以摄氏度为单位 Humidity (%) 湿度水平,以百分比表示 TDS Value (ppm) 总溶解固体值,以百万分之一(ppm)为单位 pH Level 环境的pH值 Growth Days 植物从开始生长到完全长成所需的天数

    字幕网页文字检测20-YOLO(v5至v11)、COCO、CreateML、Paligemma、TFRecord、VOC数据集合集.rar

    字幕网页文字检测20-YOLO(v5至v11)、COCO、CreateML、Paligemma、TFRecord、VOC数据集合集.rarLLCMTVRC-V2 2024-05-04 11:24 PM ============================= *与您的团队在计算机视觉项目上合作 *收集和组织图像 *了解和搜索非结构化图像数据 *注释,创建数据集 *导出,训练和部署计算机视觉模型 *使用主动学习随着时间的推移改善数据集 对于最先进的计算机视觉培训笔记本,您可以与此数据集一起使用 该数据集包括161张图像。 随机文本以可可格式注释。 将以下预处理应用于每个图像: *像素数据的自动取向(带有Exif-Arientation剥离) *调整大小为640x640(拉伸) 应用以下扩展来创建每个源图像的3个版本: *随机裁剪图像的0%至30% * -16至+16度之间的随机旋转 将以下转换应用于每个图像的边界框: *水平的-3°至 +3°之间的随机剪切和-4°至 +4°垂直剪切

    冒泡排序算法解析及优化.md

    冒泡排序

    KeyboardInterrupt.md

    KeyboardInterrupt

    (2147634)经典C程序100例 很经典的例子

    C语言是一种强大的、通用的编程语言,被广泛用于系统编程、应用编程、嵌入式系统以及游戏开发等领域。它的简洁性和高效性使得它成为初学者和专业人士的首选语言。"经典C程序100例"这个资源是学习C语言的一个宝贵资料库,包含了多种常见问题的解决方案和编程技巧。 C语言的基础知识包括变量、数据类型、运算符、流程控制(如if语句、switch语句、循环结构for、while、do-while)以及函数的使用。这些基础知识在每个C程序中都不可或缺。例如,通过学习不同的数据类型(如int、char、float、double等),我们可以理解如何存储和处理不同类型的数据。而流程控制则帮助我们根据条件执行不同的代码段,实现逻辑判断和重复执行。 在C语言中,函数是代码组织的基本单元,可以实现代码复用和模块化。通过阅读和分析100个经典实例,我们可以看到如何定义和调用函数,以及如何传递参数和返回值。此外,指针是C语言的一大特色,它允许我们直接操作内存,提高程序的灵活性和效率。学习如何声明、初始化和使用指针是掌握C语言的关键。 结构体和联合体是C语言中复合数据类型,它们能将多个不同类型的数据组合成一个整体。在经

    时变动态分位数CoVaR、delta-CoVaR,分位数回归 △CoVaR测度 溢出效应 动态 Adrian2016基于分位数回归方法计算动态条件在险价值 R语言代码,代码更数据就能用,需要修改的

    时变动态分位数CoVaR、delta-CoVaR,分位数回归 △CoVaR测度 溢出效应 动态 Adrian2016基于分位数回归方法计算动态条件在险价值。 R语言代码,代码更数据就能用,需要修改的地方都已标明,并且举例怎么修改 每一行代码都有注释,一次可以计算出所有结果,不需要像Eviews一样两两重复计算。 例子为31家金融机构11-22年数据,包含4个宏观状态变量,计算结果见下图。

    基于Bmob校园签到系统全部资料+详细文档+高分项目.zip

    【资源说明】 基于Bmob校园签到系统全部资料+详细文档+高分项目.zip 【备注】 1、该项目是个人高分项目源码,已获导师指导认可通过,答辩评审分达到95分 2、该资源内项目代码都经过测试运行成功,功能ok的情况下才上传的,请放心下载使用! 3、本项目适合计算机相关专业(人工智能、通信工程、自动化、电子信息、物联网等)的在校学生、老师或者企业员工下载使用,也可作为毕业设计、课程设计、作业、项目初期立项演示等,当然也适合小白学习进阶。 4、如果基础还行,可以在此代码基础上进行修改,以实现其他功能,也可直接用于毕设、课设、作业等。 欢迎下载,沟通交流,互相学习,共同进步!

    python编译器Anaconda安装包下载(含各种版本)

    python编译器Anaconda安装包下载(含各种版本)

    冒泡排序算法详解及Java与Python实现

    内容概要:本文详细介绍了冒泡排序的基本原理及其实现方式,并提供了Java和Python两种语言的代码样例。首先解释了冒泡排序的工作机制,即通过重复遍历数组、比较相邻元素并在必要时进行交换来逐步将最大值移动到数组末尾,直至整个数组有序。文中给出的具体实现包括了标记法,可以在当前遍历过程中没有发生任何交换时提前终止排序过程,提高效率。此外,文中还提供了测试用的数据集及打印排序后的结果。 适合人群:适合计算机科学专业的初学者或者对基本排序算法有兴趣的技术人员。 使用场景及目标:可用于教学目的,帮助学生理解和掌握冒泡排序算法的原理及具体编程实现方法;同时,对于有经验的开发者来说,也是一个很好的复习材料。 阅读建议:建议读者跟随文章内容尝试动手实现相应的冒泡排序算法,并理解每一步操作的目的,以加深理解。

    计算机接口实验报告.zip

    计算机接口实验报告,环境:PC 机一台,TD-PITE 实验装置一套。报告内容有,实验目的、实验设备、实验内容、实验步骤、实验程序(汇编)、实验结果、实验总结,一步到位!!!!!! 一步到位!!!!!!

    15 unit 11.mp3

    15 unit 11.mp3

    智慧校园数字孪生,三维可视化

    智慧校园数字孪生,三维可视化

Global site tag (gtag.js) - Google Analytics