自动允许应用程序(由 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.
我正在 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.