题 iOS远程调试


随着最近发布的Chrome for iOS,我想知道如何为Chrome iOS启用远程调试?

更新:随着iOS 6的发布,现在可以完成远程调试 苹果浏览器


170
2018-06-29 12:58


起源


现在可以使用Mac上的Safari进行远程调试。但是如果你在Linux或Windows上进行开发,你仍然必须使用weinre(如gregers回答中所述)。 - Dehalion
使用Safari进行远程调试仅支持Mobile Safari,而不支持iOS Chrome。 - Matt Jensen


答案:


更新:

这是  最好的答案,请关注 gregers'建议。

新答案:

使用 Weinre

老答案:

您现在可以使用Safari进行远程调试。但它需要iOS 6。

这是一个快速翻译 http://html5-mobile.de/blog/ios6-remote-debugging-web-inspector

  1. 通过USB将您的iDevice与Mac连接
  2. 在Mac上打开Safari并激活开发工具
  3. 在您的iDevice上:转到设置> safari>高级并激活Web检查器
  4. 使用您的iDevice访问任何网站
  5. 在Mac上:打开开发人员菜单,然后从iDevice中选择该站点(在顶部的Safari菜单中)

正如所指出的那样 西蒙斯回答 需要关闭隐私浏览才能进行远程调试。

设置> Safari>私密浏览>关闭


101
2017-09-26 17:23



是的,我已经在使用这个了。最后!虽然Safari的Windows版本没有它,但很糟糕。 - Hyangelo
我希望Chrome能够尽快启用相同功能,以便适用于所有操作系统。 - F Lekschas
对于iOS 7,您需要安装Safari 6.1才能使用远程调试,现在只能为开发人员使用,并且至少需要OS X 10.7: developer.apple.com/downloads/index.action?name=Safari%206.1 - AvL
是的 - 如果这回答了被问到的问题,那肯定会很好! - Irene Knapp
不再需要关闭私人浏览。 - Miles


所选答案仅适用于Safari。目前,无法在iOS上的Chrome中进行真正的远程调试,但与大多数移动浏览器一样,您可以使用 WeInRe 一些简单的调试。设置有点工作,但是让你检查DOM,看样式,改变DOM和玩控制台。

enter image description here

建立:

  • 安装 的NodeJS
  • npm install -g weinre
  • weinre --boundHost -all-
  • 打开http:// {wifi-ip-address}:8080 /并复制目标脚本代码
  • 将脚本标记粘贴到您的页面中(或使用书签)
  • 单击调试客户端用户界面的链接(http:// {wifi-ip-address}:8080 / client / #anonymous)
  • 当你得到一条绿线 客户端 浏览器已连接

小书签有点麻烦安装。如果您为桌面和移动Chrome启用了书签同步,这是最简单的。从本地weinre服务器复制bookmarklet url(与上面相同)。不幸的是它不起作用,因为它没有正确编码。所以打开JavaScript控制台并输入:

copy(encodeURI('')); // paste bookmarklet inside quotes

您现在应该在剪贴板中有url编码的书签。将其粘贴到新书签下 移动书签。称之为weinre或简单的输入。它应该非常快速地同步到您的移动设备,因此请加载您要检查的页面。然后在url-bar中输入书签名称,您应该将bookmarklet视为自动完成建议。单击它以运行bookmarklet代码:)

enter image description here


203
2018-02-26 16:33



这是唯一正确的答案,所有其他与Safari有关(在公园散步) - Michael Freeman
非常有用的说明!我只想补充一点,要安装书签,而不是复制,您只需将提供的“weinre目标调试”书签链接拖到书签工具栏(使工具栏可见 Ctrl-Shift-B 如果它不可见)。 - Kai Carver
我需要在安装书签后刷新浏览器才能使其正常工作。 - ooolala
npm install -g weinre 不适合我。所以我不得不用版本运行它 npm install -g weinre@2.0.0-pre-I0Z7U9OV。在这里查看最新版本 npmjs.com/package/weinre。 - vinesh
您的手机和电脑必须在同一个网络上吗?我注意到第4个子弹点需要wifi-ip - user95227


您目前无法直接在iOS上远程调试Chrome。它使用的uiWebView可能与Mobile Safari略有不同。

你有几个选择。

选项1: 使用Safari的检查器远程调试Mobile Safari。 如果您的问题在Mobile Safari中重现,这绝对是最好的方法。事实上,通过iOS模拟器更容易。

选项2: 使用Weinre可以获得精简的调试体验  Weinre没有太多功能,但有时它足够好。

选项3:远程调试功能相同的uiWebView。

这是最好的方法。你需要 安装XCode

  1. github.com/paulirish/iOS-WebView-App 和“下载Zip”或克隆。
  2. 打开XCode,打开现有项目,然后选择刚刚下载的项目。
  3. 打开WebViewAppDelegate.m并更改 urlString 是您要测试的URL。
  4. 在iOS模拟器中运行该应用程序。
  5. 打开Safari,打开 发展 菜单,选择 iOS模拟器 并选择您的webview。
  6. Safari Inspector现在将检查您的uiWebView。

enter image description here

enter image description here

enter image description here


46
2017-09-12 22:22



如何使用chrome检查Windows上的iOS(iPhone / iPad)?那有什么方法吗? - Surjith S M
@SurjithSM这个答案对Windows不起作用,而你无法在Windows上安装XCode并创建ios应用程序。试试这个 stackoverflow.com/a/22047495/1737158 - Lukas
我已经有过经验了 github.com/google/ios-webkit-debug-proxy 这是一个很棒的工具,昨天尝试用iOS模拟器调试谷歌Chrome - 这是最棒的体验。感谢#3 - Oleg Andreyev


根据我的理解,谷歌Chrome使用iOS的UIWebView,而不是像Android版本那样完整的Chrome实现。


9
2017-07-20 04:32



是的,在我提出这个问题后发现了。对苹果来说真的很遗憾。我对这个问题持开放态度,因为有人想出办法来做到这一点。 - Hyangelo


许多远程控制台工作正常。 http://farjs.com 是我的项目,我能够成功调试特定于Crome iOS的问题,而不是在使用它的safari中发生。 (可能还有其他所有移动浏览器)

问题是注入调试代码有点棘手,因为Chrome不允许您安装bookmarklet。

相反,您可以打开要调试的页面上的一个选项卡,然后在farjs.com上打开另一个选项卡,然后单击“书签”

复制bookmarklet JS代码,返回第一个选项卡,使用应调试的页面,并将bookmarklet代码粘贴到位置栏中。

最后一步是滚动到位置栏的开头并添加“javascript:”,因为Chrome会将其删除。


4
2017-09-25 01:10





我没试过,但是 iOS WebKit调试代理 (ios_webkit_debug_proxy / iwdp)据说可以让你远程调试UIWebView。来自README.md

ios_webkit_debug_proxy(又名iwdp)允许开发人员进行检查   MobileSafari和 UIWebViews中 上 真实 并通过模拟iOS设备   Chrome DevTools用户界面和Chrome远程调试协议。 DevTools   请求被转换为Apple的远程Web检查器服务   调用。


3
2017-10-26 11:45



理论上通过以下方式实现对Chrome webview的支持: github.com/RemoteDebug/remotedebug-ios-webkit-adapter 它建立在iOS webkit调试代理之上。到目前为止,我自己在这个项目上取得了有限的成功,但我希望它会变得更好。 - Matt Jensen


我建议 Vorlon像weinre一样工作。我喜欢Vorlon的UI,它支持 SSL,我的应用程序是在HTTPS,我试过weinre与ngrok,ghostlab和vorlon,只有vorlon工作正常。


3
2018-04-10 02:17





您还需要关闭“私密浏览”功能。

设置> Safari>私密浏览>关闭


2
2018-03-15 09:14



不确定为什么ppl downvote这个答案。确实要关闭私人浏览以允许远程调试。 - basecode
@basecode因为它是一个补充答案,它应该在评论中。 - GusDeCooL
@GusDeCooL我明白了,谢谢!由downvoter发表的评论解释了这一点会有所帮助。 - basecode
不再是真的了。 - Miles