You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何确保macOS键盘与鼠标控制权限在Xcode多次构建中持久生效?

解决macOS下XCode多次构建后SFML程序权限丢失问题

核心原因

macOS的隐私权限(输入监控、鼠标控制等)是和应用的Bundle Identifier、代码签名绑定的。如果每次构建生成的程序没有固定的Bundle ID,或者用了临时签名,系统会把它当成新应用,之前授予的权限自然失效。

XCode配置步骤

1. 固定Bundle Identifier

  • 打开XCode项目,选中目标(Target)后切换到「General」标签页
  • 在「Identity」区块里,设置一个唯一且固定的Bundle Identifier(格式参考com.yourname.yourappname,采用反向域名形式即可)
  • 确保Debug、Release等所有构建配置都使用同一个Bundle ID

2. 配置固定代码签名(Debug模式也需设置)

  • 切换到「Signing & Capabilities」标签页
  • 针对Debug模式:
    • 勾选「Automatically manage signing」,选择你的Apple ID作为团队,XCode会自动生成开发签名
    • 若不想用Apple ID,可自行创建本地签名:打开「钥匙串访问」→ 证书助理→创建证书→选择「Code Signing」类型,命名后生成,再在XCode的签名选项中选择该证书
  • 无论Debug还是Release构建,都要使用固定签名,避免XCode每次生成临时签名

3. 避免Derived Data自动清理(可选)

频繁清理Derived Data可能导致签名缓存失效:

  • 打开XCode顶部菜单「Settings」→「Locations」
  • 找到「Derived Data」,点击箭头打开文件夹,手动管理清理操作,不要让XCode自动频繁删除

4. 完善SFML权限相关的Info.plist配置

SFML 2.6.1在macOS上的权限逻辑有更新,需要在Info.plist中添加权限描述:

  • 输入监控权限:添加NSInputMonitoringUsageDescription,填写清晰的用途说明(比如「需要监控键盘输入以响应游戏操作」)
  • 鼠标控制权限:根据具体操作添加NSAccessibilityUsageDescription或NSDesktopFolderUsageDescription

额外排查动作

  • 每次构建后,右键点击生成的.app文件→「显示包内容」,打开Contents/Info.plist查看CFBundleIdentifier是否与设置的一致
  • 进入「系统设置→隐私与安全性→输入监控」,检查每次构建的.app是否为同一个条目(若出现多个同名条目,说明Bundle ID或签名未固定)
  • 若问题仍存在,在终端执行tccutil reset All com.yourname.yourappname(替换为你的Bundle ID)重置权限,然后重新运行程序并授权

内容的提问来源于stack exchange,提问作者John Ziegler

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.16 20:55:08