xcode - 无法启动 Xcode 内置的 macOS 应用程序

标签 xcode macos macos-high-sierra

我在 Xcode 中以 Release模式构建了一个应用程序。使用有效的开发人员 ID 证书签名。该应用程序在某些 MacBook 上运行良好。
但在另一次启动失败并出现错误

The application %name% can't be opened.





然后我尝试从终端启动它 open命令它说

LSOpenURLsWithRole() failed with error -54 for the file /Applications/Gaetano Lunches.app.



然后我尝试从包内容直接启动二进制文件
它说

-bash: /Applications/Gaetano Lunches.app/Contents/MacOS/Gaetano Lunches: Operation not permitted



在所有 MacBooks 上都允许从 Anywhere 安装应用程序。 spctl-master 被禁用。文件权限正确。但该应用程序无法启动。

最佳答案

我不知道你是如何构建你的应用程序的,但如果 LSOpenURLsWithRole正在返回 permError = -54 ,这意味着您在打开文件时遇到权限错误。这可能意味着很多事情,但在 Release模式下构建应用程序不再是 Apple 建议您做的事情。 Apple 更喜欢您使用 存档 然后将应用程序导出到管理器中以供用户使用。通过使用此工作流程,通常您可以使用 Xcode 默认设置来构建应用程序。如果不这样做,那么您需要更加谨慎地选择在 Release模式下构建的设置。

对于快速而肮脏的方法,我会尝试以下方法:

1)打开终端

2) 类型:chmod +x "/Applications/Gaetano Lunches.app/Contents/MacOS/Gaetano Lunches"
3)尝试启动您的应用程序,看看它是否有帮助。如果有帮助,则说明您的build设置存在问题,即无法在某处更改文件权限以使您的可执行文件具有正确的启动权限。

您可以尝试的另一件事是查看您的应用程序是否被 Gatekeeper 列入黑名单,因为它以某种方式确定您的应用程序在您自己的系统上做了可疑的事情。如果是这种情况,那么您可以试试这个,看看网守正在评估什么:

spctl -a "/Applications/Gaetano Lunches.app"

如果由于某种奇怪的原因您的应用程序被 Gatekeeper 列入黑名单,您可以随时手动添加您的应用程序并将其列入 Gatekeeper 的白名单:
spctl --add "/Applications/Gaetano Lunches.app"

如果一切都失败了,您可以尝试重置整个数据库,但您将需要 super 用户访问权限:
sudo spctl --reset-default

但是,我认为这些只是快速修复,如果您一直需要这样做,是因为必须调整 Xcode 中的build设置。更多关于,如果这些解决方案中的任何一个有效。让我知道。

关于xcode - 无法启动 Xcode 内置的 macOS 应用程序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56951001/

相关文章:

objective-c - 设置背景图像尺寸 IOS

swift - 在 SKScene 上叠加 SKScene

Angular 不断自动重新加载

ios - 我可以使用Xcode 9和macOS Mojave将应用程序上传到iOS AppStore吗?

ios - 如何在较新的 Xcode 上安装较旧的 iOS 运行时?

macos - 启用 security.authorization 的 Mongodb 启动错误

bash - osx 星期一日期本周 bash

c++ - Apple C++ LLVM 编译器 4.x 和 UNICODE : when needed? UNICODE 是默认编译器字符集吗?使您的代码同时编译 ANSI 和 UNICODE 版本

macos - 升级到10.13 high-sierra后Meld无法启动

MySQL 错误 : Authentication plugin 'caching_sha2_password' cannot be loaded