1

我正在 Xcode / ObjC 中开发一个辅助 MacOS 应用程序。

它使用事件点击拦截击键。

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

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.

我必须去system preferences -> security & privacy -> privacy -> {unlock the padlock putting my admin password} -> {locate, uncheck and recheck my executable from the list},像这样:

在此处输入图像描述

每次修改一行代码,再次运行,都要经过这个检查和取消检查的过程。

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

有没有办法避免这种情况?

4

1 回答 1

0

这个项目使用了一个有 4 年历史的 Xcode 项目文件。

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

在此处输入图像描述

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

我的猜测是改进的行为可能是因为新项目是从Cocoa App模板派生NSApplicationDelegate的(它继承了它的基础对象从)。

在 Mojave 上获取鼠标坐标包含一个答案,提供有关如何向 entitlements.plist 添加行的说明:

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

于 2019-07-08T05:09:25.913 回答