Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

iOS 模拟器调试大法了解一下? #13

Open
imwebteam opened this issue Nov 8, 2018 · 0 comments
Open

iOS 模拟器调试大法了解一下? #13

imwebteam opened this issue Nov 8, 2018 · 0 comments

Comments

@imwebteam
Copy link
Contributor

本文作者:IMWeb HuQingyang 原文出处:IMWeb社区 未经同意,禁止转载

前段时间,老板说:iPhone 又出了那么多新机型,你搞下兼容吧。我:测试机呢?老板说:没有。我:???

image4

这让我十分为难,毕竟巧妇难为无米之炊,于是我只好使出绝招:模拟器大法!

一. 安装 & 启动

首先需要安装 Xcode,安装完毕后,在终端中运行 xcode-select --install安装 Command-line-tools。

安装完毕后搜索Simulator,或者按 Command+Shift+G, 输入/Applications/Xcode.app/Contents/Developer/Applications/Simulator.app,便可运行模拟器。

你也可以使用命令行来管理和启动模拟器:

  • 运行 xcrun instruments -s 列出可用的 iOS 模拟器:
  • 运行 xcrun instruments -w XXX 启动模拟器

image6

Simulator 默认只有最新的 iOS 版本的模拟器,如果你需要在老版本的 iOS 上调试,可以这样安装更多版本。

  • 首先进入设备管理:

image8

  • 点击左下角的加号,选择 Download more simulator runtime

image10

二. 配置代理

我们在调试的时候,需要把模拟器的网络请求代理到我们的 dev-server。这里大力推荐使用强大的Whistle配合Proxifier来实现。

首先安装 Whitle,运行w2 start,访问 http://127.0.0.1:8899,配置好 dev-server 的代理。

然后运行 Proxifier,把模拟器请求转发的 Whistle。
首先添加一条 Action 规则代理到本地8899端口:

image12

然后新建一个规则,把Simulator; "Xcode Server Builder”; "MobileSafari”; “com.apple.WebKit.Networking”;添加到 Applications:

image14

这时,在模拟器中访问我们要调试的页面,检查一下 Whistle,请求都走到本地,代理配置成功!

image16

PS:第一次使用 Whistle 代理时需要安装并信任证书,具体参考 Whistle 文档

三. 开始调试

  • 首先在模拟器中启动 Safari,打开调试的页面
  • 然后在 Mac 上启动 Safari,在首选项中启用开发菜单

image19

  • 模拟器访问需要调试的页面,在开发菜单中找到我们的页面:

image21

  • 就可以愉快的玩耍了!

image23

四. WebView 调试

除了直接调试 Safari 中的页面,我们还可以借助模拟器调试 APP 中的 Web 页面。可以在 APP 中直接打断点、走单步调试等等,从此跟 eruda 等手动打 log 的调试器说拜拜~

首先我们需要客户端同学给模拟器打一个.app包,把包拖到模拟器安装。然后启动 APP,访问要调试的 Web 页面,如法炮制,如图,就可以愉快的玩耍了~

image25

PS: 打给 iPhone 的 .app 包不能直接给模拟器使用(会闪退),因为模拟器是运行在 X86 指令集上的,需要专门打包。

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

1 participant