【问题标题】:Xcode 11.2.1 - Command CodeSign failed with a nonzero exit codeXcode 11.2.1 - 命令 CodeSign 失败,退出代码为非零
【发布时间】:2020-04-02 20:02:02
【问题描述】:

我正在使用最新的 Xcode 版本为 macOS 开发 SFML 应用程序。

当它尝试签署 SFML 框架时,我收到了 "Command CodeSign failed with a nonzero exit code" 错误。我在构建阶段下的 Target 中的“Link Binary with Libraries”和“Copy Files”下添加了这些。之前,我在 /Library/Frameworks 下使用我的本地框架,并且运行良好。

现在我需要创建一个存档.app。 我已经尝试了很多在其他帖子上看到的东西(比如锁定和解锁我的钥匙串),但没有任何效果。还是有这个错误。

“将二进制文件与库链接”中的我的 SFML 框架

/Users/lounesksouri/Library/Developer/Xcode/DerivedData/Squadro-gqwjbvsooypqaifxxyzhdrahkdpo/Build/Intermediates.noindex/ArchiveIntermediates/Squadro/InstallationBuildProductsLocation/Applications/Squadro.app/Contents/Frameworks/sfml-system.framework/Versions/ A:捆绑格式无法识别、无效或不合适

Command CodeSign 失败,退出代码非零

【问题讨论】:

  • Embed Frameworks 区域下有你的框架吗?检查这个stackoverflow.com/a/52787285/1040347
  • @AlekseyPotapov 我看过这篇文章,我认为 General 标签下的“Frameworks, Libraries, and Embedded Content” 是完全一样的(在我的 Xcode 版本中,没有“Embed Framework” Builder Phases 选项卡中的区域),所以是的,我的所有框架都列在本节中...
  • 确认一下,Targets/Build Phases/Embedded Frameworks 下有你的 sfml 框架吗?
  • 您是否尝试删除 ~/Library/Developer/Xcode/DerivedData/ 下的派生数据? (xcode 应该关闭)通过终端命令rm -rf ~/Library/Developer/Xcode/DerivedData/*
  • @AlekseyPotapov 是的,我确实尝试了很多次来删除派生数据。而且我没有Targets/Build Phases/Embedded Frameworks 部分

标签: xcode macos sfml code-signing


【解决方案1】:

好的,经过很长时间,我解决了我的问题。

使用Build Phases 选项卡中已经存在的脚本要简单得多,如果您使用SFML App Xcode 模板生成(请参阅here 原始脚本)。一开始我试过了,但没有成功,所以我放弃了。

但是,在这个脚本中,对于在 macOS 上正常安装 SFML 来说,前三行并不是很好的。我们需要用Frameworkslib文件夹的好路径修改这些行,如下:

SFML_DEPENDENCIES_INSTALL_PREFIX="/Library/Frameworks"
CMAKE_INSTALL_FRAMEWORK_PREFIX="/Library/Frameworks"
CMAKE_INSTALL_LIB_PREFIX="/usr/local/lib"
FRAMEWORKS_FULL_PATH="$BUILT_PRODUCTS_DIR/$FRAMEWORKS_FOLDER_PATH/"

其次,仍然存在代码签名问题:存档将创建,但如果我们启动.app,则会收到错误消息。这个问题的解决方法是勾选Target/Signing & Capabilities下的Disable Library Validation,允许应用到load plug-ins or frameworks signed by other developers

最后,如果我们创建存档并启动应用程序,一切都会按计划正常进行。

【讨论】:

  • 这部分对我帮助很大,对于代码签名,我刚刚以我的身份退出了 SFML 库。 (见下面我的回答)
  • 谢谢。如果仍然有问题,您可能还需要更改一件事。在 Build Settings->Other Code Signing Flags 下为所选版本(调试或发布)的 Any SDK 变体输入 --deep
【解决方案2】:

我在 Xcode 的新更新中遇到了这个问题。我正在阅读您的讨论,并进行了一些意外修改。我绝对不是专家,但我做了什么解决了这个问题,所以我不再收到 tgis 错误。所以我添加了 sfml 库(5 个库),其路径写在构建设置 -> 框架 swarch 路径中。并且此添加会自动将它们添加到“构建阶段”部分下的“嵌入式框架”中。我所做的是取消选中所有 5 个库“代码签名副本”的复选框。谢谢你们给我“解决”问题的途径:))))

【讨论】:

  • 不客气,如果答案对你有用,别忘了点赞?
  • 此行为不允许信任您的设备并且您的应用未安装..
【解决方案3】:

对于代码签名问题:

  1. 打开终端,
  2. 转到框架文件夹 (cd /Library/Frameworks) 并唱歌。
  3. 选择您的身份
security find-identity -vp codesigning
  1. 签署他们的框架!
codesign -s AD90FAFAFAFAFAFAFAF-YOURHASH-9D6 ogg.framework
codesign ... all the others
  1. 奔跑吧,尽情享受吧!

【讨论】:

    猜你喜欢
    • 2019-07-29
    • 1970-01-01
    • 2019-02-24
    • 2021-08-28
    • 2020-03-30
    • 1970-01-01
    • 1970-01-01
    • 2023-03-27
    • 2021-07-21
    相关资源
    最近更新 更多