在 macOS 应用程序中使用 Safari 调试 JavaScriptCore
Posted
技术标签:
【中文标题】在 macOS 应用程序中使用 Safari 调试 JavaScriptCore【英文标题】:Debugging JavaScriptCore with Safari, in macOS app 【发布时间】:2018-12-09 19:31:49 【问题描述】:我为 OSX 制作了一个简单的 Hello World 应用程序,它使用 C-API 创建一个上下文组、一个上下文、运行一个脚本并调用我自己的函数,一切都很好。
但我不能做的是让我的 app/JSContext 出现在 Safari 的可检查应用程序列表中。 (它只是空的)
我不知道这是否应该是自动的,或者我是否需要在上下文、VM 等中启用某些东西(在文档、标题中找不到任何关于可调试/可检查的引用)
这个项目声称可以做到(基于 wiki 中的屏幕截图),但查看代码我看不到任何特定的配置选项、设置等 https://github.com/kasper/phoenix
这个答案表明 ios 应用程序需要签名...... macOS 应用程序也需要签名吗? Safari: no Inspectable applications
使用 Xcode 10B61、Safari 11.1.2、OSX 10.13.6
有人用 Safari 调试过 macOS 应用吗?
【问题讨论】:
该项目作者的一些跟进; twitter.com/kasper/status/1080507639451340800I was wondering how to get it working myself as well, but it just automatically started working after building with some specific Xcode 9 version. The app is indeed signed with a Developer ID certificate, but it doesn’t seem to be clear whether this is a requirement or not.
【参考方案1】:
我使用我的 Apple Dev 帐户签署了该应用程序,(在发布此问题后,我出于不同的原因对其进行了更新),它出现在 Safari 中(并且中断了,让我调试)并且运行良好!
【讨论】:
【参考方案2】:如果您希望您发布的应用程序(即不在 Xcode 的调试器中运行)能够在运行 JSC 代码时使用 Safari Web Inspector 调试器,您需要将com.apple.security.get-task-allow
添加到您的权利中。
警告:您无法获得具有经 Apple 公证的该权利的应用。
这意味着您可能必须同时提供一个没有 JS 调试的公证应用程序和一个允许调试的没有公证的应用程序。
【讨论】:
以上是关于在 macOS 应用程序中使用 Safari 调试 JavaScriptCore的主要内容,如果未能解决你的问题,请参考以下文章
如何在没有 macOS 应用程序的情况下开发 Safari 应用程序扩展?
如何在 iOS 和 macOS 上的 Safari 中使用网络摄像头录制视频?