iPhone Codeign目标文件格式无效或不合适

时间:2011-01-30 11:50:52

标签: iphone codesign

我在xcode中意外删除了我的目标。

所以我创建了一个名称完全相同的新文件。在目标设置中,我再次选择了正确的代码签名身份

但现在我再也无法为设备编译了。一旦我想建立,我得到:

CodeSign build/Release-iphoneos/myApp.app
....somestuff....
/Volumes/XCodeProj/myApp/build/Release-iphoneos/myApp.app: object file format invalid or unsuitable
Connad /usr/bin/codesign failed with exit code 1

我已经尝试过清理目标了。 什么可能导致这个问题,以及如何解决它?

17 个答案:

答案 0 :(得分:78)

您的安装也可能是一个问题。 Symlinking到最新的codesign_allocate清除了我的问题:

sudo mv /usr/bin/codesign_allocate /usr/bin/codesign_allocate_old
sudo ln -s /Developer/Platforms/iPhoneOS.platform/Developer/usr/bin/codesign_allocate /usr/bin

答案 1 :(得分:52)

在Mountain Lion中,您可以尝试在代码签名

之前运行此功能
export CODESIGN_ALLOCATE="/Applications/Xcode.app/Contents/Developer/usr/bin/codesign_allocate"

答案 2 :(得分:42)

确保目标的info.plist中的“可执行文件名称”(CFBundleExecutable)条目与目标设置中指定的“产品名称”匹配。

答案 3 :(得分:10)

当我尝试从终端进行协同设置时,我遇到了这个问题。卸载Xcode 3.0后,我刚刚安装了Xcode 4.4。查看Xcode首选项中的下载,并注意到尚未安装命令行工具。我安装后修复了我的问题。考虑到这里的解决方案,我猜这个问题会更复杂,但这可能是未来用户想要在他们开始深入探讨之前要检查的问题。

答案 4 :(得分:7)

对我来说,这是在升级到XCode 4.5之后发生的。

解决方案只是转到首选项/下载并安装最新的命令行工具。

答案 5 :(得分:4)

以为我也会为这个问题添加我的解决方案......我已经在这个问题上苦苦挣扎了几个星期......检查了上述所有解决方案并进行了更多更改。

我的解决方案在目标build settings中。

我选择了armv6armv7两个选项。我把它改回了normal的一个条目并且它已经构建了!

build settings

答案 6 :(得分:4)

我有同样的问题,试过各种构建设置GCC4.0的,搜索路径等等等等,它原来是无关的我的情况下构建设置的问题是我加一个点的目标名称即我被靶向V3.0 SDK所以我称为目标Granade3.0。

我开始名为“Grenade3zero”一个全新的项目,进口从原来的,固定的appdelegate名称的来源,以匹配项目名称等建立和去加载它第一次到设备和模拟器也很好,当我检查。看起来像某些字符的目标名称非法!

答案 7 :(得分:3)

emcmanus的回答对我有用,但由于Xcode 4.3现在安装在Applications文件夹中,我删除了旧的/ Developer文件夹,我不得不改变codesign_allocate的路径:

sudo mv /usr/bin/codesign_allocate /usr/bin/codesign_allocate_old
sudo ln -s /Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/usr/bin/codesign_allocate /usr/bin

答案 8 :(得分:2)

我尝试了以上所有方面都无济于事。对我有用的是将以下内容添加到我的构建脚本中:

  

出口   CODESIGN_ALLOCATE = “/应用/ Xcode.app /内容/开发者的/ usr /斌/ codesign_allocate”

我在研究我的问题时遇到过这篇文章: http://mobiledevelopertips.com/mac-osx/code-signing-error-object-file-format-unrecognized-invalid-or-unsuitable.html

答案 9 :(得分:2)

在开始签名过程之前对Mountain Lion请在第一个命令下运行以下命令。

对于Xcode 4.x: export CODESIGN_ALLOCATE =“/ Applications / Xcode.app / Contents / Developer / usr / bin / codesign_allocate”

对于XCode 5: export CODESIGN_ALLOCATE =“/ Applications / Xcode.app / Contents / Developer / Toolchains / XcodeDefault.xctoolchain / usr / bin / codesign_allocate”

答案 10 :(得分:1)

在没有任何命令行实用程序的Mountain Lion和Xcode 5.x.x上运行的Jenkins面临类似的问题。 因为命令行实用程序现在与Xcode 5.1.x捆绑在一起

以下工作

sudo ln -s /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/codesign_allocate /usr/bin/

答案 11 :(得分:1)

  1. 转到'构建设置'
  2. 转到'构建选项'标签
  3. 在构建选项标签内,找到'调试信息格式'并从'DWARF'中改变它的价值。使用dSYM文件'到' DWARF。应该在下拉列表中。
  4. 它适用于你们。

答案 12 :(得分:0)

如果您的应用在目标版本设置的产品名称中包含特殊字符,请将其删除。

例如,将“Mat的应用程序”重命名为“Mats app”,它将构建。您当然可以在显示名称中包含特殊字符。

答案 13 :(得分:0)

我也有同样的问题,原因是我的应用目标链接到静态库并且没有提供自己的源文件(所有源都在库中,而应用目标只提供了资源)。一旦我将其中一个源从库中移出到应用程序目标,它就修复了代码签名错误。

答案 14 :(得分:0)

我认为这是由Xcode DP之一(开发者预览版)引起的。 它可以将默认的Xcode.app路径更改为Xcode DP。

因此,U可以通过xcode-select --print-path

检查Xcode路径

如果U有一个错误的目录,那么U可以通过xcode-select --switch

更改路径

检查这个帖子。 change xcrun developer path

答案 15 :(得分:0)

最好使用xcrun来定位codeign_allocate的正确版本,因为它可能会有所不同,具体取决于它是OS X二进制文件还是iOS。

这也允许Apple在不破坏脚本的情况下更改各种工具的位置。

使用类似:

export CODESIGN_ALLOCATE=$(xcrun --sdk iphoneos --find codesign_allocate)

答案 16 :(得分:0)

尝试使用我公司从不同于Apple的根证书颁发机构购买的数字证书签署我的OS / X(非iOS)应用程序时,我会收到错误消息。每当我通过Safari下载证书时都会出现此问题。使用Firefox下载证书帮助我摆脱了错误。