移动端WEB真机调试全攻略

简介: H5前端开发者的一大困扰就是网页兼容性问题,而前端调试也有多种方法,包括模拟器,自己连接真机,云真机等。而岩鼠正式提供了完美的云真机方案,赋能前端开发者。

H5前端开发者的一大困扰就是网页兼容性问题,在自己手机上已经完美完成了需求之后,一到验收或者上线,就出现各种兼容引起的bug,要解决还特别曲折,不仅要探索Android和iOS手机的不同调试方式,还要支持在不同浏览器或者APP上调试,极大的影响了开发的效率。

虽然我们也可以通过模拟器进行开发调试,但模拟终究是模拟,在某些场景下真机还是不可或缺,尤其是特定机型版本的问题。

一般情况下,真机Web调试要怎么做呢?

系统自带调试功能

Android

Chrome开发者工具能基本模拟的手机环境,配上各种断点调试,一大利器。除此之外,Chrome有一个调试真机的方法。

具体实现方式:通过USB数据线,将Android手机连接到电脑上,手机用Chrome浏览器打开页面,电脑上也打开Chrome,输入chrome://inspect/ ,进入调试模式,这个时候就能调试页面啦。

优点 可以用chrome强大的调试工具,调试起来十分方便
缺点 1.只支持android;2.只能用手机版chrome(国内大部分App调试的功能都阉割掉了);3.调试起来非常复杂,而且对PC的Chrome版本有依赖

iOS

苹果的产品虽然封闭,但是其还是提供了一些暖心的小功能,方便开发者。

具体的调试方式:打开iPhone手机设置设置 -> Safari -> 高级 -> 打开Web检查器,然后通过数据线将iPhone连接到Mac,电脑和手机同时打开Safari,电脑上Safari打开 开发-iPhone,就能开始调试啦。

优点 快,很流畅,不卡顿
缺点 1.设备最贵;2.只能限制在iOS safari下调试,app内的webview就没办法了

真机平台远程调试

移动端的真机调试,市面上有不少平台支持,但支持WEB调试的几乎没有。岩鼠平台恰好解决了这一问题。
11.gif

双端支持

支持Android海外内热门机型&iOS各大机型的WEB调试。
12.png

原生体验

本地使用devtools调试能支持的功能,岩鼠平台几乎都能支持,并且操作体验也是完全一致。

Andoird除了能使用Chrome调试之外,还能完美支持使用U4内核的APP(例如UC浏览器、夸克、支付宝、淘宝、钉钉等)。
iOS支持Safari/Webview调试, 也支持第三方App调试。

image.png

一键开启

13.png

3种快捷方式,轻松打开网页

  • 通过Scheme适配打开
  • 通过二维码扫描打开
  • 直接选择目标APP打开

技术福利时间

岩鼠平台如何实现web调试能力呢?

Android

Chrome调试的核心原理就是浏览器的内核通过远程调试协议(remote debugging protocol)与前端Devtools的应用程序建立websocket链接传递调试消息。而通过真机平台调试的关键的就是如何发现调试服务,其实就是在真机平台上实现一个浏览器中chrome://inspect的类似服务。完整的实现逻辑可以继续往下看。

建立连接

首先WEB内核会建立一个unix的socket的web服务,这个服务只要建立了实际上都可以通过/proc/net/unix被查询到。例如Chrome发布版本的socket名称就是chrome_devtools_remote。因此通过grep关键词就可以获取到这台手机上所有相关服务,然后通过adb forward实现转发就可以让这个web服务暴露到主机来进行访问了。

访问网页

然后localhost:39222/json就可以访问到具体的网页信息。

[
{

"description": "",
"devtoolsFrontendUrl": "http://.../inspector.html?ws=10.2.35.209:39223/devtools/page/120",
"id": "120",
"title": "百度一下",
"type": "page",
"url": "https://m.baidu.com/?from=844b&vit=fps",
"webSocketDebuggerUrl": "ws://10.2.35.209:39223/devtools/page/120"

}
]

我们还可以通过localhost:39222/json/version获取到应用相关信息。

{
"Android-Package": "com.android.chrome",
"Browser": "Chrome/68.0.3440.91",
"Protocol-Version": "1.3",
"User-Agent": "Mozilla/5.0 (Linux; Android 6.0.1; Nexus 5X Build/MTC20K)...",
"V8-Version": "6.8.275.26",
"WebKit-Version": "537.36 (@8daf58f7f40d22013c59388236c8e71e1117cb2c)",
"webSocketDebuggerUrl": "ws://10.2.35.209:39223/devtools/browser"
}

对接服务

获取到 webSocketDebuggerurl 和前端的 devtools 应用程序进行对接就可以达到开启Chrome调试的效果了。

上面例子 localhost:39222/json 接口返回的 devtoolsFrontendUrl 就是拼接后浏览器访问的最终url了。

兼容性问题

做完整个对接似乎就完工了,但是代码的世界从来没有那么单纯,我们还要解决一个版本兼容性问题。Chrome到现在已经有70多版本了,Devtools也演进了很多,难免会有版本之间协议冲突问题。因此可以看到json中带有对应的devtool-frontend的版本信息,就是为了解决这种问题。

我们发现从Chrome的48到71之间有上万的devtools-frontend版本。所以为了解决数量大的问题我们进行了一定的精简,每个内核版本选取一个对应的该版本最新的devtools前端进行对应,这样就把数量降下来了,当然出现兼容性问题的概率也提高了,如果大家在使用过程发现情况请多多反馈,我们会第一时间跟进处理。

iOS

首先iOS端方面,我们是没有任何办法去修改;其次,修改devtools去适配Safari Debug protocol的话,工作量也是巨大的,也不利于devtools后面的升级。
14.png

为此,我们思考的方案是像 remotedebug-ios-webkit-adapter 那样,做一个中间层,把Safari Debug protocol与Chrome devtools protocol做一次正向与反向的转换,从而达到我们的目的。

通过实现协议转换后, 我们不仅能使用devtools去调试iOS中的网页, 甚至还可以支持到大部分基于Chrome Devtools Protocol的自动化框架。

iOS特性与第三方App支持

当前iOS能否调试手机中的某个app, 是依赖证书去做判断的, 如果手机中需要调试的app是developer证书, 则Safari中会把所有可调试的网页或者JSContext全部列出来, 用户选择对应的网页或者JSContext调试.

而现在通过岩鼠平台的iPhone云真机做Web调试的话, 用户只需要上传ipa后, 我们都会使用developer证书重签名, 所以无论是Safari还是任何一个第三方的app, 都可以直接使用岩鼠提供的Web调试.

调试依赖javascript的客户端框架(Weex、React Native), 现在市面上iOS绝大部分依赖javascript的框架, JS引擎都是使用苹果自导的JavascriptCore.framework。

免费体验岩鼠WEB调试

相关文章
|
7月前
|
前端开发 JavaScript
Web前端之移动端课程开发之06.bootstrap
Web前端之移动端课程开发之06.bootstrap
74 0
|
5月前
|
开发框架 JSON API
震撼发布!Python Web开发框架下的RESTful API设计全攻略,让数据交互更自由!
【7月更文挑战第22天】在Python Web开发中,设计高效的RESTful API涉及选择框架(如Flask或Django)、明确资源及使用HTTP方法(GET, POST, PUT, DELETE)来操作数据。响应格式通常是JSON,错误处理也很重要。示例展示了使用Flask创建图书管理API,包括版本控制、文档化、安全性和性能优化是最佳实践。这样的API使数据交互更顺畅。
98 2
|
5月前
|
Web App开发
软件开发常见流程之移动端调试方法,利用Chrome(谷歌浏览器)的模拟手机调试,搭建本地Web服务器,手机和服务器在一个局域网,通过手机访问服务器,使用服务器,利用ip实现域名访问
软件开发常见流程之移动端调试方法,利用Chrome(谷歌浏览器)的模拟手机调试,搭建本地Web服务器,手机和服务器在一个局域网,通过手机访问服务器,使用服务器,利用ip实现域名访问
|
6月前
|
前端开发 数据库 Python
Django入门全攻略:从零搭建你的第一个Web项目
Django入门全攻略:从零搭建你的第一个Web项目
|
7月前
|
开发框架 中间件 数据库
Django 框架入门全攻略:轻松构建 Web 应用
【5月更文挑战第18天】本文是 Django 入门教程,介绍了如何使用 Django 构建 Web 应用。内容包括安装、项目与应用创建、模型定义、数据库迁移、视图编写、路由配置、模板系统、表单处理和中间件的使用。通过实例展示了 Django 基本流程,帮助初学者快速上手。Django 提供高效工具,便于开发者聚焦业务逻辑,轻松构建功能丰富的 Web 应用。
109 5
|
7月前
|
前端开发 Java 数据库
Java Web开发全攻略:构建高性能Web应用
【4月更文挑战第2天】Java Web开发围绕Servlet和JSP展开,结合Spring/Spring Boot、Struts2、Hibernate等框架构建高性能应用。数据库选择和优化、前端技术如Angular/React/Vue.js以及CI/CD实践是关键。从电子商务到企业系统,Java Web技术为企业与用户互动提供强大平台。持续学习和适应新技术,以应对Web开发挑战。
242 1
Java Web开发全攻略:构建高性能Web应用
|
7月前
|
编解码 前端开发 JavaScript
【Web 前端】移动端适配方案有哪些?
【4月更文挑战第22天】【Web 前端】移动端适配方案有哪些?
|
7月前
|
应用服务中间件 Linux Apache
阿里云服务器Linux一键安装web环境全攻略
阿里云服务器Linux一键安装web环境全攻略
|
7月前
|
编解码 前端开发 UED
Web前端开发中的移动端适配与响应式设计
【2月更文挑战第11天】 对于现代 Web 前端开发而言,移动端适配与响应式设计是至关重要的技术环节。移动设备的普及使得用户更多地通过手机或平板设备访问网站,因此,如何有效地适配各种屏幕尺寸并提供良好的用户体验成为了前端开发者需要面对的重要问题。本文将介绍移动端适配与响应式设计的基本原理,并结合实际案例探讨其在前端开发中的应用。
|
Dubbo Java 应用服务中间件
基于 Triple 实现 Web 移动端后端全面打通
基于 Triple 实现 Web 移动端后端全面打通
40728 18