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

Automatically allow app (built & run by Xcode) to control your computer

我正在 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-year-old Xcode 项目文件。

从一个新的 Cocoa 应用程序 模板开始并将文件复制进去,我第一次构建 运行 我现在会自动看到:

... 这会将我带到首选项窗格和上一个屏幕截图。后续重建 NOT 需要在此对话框中切换设置。只有当我 "Clean Build Folder" 时,这个过程才会重复。

我的猜测是改进的行为可能是因为新项目派生自 Cocoa App 模板(它从 NSApplicationDelegate,而旧的继承自 Commandline App 模板(我不得不使用 CFRunloop 手动管理 运行 循环)。

Getting mouse coordinates on Mojave 包含一个答案,提供有关如何向 entitlements.plist:

添加行的说明

The entitlement that allows an application to use the Accessibility API is the com.apple.private.tcc.allow entitlement (with a value of kTCCServiceAccessibility). As you can probably guess from the name it is only allowed on Apple signed binaries.