自动允许应用程序(由Xcode构建和运行)控制您的计算机

时间:2019-07-05 03:27:36

标签: xcode root cgeventtap

我正在用Xcode / ObjC开发辅助MacOS应用。

它使用事件流来拦截击键。

当我从Xcode运行它时,我得到:

<input type="text" autoFocus='true' />
<input type="text" autoFocus={true} />
<input type="text" autoFocus />

我必须像这样去2019-07-05 06:20:32.423783+0300 mapper[8108:1191874] unable to create event tap. must run as root or add privileges for assistive devices to this app. 2019-07-05 06:20:32.423809+0300 mapper[8108:1191874] No Event tap in place! You will need to call listen after tapEvents to get events.

enter image description here

每次我修改一行代码并再次运行时,我都必须经历此检查和取消检查的过程。

这是一个非常笨拙的开发周期。

有什么办法可以避免这种情况?

1 个答案:

答案 0 :(得分:0)

该项目使用的是具有4年历史的Xcode项目文件。

从新的 Cocoa App 模板开始并复制文件,在我第一次构建和运行时,现在会自动显示:

enter image description here

...,将我带到首选项窗格和上一个屏幕截图。随后的重建 NOT 不需要切换此对话框中的设置。仅当我“清理构建文件夹”时,此过程才会重复。

我的猜测是,行为的改善可能是因为新项目是从 Cocoa App 模板派生的(该模板从NSApplicationDelegate继承了其基础对象,而旧项目则是从 Commandline App 模板(我不得不使用CFRunloop手动管理运行循环)。

Getting mouse coordinates on Mojave包含一个答案,其中提供了有关如何在授权中添加一行的说明。plist:

  

允许应用程序使用Accessibility API的权利是com.apple.private.tcc.allow权利(值为kTCCServiceAccessibility)。您可能会从名称中猜到它仅在Apple签名的二进制文件中被允许。