在代码签名期间更新Xcode会产生错误“无法在磁盘上找到代码对象”

问题描述 投票:10回答:3

我刚刚更新到最新版本的Xcode,并在运行我们的自动构建脚本时遇到错误(他们使用xcodebuildxcrun命令)。

### Codesigning '/Users/...日志语句之后立即发生错误,如下所示:

Program /usr/bin/codesign returned 1 : [/var/folders/__/63j90nkn2lg18ct1nq791_nc0000gn/T/g5hbigh1tM/Payload/CurrentTarget.app: replacing existing signature
/var/folders/__/63j90nkn2lg18ct1nq791_nc0000gn/T/g5hbigh1tM/Payload/CurrentTarget.app: cannot find code object on disk

我发现文档here列出并简要描述错误,但没有关于如何解决它的细节。

因为我花了很长时间寻找解决方案(S.O.没有)我将在下面发布答案以防其他人遇到同样的问题。

ios xcode code-signing xcodebuild
3个回答
13
投票

值得注意的是,您可能需要更新指定codesign_allocate位置的环境变量:

export CODESIGN_ALLOCATE="/Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/usr/bin/codesign_allocate"

但真正的解决方案来自here

ln -s /usr/bin/codesign_allocate /Applications/Xcode.app/Contents/Developer/usr/bin/codesign_allocate

希望这能节省一些时间......


4
投票

在XCode 4.5(安装在/ Applciations / XCode4_5)上运行构建脚本时出现此错误,最近安装了XCode 5(在/ Applications / XCode的主dev目录中),这样我仍然可以在iOS 6 SDK上定位需要时的旧项目。

我以前通过导出https://stackoverflow.com/a/18768869/72176环境变量将CODESIGN_ALLOCATE中提到的变通方法应用到我的构建脚本中。

在最近这个问题的实例中,我实际上通过删除旧的解决方法来修复它。所以我的建议是:如果你最近收到此错误,并且之前已经应用了解决方法:尝试取消应用它,看看是否有帮助!


1
投票

在更新Xcode 9.3之后,我的两个项目发生了cannot find code object on disk错误。

案例1:发现问题是CODE_SIGN_IDENTITY -

Code Signing Identity

修复是将-更改为特定的东西。

在Xcode项目检查器中,“代码签名标识”变为Don't Code Sign或某些代码签名标识。

因此,CODE_SIGN_IDENTITY "-"成为""(不代码签名)或特定的代码符号标识。

案例2:使用Swift 4.1开发快照工具链时,解决方案是将.xcconfig配置设置文件添加到Xcode项目中。默认的CODESIGN_ALLOCATE设置为swift-4.1-DEVELOPMENT-SNAPSHOT- ... .xctoolchain / usr / bin路径,它不包含codesign_allocate可执行文件。 .xcconfig可以明确地为构建设置CODESIGN_ALLOCATE

example.xcconfig

// file: example.config
CODESIGN_ALLOCATE=/Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/codesign_allocate  
© www.soinside.com 2019 - 2024. All rights reserved.