iOS远程调试


199

在最近发布的iOS版Chrome浏览器中,我想知道如何为Chrome iOS启用远程调试?

更新:随着iOS 6的发布,现在可以使用Safari进行远程调试。


2
现在可以使用Mac上的Safari进行远程调试。但是,如果您是在Linux或Windows上进行开发,则仍然必须使用weinre(如gregers回答所述)。
Dehalion

3
使用Safari进行远程调试仅支持Mobile Safari,不支持iOS Chrome。
马特·延森

Answers:


111

更新:

不再是最佳答案,请遵循格雷格斯的建议。

新答案:

使用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菜单)中选择网站。

正如Simons指出的那样,需要关闭私有浏览才能使远程调试工作。

设置> Safari>私人浏览>关


11
是的,我已经在用这个了。最后!糟糕的是,Windows版本的Safari却没有它。
Hyangelo 2012年

5
我希望Chrome能够尽快启用相同的功能,以便它能在所有操作系统上正常工作。
F Lekschas 2012年

49
是的-如果它回答了所提出的问题,那肯定会很好!
艾琳·纳普

4
不再需要关闭私人浏览。
英里

3
拒绝投票的理由:问题要求使用Chrome,而不是Safari。
NickG

230

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

在此处输入图片说明

建立:

  • 安装nodejs
  • npm install -g weinre
  • weinre --boundHost -all-
  • 打开http:// {wifi-ip-address}:8080 /并复制目标脚本代码
  • 将脚本标签粘贴到您的页面中(或使用小书签)
  • 单击指向调试客户端用户界面的链接(http:// {wifi-ip-address}:8080 / client /#anonymous)
  • 当您在“ 客户端 ” 下看到绿线时,浏览器已连接

小书签安装起来有点麻烦。如果您同时为台式机和移动版Chrome打开了书签同步功能,这是最简单的方法。从本地weinre服务器复制小书签网址(与上面相同)。不幸的是,它不能正常工作,因为它没有正确的url编码。因此,打开JavaScript控制台并输入:

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

现在,您应该在剪贴板中有url编码的书签。将其粘贴到“ 移动书签”下的新书签中。称它为weinre或简单键入的内容。它应该非常快地同步到您的手机,因此加载您要检查的页面。然后,在网址栏中输入书签名称,您应该将小书签视为自动完成建议。单击它以运行bookmarklet代码:)

在此处输入图片说明


27
这是唯一正确的答案,所有其他答案都与Safari(在公园散步)有关
Mars Robertson

2
非常有用的指示!我将添加它,以安装小书签,而不是进行复制,您只需将提供的“ weinre target debug”小书签链接拖动到书签工具栏即可(Ctrl-Shift-B如果不可见,则使该工具栏可见)。
凯·卡弗

安装书签后,我需要刷新浏览器才能正常工作。
ooolala 2015年

npm install -g weinre不是为我工作。所以我必须在版本中运行它npm install -g weinre@2.0.0-pre-I0Z7U9OV。在此处检查最新版本npmjs.com/package/weinre
vinesh'1

1
FWIW,Weinre当前不支持影子dom-它仅显示顶层元素及其轻度dom。除了顶级元素及其阴影域(以及轻度dom)以外,它也不适用于阴影域。
马克斯·沃特曼

52

您目前无法在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 Simulator”,然后选择您的Webview。
  6. Safari检查器现在将检查您的uiWebView。

在此处输入图片说明

在此处输入图片说明

在此处输入图片说明


7
如何使用Chrome在Windows上检查iOS(iPhone / iPad)?有什么办法吗?
Surjith SM 2015年

@SurjithSM当您无法在Windows上安装XCode并创建ios应用程序时,此答案对Windows无效。改用此方法stackoverflow.com/a/22047495/1737158
Lukas Liesis

我已经在github.com/google/ios-webkit-debug-proxy这个工具上有丰富的经验,昨天我尝试使用iOS Emulator调试Google Chrome-这是最了不起的经验。感谢#3
Oleg Andreyev

10

据我了解,谷歌浏览器利用的是iOS的UIWebView,而不是像Android那样完全实现Chrome的实现。


1
是的,我提出这个问题后才发现。这真是对苹果的耻辱。我没有解决这个问题,因为有人想出一种解决方法。
Hyangelo

4

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

问题在于,由于Chrome不允许您安装书签,因此注入调试代码会有些棘手。

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

复制小书签JS代码,返回第一个选项卡,其中包含应调试的页面,然后将小书签代码粘贴到位置栏中。

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


4

我推荐Vorlon,就像weinre一样。我喜欢Vorlon的UI,它支持SSL,我的应用程序在HTTPS中,我尝试使用ngrok,ghostlab和vorlon进行测试,只有vorlon可以正常工作。


3

我还没有尝试过,但是可以通过iOS WebKit调试代理(ios_webkit_debug_proxy / iwdp)远程调试UIWebView。从README.md

ios_webkit_debug_proxy(aka iwdp)允许开发人员通过Chrome DevTools UI和Chrome远程调试协议在真实和模拟的iOS设备上检查MobileSafari和UIWebViews。DevTools请求被转换为Apple的Remote Web Inspector服务调用。


1
理论上,可通过以下方式实现对Chrome Webview的支持:github.com/RemoteDebug/remotedebug-ios-webkit-adapter,它基于iOS webkit调试代理构建。到目前为止,我自己在该项目上取得的成功有限,但我希望它会变得更好。
马特·詹森

3

Vorlon.JS可用于iOS或任何其他客户端的远程调试。

  1. 只需使用全局安装 npm i -g vorlon
  2. 使用启动服务器 vorlon
  3. 在服务器运行的情况下,在浏览器中打开http:// localhost:1337以查看Vorlon.JS仪表板
  4. 最后一步是通过将以下脚本标记添加到您的应用程序来启用Vorlon.JS:
    <script src="http://<yourExternalIP>:1337/vorlon.js"></script>
  5. 所有连接的客户端(例如iPhone,Android)将在Vorlon.JS仪表板上的客户端列表中可用 在此处输入图片说明

请注意,此方法还可用于使用ngrok调试不在本地主机上运行的应用程序。有关详细信息,请参见https://stackoverflow.com/a/45443203/2073920

免责声明

我只是一个用户,与Vorlon.JS和ngrok没有关系


我遵循了所有步骤,但是在Mac上运行的VorlonJS中未检测到iPhone的外观
Amarjit Singh,

2

您还需要关闭“私人浏览”。

设置> Safari>私人浏览>关


不知道为什么要请plv这个答案。确实需要关闭私人浏览以允许远程调试。
13年

14
@basecode,因为它是补充回答,应该在注释中。
GusDeCooL 2013年

2
@GusDeCooL我明白了,谢谢!下选民的评论对此进行了解释将很有帮助。
2013年

0

甚至我都在寻找相同的功能,而到今天为止,它尚未实现。我可以想到两个选择,

  1. 我注意到Chrome和Safari的行为完全相同。Chrome甚至支持陀螺仪和Safari支持的其他相关事件。我目前正在通过在Safari上启用调试控制台来调试Web应用程序(通过设置-> Safari)

  2. 也可以尝试使用Adobe Shadow,它可以进行远程调试/检查和同步。

HTH。


0

Adobe Edge Inspect(https://creative.adobe.com/products/inspect)是调试所有移动设备IOS和Android(尽管没有Windows Phone)的另一种方法。它使用weinre进行远程DOM检查/更改。它不是最快的方法,但是可以在Windows上运行。


Adobe Creative Cloud中不再列出Adobe Edge Inspect。请参阅adobe.com/products/edge-inspect.html
罗恩·英巴尔

是的,尽管您已不再开发它,但仍可以通过当前订阅下载它。在此处查看操作方法:helpx.adobe.com/creative-cloud/kb/…–
HumbleBeginnings

但是,iOS应用程序不再可用。仍然可以在Android上运行,但不再支持iOS:itunes.apple.com/app/id498621426
bg17aw


0

我正在使用remotedebug-ios-webkit-adapter,在Windows 10的Chrome中打开的IOS和调试器对我来说效果很好。

如果能帮助到某个链接,我们将很高兴


0

注意:我与Ghostlab创作者Vanamco没有任何隶属关系。

能够调试特定于Chrome的问题对我来说很重要,因此我开始寻找可以帮助我解决问题的方法。我最终开心地把钱扔到了Ghostlab 3上。我可以像在台式机上一样浏览Chrome和Safari移动浏览器。它只是给我一个局域网地址,供我要调试的任何设备使用。使用该地址的每个应用程序都将出现在Ghostlab的列表中。

在此处输入图片说明

在此处输入图片说明

强烈推荐。


-2

打开Safari桌面iOS

开发->响应式设计模式

点击设备下的“其他”

粘贴以下内容:Mozilla / 5.0(iPad; CPU OS 10_2_1,例如Mac OS X)AppleWebKit / 602.1.50(KHTML,例如Gecko)CriOS / 56.0.2924.79 Mobile / 14D27 Safari / 602.1

使用Safari检查工具。


-3

免责声明:我在BrowserStack工作。[确认]是否可以发布此信息(我可以建议正在使用该公司的产品吗?


在iOS上调试Safari(目前不支持Chrome浏览器,有关更多详细信息,请提前阅读。)

如何运作?

  • 您需要在BrowserStack上的任何真实设备(有模拟器,但您需要在真实设备上开始会话)上启动会话,例如iPhone 6S-Safari / Chrome(尚无针对Chrome的devtools,但已在我们的路线图中)
  • 输入网址
  • 您可以触发DevTools来检查在BrowserStacks远程设备上打开的网页。我已经分享了以下相同的屏幕。

在真实电话中使用DevTools

就像桌面浏览器devtools一样,将鼠标悬停在元素上,编辑HTML,CSS。

真实电话上的DevTools,可调试响应式网站。


使用DevTools在真实电话中执行JavaScript

切换至Console标签页,执行JavaScript代码,检查console.log()输出等...

使用devtools在真实电话中执行JavaScript


网络标签,检查请求标头,响应等...

网络标签以检查请求


是否在BrowserStack上支持DevTools?

  • DevTools可用于:

    • 真实设备-iOS-Safari(适用于iOS Chrome的DevTools已列入我们的路线图)
    • 真实设备-Android-Chrome(目前只有Android设备支持Chrome)
  • 客户端浏览器必须是Chrome或Firefox。这意味着您需要在MacOSX或Windows上使用Chrome或Firefox浏览器才能使用BrowserStack Real Device DevTools。

注意:您需要购买在所有真实设备上进行测试的计划,作为免费用户,您将获得几个Real Android设备(包括平板电脑)和几个Real iOS设备(包括平板电脑)。此外,强调“ 真实设备 ”一词因为它们也提供模拟器。

有关更多详细信息,请参阅“ 移动功能”页面上的DevTools部分。


3
他要求在iOS上调试Chrome。我是一家浏览器堆栈客户,并且拥有Mac,因此可以在iOS上调试Safari,但是chrome确实无法进行远程调试
fabs

@fabs我们已经在路线图上了。另外,我提到它仅适用于Safari-iOS设备和适用于Android设备的Chrome :)
Alien先生

对于布局问题,这不是问题,因为两种浏览器的布局引擎都是webkit。与本地服务器测试功能结合使用,不需要任何其他设置即可调试本地主机。
Tim Vermaelen

1
答案无论如何都不能解决问题。虽然Browserstack确实提供了出色的服务,但这个答案完全不在主题范围之内。
马特·詹森
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.