移动端分为 iOS 和 Android 两端,两个的调试方式不太一样,另外还有调试本地服务器的页面和调试远程服务器上(即线上或者预发地址)的页面。
一、iOS 端调试
硬性要求:macbook电脑、iphone 手机 没有上述设备无法调试,因为电脑我们需要用到 sarifi 浏览器,而且只能是 mac 系统上的 sarifi 浏览器,windows 上的不可以。
1)打开 iphone 的调试功能 操作:设置 - sarifi 浏览器 - 高级,打开 web 检查器 将 web 检查器打开,mac 电脑上的 sarifi 浏览器才可以读取到 iphone 手机上通过 sarifi 打开的页面
2)打开 mac 上 sarifi 的开发者模式 操作:打开 sarifi 浏览器 - 左上角的sarifi浏览器 - 偏好设置 - 高级,勾选底部的在菜单栏中显示“开发”菜单
3)iphone连接电脑 将 iphone 手机通过数据线连接到电脑上,这时候 iTunes 需要打开,允许读取手机(类似这样的提示,设置允许),手机弹出是否信任该设备(类似这样的提示,点击信任),首先得 iTunes 能读取到设备,mac上的 sarifi 浏览器才可以检测到 iphone 上的网页
怎么调试app中的web页面
app 分为 debug 包和 release 包,只有 debug 包才可以调试页面,而平时从应用商店下载的包都是 release 包。因此,要调试app上的web页面,需要你的 iphone 上装有该 app 的 debug 包才可以。 iOS 上所有 app 中带的浏览器都是用的 sarifi 的内核,调试方式跟在 sarifi 中一样。
二、Android 端调试
硬性要求:安卓手机(有 chrome 浏览器),随便什么电脑(有chrome浏览器,有安装 Android adb,或者 Android Studio自带adb,不然无法识别设备)
1)打开 Android 手机的调试功能
打开 设置 - 系统和更新 - 开发人员选项,打开开发人员选项,再打开 USB 调试(华为系统这么操作,其他厂商自行百度怎么打开开发者模式)
2)Android 连接电脑
将 Android 手机通过数据线连接到 USB 上,这时候手机会提示 USB 连接方式,选择传输文件,打开电脑上的 chrome 浏览器,在地址栏中输入 chrome://inspect,可以在面板上看到连接的手机设备(如果没有,请检查电脑的android环境,可能是 adb 有问题,或者自行百度查询原因)
选择要调试的页面,点击 inspect 按钮,将会打开浏览器调试控制台
如果窗口能打开,但界面出不来,那么恭喜你,你被墙了,因为这个调试功能需要请求谷歌的接口,获取你的手机设备对应的调试包,解决方案就是
kexue上网,或者公司有时候开着kexue上网,可以访问部分网站。
怎么调试app中的web页面
app 分为 debug 包和 release 包,只有 debug 包才可以调试页面,而平时从应用商店下载的包都是 release 包。因此,要调试app上的web页面,需要你的 Android手机 上装有该 app 的 debug 包才可以。
国内大部分app的浏览器内核使用的是腾讯的 X5 浏览器内核,得关掉该内核,使用原生浏览器内核才可以在电脑上看到app中的web页面列表。 Android 的 debug 包没有安装数量的限制,只要有 apk 安装包就可以。
三、调试电脑启动的本地服务器页面
对于单页面应用来说,远程服务器上的页面都是混淆压缩后的代码(除非开 source map),不太好查看。或者需要频繁调试某个功能的问题,频繁发预发的方式会让我们效率极其低下。 怎么解决这个问题 -→ 局域网环境。
我们可以使用upload 上传到预发。,然后再http://192.168.153.94:8899/ 挂代理即可,注意使用公司网络,或者使用下面方法
如果电脑和手机在1个局域网中,手机是可以访问电脑上开启的服务器的,手机通过访问电脑的 ip(加上服务器端口) 可以直接访问到电脑上的服务,但有个问题,就是只通过 IP 访问,可能我们在调用后端接口的时候就没有用户登录信息等,这时候可以选择使用代理的方式,mac上用 charles 软件,将 手机上的请求都通过电脑进行代理访问,那么电脑上配置的host也相应地可以对手机生效了。
比如电脑配置本地 host:127.0.0.1 test.jd.com,那么手机访问 test.jd.com,被 charles 进行代理,就会访问到 127.0.0.1 上。
步骤:
1)手机和电脑处于同一个局域网中 公司内部,手机是连接 JD_mobile,电脑是连接 JD,这2个wifi并不是在1个局域网下,因此得将手机和电脑都连到1个wifi下面,因为macbook只有1个无线网口,因此它只能要么连wifi,要么发射1个wifi信号,除非电脑用网线连接上网,才可以把无线网口释放出来用于当wifi发射器。因此建议使用 windows 电脑,由 windows 通过 wifi 软件开启wifii,将macbook电脑和手机都连到这个wifi下面,这样手机和电脑就处于1个局域网了。 如果你是用 windows 电脑开发,那么就直接用 windows 开wifi就可以了,手机连到 windows 开的 wifi 下,windows和手机也是在1个局域网中。 因为前端基本都是用 mac 本,需要开 wifi 的话得找有 windows机的同学。
2)打开 charles 点击顶部菜单的 Proxy,配置 HTTP Proxy 的 port(要代理的端口),比如设置 8888,切到 macOS,勾选 Enable macOS proxy,确认。
一般情况下,这时候 webpack 的热更新是不好使的,当代码改动保存后,需要重新刷新手机上的页面。
windows 上代理用 Fiddler,具体配置自行百度,没怎么用过。
除了上述这种方式,也可以使用 carefree.jd.com/#/introduce… ,carefree,它是实时将本地服务器的文件(chunk包,sourcemap等)上传到远程服务器上,通过访问远程服务器上的地址,也可以进行代码频繁更新调试。 不过这个东西我没装成功,其他人可以试试。