助力软件开发企业降本增效 PHP / java源码系统,只需一次付费,代码终身使用! 广告
#代码调试与兼容性测试 --- 对于移动端,调试代码一直是一个比较麻烦的问题,现在常用的调试方式,有以下几种: 对于纯前端的代码,可以在浏览器进行模拟开发,调试还是比较方便的。但是部分机型定位问题需要真机定位,有什么好的办法了。 **<font color=red>对于部分需要真机调试有没有什么好的办法了??</font>** ####1. IOS 移动端 (Safari开发者工具) 手机端:设置 → Safari → 高级 → Web 检查器 → 开。 ![](https://box.kancloud.cn/4c4f859e43765b30abb4006d4ed51940_320x275.jpg) mac端:Safari → 偏好设置 → 高级 → 在菜单栏中显示“开发”菜单。 ![](https://box.kancloud.cn/d31b1d97b827fc7f73de1591df55dcd6_740x380.jpg) 在 OS X 中启动 Safari 之后,以 USB 电缆正常接入 iOS 设备,并在此移动设备上启动 Safari。此时点击计算机上的 Safari 菜单中的“开发”,可以看到有 iOS 设备的名称显示,其子菜单项即为移动设备上 Safari 的所有标签页,点击任意一个开始调试。 ![](https://box.kancloud.cn/80881f0667add9308ad1e0c6bfd021d9_960x540.jpg) --- <br> ####2. 安卓移动端 * **chrome 调试方法** 首先确保手机上和PC机上装有最新版本的chrome浏览器,其次是将手机的开发者选项打开并允许调试,然后将数据线将两台设备连接起来。在PC机上打开chorme,输入chrome://inspect ,然后在手机上打开chrome,然后手机会弹框询问是否允许调试,当然确定啦。有时候手机锁屏会断开,请拔掉usb重来。 ![](https://box.kancloud.cn/93a2d9ab64133092939225cae2960432_500x288.jpg) 点击inspect打开DevTools后,你可以选中页面中的DOM元素,同时设备中对应元素也高亮显示,也可使用DevTools中的Inspect Element 选中目标元素,可以实时与移动设备页面交互,方便的定位问题所在,进行代码调试,就能像pc端一样愉快的玩耍了。如果有问题,请检查chrome版本。 ![](https://box.kancloud.cn/93a2d9ab64133092939225cae2960432_500x288.jpg) chrome的调试一般只可以调试chrome页面,但是其官方文档说还可以调试WebViews: “On your computer, the chrome://inspect page displays every connected device, along with its open tabs and debug-enabled WebViews.” 需要说明调试WebView需要满足安卓系统版本为Android 4.4+,并且需要再你的APP内配置相应的代码,在WebView类中调用静态方法setWebContentsDebuggingEnabled,如下: ~~~javascript if (Build.VERSION.SDK_INT >=Build.VERSION_CODES.KITKAT) { WebView.setWebContentsDebuggingEnabled(true); } ~~~ 以上配置方法适用于安卓应用内所有的WebView情形。 安卓WebView是否可调试并不取决于应用中manifest的标志变量debuggable,如果你想只在debuggable为true时候允许WebView远程调试,请使用以下代码段: ~~~javascript if (Build.VERSION.SDK_INT>= Build.VERSION_CODES.KITKAT) { if (0 != (getApplicationInfo().flags &=ApplicationInfo.FLAG_DEBUGGABLE{ WebView.setWebContentsDebuggingEnabled(true); } } ~~~ 我这里只写了个大概,如果有其他问题或者欲查看详细文档,看下面链接(自备梯子): https://developer.chrome.com/devtools/docs/remote-debugging 注意:同样的你也可以在电脑上装安卓的虚拟机,推荐[Genymotion](http://www.genymotion.net/) ,一样的,想测什么版本,就自己下rom ,当然土豪当我没说。 <br> * **UC开发者浏览器** 由于不推荐移动端使用UC,所以我只简单说一下,如果是在有兴趣,请自行查看: http://plus.uc.cn/document/webapp/doc5.html 它的调试方法与chrome差异不大。 <br> <br> ###客户端调试 最麻烦的还是调试客户端代码以及基于微信开发的代码(现在微信已经有了web开发者工具:[微信web开发者工具](https://mp.weixin.qq.com/wiki/10/e5f772f4521da17fa0d7304f68b97d7e.html)) 那么对于客户端方式有什么好的办法了?? <br> ####alert方式: 这是最low的方式,却也是最有效的方法,通过不断的alert,最后找到出错的代码位置。 <br> ####利用JS原生的捕获代码: * 利用window.onerror方法 ~~~javascript window.onerror = function(errorMessage,scriptURI,lineNumber,columnNumber,error) { alert( "真不幸,又出错了\n" + "\n错误信息:" + errorMessage + "\n所在文件:" + scriptURI + "\n错误行号:" + lineNumber + "\n错误列号:" + columnNumber ); }; ~~~ * 利用try-catch方法 将可能报错的代码放入try代码块中,如果报错,就在catch中捕获错误 ~~~javascript try { // 在这里运行代码 } catch(err) { // 在这里捕获并处理错误 } ~~~ <br> ####利用Rosin插件 利用Fiddler抓包,并通过Rosin获取调试信息 Rosin是一个Fiddler插件,协助开发者进行移动端页面开发调试,是移动端web开发、调试利器。 具体使用方法见插件地址:http://alloyteam.github.io/Rosin/ <br> ####利用vConsole调试面板 vConsole 是一个网页前端调试面板,专为手机 web 页面量身设计,帮助开发者更为便捷地进行开发调试工作。 具体使用方法见插件地址:https://github.com/WechatFE/vConsole <br> ####使用 Weinre 调试 该方法是比较老的一种方法,对于其他的调试方法来说属于刀耕火种型的。weinre是一个调试包,本身提供一个JavaScript,需要你在项目文件中加入该js。首先安装Weinre,我们用nodejs安装之,使用-g全局命令,以便可以在各个目录下访问: >npm install -g weinre ![](https://box.kancloud.cn/f754666e4ef3a58d882bd0c82fbcfa02_500x282.jpg) 安装weinre之后再设置监听本机的ip: > weinre --boundHost xxxxxxxxxxx ![](https://box.kancloud.cn/e50c5fb046bf70aef392ad6f58986cdd_500x55.jpg) 然后打开返回的地址的说明文档,然后把返回的js写入到调试的文档中,注意我箭头所指向的地方。 这样访问页面的时候,加载这个 JS,就会被 Weinre 监听到进行控制。 小提示:这个 JS 后面的 #anonymous 起到一个标识作用,为了区别,我们可以将其修改成 #test 放到页面中。这时候,我们的 Inspect 面板的地址就不是 http://172.16.0.2:8080/client/#anonymous 了,而是 http://172.16.0.2:8080/client/#test 。 当我们访问页面的时候,就会出现在监听列表中,如果有多个网页,你可以从列表中选择一个。然后就可以使用后面的 Elements、Console 等面板来进行调试操作了: ![](https://box.kancloud.cn/a3cfa71ffc6274b5025ca746cef62f4a_500x389.jpg) ![](https://box.kancloud.cn/4580950a2713bdbedd883b98b26c4891_500x435.jpg) Weinre 非常灵活,只需要在页面中加载这个 JS,然后访问即可,因此 WebView 可以用这种方法调试,一些低版本的 Android、iOS 也可以支持,Window Phone 也是可以用的。在调试移动设备时你可能需要在本地搭建一个局域网 IP 的服务器,将设备与本机网络连接成一个局域网,用移动设备访问这个网页即可。 当然 Weinre 也不是万能的,相比 Chrome 的调试工具,它缺少 JavaScript debug 以及 Profiles 等常用功能,但是它兼容性强,可以实现基础调试功能。