移动开发远程调试

部分浏览器远程调试

各个浏览器远程调试及其所用工具如下表所示:

平台 浏览器 连接方式 使用ADB 调试工具
IOS Safari(mac) 数据线 Inspector
Android Android Chrome 数据线 内置 Inspect
Android Firefox For Mobile 数据线 FireFox原生调试工具
Android UC开发这工具 数据线 Inspector

ADB

在使用firefox和UC浏览器调试时,需要用USB连接设备,并使用adb方式连接。简要的介绍一下adb吧:ADB = Android Debug Bridge,即调试桥,为安卓机器的调试工具。把 adb.exe及dll 放入系统路径中,即可以在CMD/terminal中使用adb命令了。adb forward = 端口映射,提供透明socket通信。

点此下载

ADB的使用中,端口有可能有冲突,windows端的命令如下:

  • 查看使用了5037端口的进程pid:netstat –ano | findstr "5037"
  • 根据pid查看进程:tasklist/fi "pid eq 进程的pid"
  • 强制关闭进程:taskkill /f /pid 进程的pid

腾讯手机助手、360手机助手、豌豆荚等手机管理软件都会使用adb来进行手机的管理,因此调试前应先关闭这些软件,节约时间。

使用Chrome远程调试Chrome浏览器

可以测试WebView,允许在调试时自动做port-forwarding,可以不用刷机,不用改hosts。

准备远程调试

  • 对于web页面的:Android 4.0+ ,并在Android设备上安装chrome浏览器。
  • 对于Android Apps:Android 4.4+ 和调试做需要的网页视图配置
  • USB线用于接入你的Android设备
  • 开发设备上需安装Chrome32 以后的版本
  • 在中国你还需要翻墙

具体步骤

  1. 在安卓设备上设置允许USB调试

     勾选  设置>开发者选项>USB调试
    

2.调试页面上确认USB设备已经接入

    调试页面打开方式 chrome菜单中>工具>检查设备

3.通过USB链接你的设备

如果你在windows上进行开发,为你的设备安装设备USB驱动,在chrome 开发者网站上查找驱动OEM USB 驱动

4.调试远程的web 视图
当你连接好你的设备后,每当你打开一个可调式页面时,在调试页面会展示移动设备上的每一个链接。
点击inspect按钮,你可以打开对应页面的开发这工具。
可以使用输入框来在手机上打开对应的网站

5.调试未发布的页面
打开本地服务器,把移动设备和开发设备连入同一个无线网络,之后将使用ip方式访问页面,进行调试。

调试小贴士

1.通过调试工具使用F5可以远程刷新页面

2.当查看网络瀑布图的时候,要保证移动设备处于真实的网络环境即是在的3G或2G网络环境下。

3.移动设备上的硬件通常加载你的页面内容慢一些,因此使用Timeline 来分析优化渲染和对CPU性能的影响。

说明

  1. 关闭调试工具窗口不会影响到你的远程设备。

  2. Chrome会使你的移动设备在调试时免于受到自动锁屏的影响,但是你需要知道虽然这个很实用,他也会让你的设备的安全性降低。

  3. 你可能会注意到允许你进行远程调试的开发这工具版本与你开发机上的版本不相同,这是因为该工具是与在Android上chrome版本是一致的。

  4. 如果遇到页面白板问题,尝试着将手机和桌面的Chrome都更到最新吧,并尝试着使用桌面端的chrome://inspect/#devices打开并刷新页面,然后打开Inspector。如果还是不可以,多半是因为翻墙不成功。

调试webviews

从安卓4.4版本以后,可以通过开发者工具调试原生安卓设备中页面。调试webView和调试chrome很相似,除了在Chrome中设置允许USB web调试设置以外。

调试WebView中的内容,你需要通过setWebContentDebuggingEnabled来保证设备的可编程性,他是WebView类中的一个静态方法。

if(Build.VERSION.SDK_INT >= Build.VERSION_CODES.KITKAT) {
        WebView.setWebContentsDebuggingEnabled(true);
    }

这个设置应用于所有设备的webViews,要注意的是网页调试不受设备说明中的调试标志状态的影响。如果你想当调试标志为true的时候才能进行调试,测试标志当运行的时候。

if(Build.VERSION.SDK_INT >= Build.VERSION_CODES.KITKAT) {
    if ( 0 != ( getApplcationInfo().flags &= ApplicationInfo.FLAG_DEBUGGABLE ) ) {
        WebView.setWebContentsDebuggingEnabled(true);
    }
}

在开发工具中打开一个webView

到inspect页面中可以看到一系列的可调式WebViews,同时还有形象的表示WebViews的大小和相对设备屏幕的位置,如果你的webViews有标题位,这些也会显示。在你想要调试的webViews上点击inspect,使用开发者工具像你想象那样远程调试浏览器页面。

端口转发

通常,你有一个网络服务器在本地开发机上,你希望设备上可以链接到这个站点上。如果移动设备和开发机连入一个网络,这是很简单就能实现的。但是有的时候这个也很难做到,譬如在被限制的公司网络上。

Android版本的chrome支持端口转发使得这个工作变得很简单,他通过在移动设备上生成一个可以映射到开发机上特定TCP端口的TCP端口监听器。信息通过被转发的端口在USB上传输,因此他不依靠于移动设备的网络进行配置。

启用端口转发

这一步建立在你已完成远程调试配置并且可以运转,在你的开发机上的Chrome中配置。

  1. 打开chrome://inspect
  2. 打开位于顶部的端口转发按钮
  3. 在设备端口空中,键入android设备监听的端口号码
  4. 在host空中,添加网络应用运行的IP地址以及端口号,这个地址可以是你开发机上的任何可访问的本地地址。当前,这个被限制在1024和65535之间。
  5. 确保你勾选开启端口转发。

在chrome页面你可以看到代表的你的端口转发成功的绿色圆圈。现在,在Open Tab处键入你的本地URL并且在你的移动设备上打开。

你能够看到你开发机上的内容。

虚拟主机映射
远程调试和ADB
更多

UC浏览器

UC开发者中心,可以获取到你感兴趣的开发工具的相关内容,也可以观看具体参考手册

构建Weinre调试服务器

在使用webkit内核的移动端浏览器(比如海豚浏览器等),还可以使用Weinre来进行远程调试,而调试的方法是构建一个调试服务器。Weinre代表We b In spector Re mote,是一种远程调试工具。举个例子,在电脑上可以即时 的更改手机上对应网页的页面元素、样式表,或是查看Javascript变量,同时还可以看到手机上页面的错误和警告信息.

Weinre作为一种远程调试工具,在结构上分为三层:

目标页面(target):被调试的页面,页面已嵌入weinre的远程js,下文会介绍;
Debug客户端(client):本地的Web Inspector调试客户端;
Debug服务端(agent):一个HTTP Server,为目标页面与Debug客户端建立通信。

获取Weinre

在任何的支持 Node.js 环境的系统下通过包管理器(npm)即可安装Weinre

<code>npm -g install weinre

使用Weinre进行远程调试

1.启动 WeinreDe bug 服务端

weinre --httpPort 8080 --boundHost -all-

2.通过PC浏览器(WebKit内核)打开WeinreDe bug 客户端
Open in your pc browser http://localhost[Your IP]:8080

  1. 在你需要调试的页面上加上通信用的脚本
    <script src="http://localhost[Your IP]:8080/target/target-script-min.js#anonymous"></script>
  2. 在手机上访问你的测试页面,在电脑上进入到WeinreDe bug客户端看是否通信成功,如果一切没问题
    Open in your pc browser http://localhost[Your IP]:8080/client/#anonymous
  3. 最后跟平时一样实时调试页面
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 202,905评论 5 476
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 85,140评论 2 379
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 149,791评论 0 335
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 54,483评论 1 273
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 63,476评论 5 364
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 48,516评论 1 281
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 37,905评论 3 395
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,560评论 0 256
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 40,778评论 1 296
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,557评论 2 319
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,635评论 1 329
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,338评论 4 318
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 38,925评论 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 29,898评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,142评论 1 259
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 42,818评论 2 349
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 42,347评论 2 342

推荐阅读更多精彩内容