其他xcode iphone项目成功签名后,codesign才成功

Posted

技术标签:

【中文标题】其他xcode iphone项目成功签名后,codesign才成功【英文标题】:Codesign only succeeds after other xcode iphone project is successfully signed 【发布时间】:2009-12-11 21:01:35 【问题描述】:

我有一个奇怪的问题。 Codesign拒绝签我这个大项目A项目,但签了另一个项目B。但是,当我签了项目B时,它也能一下子签项目A。我100%确定我没有改变任何其他东西。我采取的步骤是:

尝试构建,签署 A - 签署失败 尝试构建,签署 B - 成功 尝试构建,签署 A - 成功

成绩单:

CodeSign build/Debug-iphoneos/CPPlayer.app
cd /用户/昵称/CPPlayer
setenv CODESIGN_ALLOCATE /Developer/Platforms/iPhoneOS.platform/Developer/usr/bin/codesign_allocate
setenv PATH "/Developer/Platforms/iPhoneOS.platform/Developer/usr/bin:/Developer/usr/bin:/usr/bin:/bin:/usr/sbin:/sbin"
/usr/bin/codesign -f -s "iPhone 开发者:Nick Overdijk (PM7C8QKTYS)" --resource-rules=/Users/nick/CPPlayer/build/Debug-iphoneos/CPPlayer.app/ResourceRules.plist --entitlements /用户/nick/CPPlayer/build/CPPlayer.build/Debug-iphoneos/CPPlayer.build/CPPlayer.xcent /Users/nick/CPPlayer/build/Debug-iphoneos/CPPlayer.app

/Users/nick/CPPlayer/build/Debug-iphoneos/CPPlayer.app:目标文件格式无效或不合适
命令 /usr/bin/codedesign 失败,退出代码为 1

图片中:See here (imageshack gallery)

有什么我可能错过的吗?任何想法如何发生?我现在一切正常,这似乎可以解决我的问题,但我想了解发生了什么。

有时它也可以这样工作: 构建/签署 A - 成功 构建/签署 A - 失败 构建/签署 B - 成功(B 似乎总是成功) 构建/签署 A - 成功 构建/签署 A - 失败

因此,在每次成功构建 A 之后,我必须构建并签署 B 才能再次签署项目 A。我可以连续多次重建项目B,它总是成功的。

我不确定它是否重要,但当我尝试在模拟器中运行它(iPhone OS 3.1.2 的调试模式)时,它也无法相互安装。所以:

构建/运行 - 失败 构建/运行 - 作品 构建/运行 - 失败 构建/运行 - 工作

这仅适用于项目 A,我可以根据需要多次构建和运行项目 B,我从未收到安装失败的消息。

提前致谢, 尼克

【问题讨论】:

检查概览弹出窗口,查看您是否为第一个项目配置了多个设备。如果您这样做,则一台设备可能与您的配置文件/签名证书匹配,而另一台不匹配,并且第二个项目配置为正确的设备并将其设置为您的活动设备。此外,将鼠标悬停在 Codesign 步骤的右边缘,显示成绩单,然后复制并粘贴它也会有所帮助。 谢谢!我不知道有这样的按钮。成绩单在原帖中。除了项目名称外,概述没有任何区别,它们都是为同名的 iPod 签名的。 【参考方案1】:

问题可能是 info.plist 文件太多。

我遇到了同样的问题(交替设计成功和失败)。

我在我的项目中添加了一个源代码目录,在该目录中添加了“添加现有文件”。结果发现目录中有一个 info.plist 文件,所以我的项目中现在有 2 个。我删除了新的并从项目中移除,我的问题就解决了。

【讨论】:

你是我的英雄!非常感谢,确实是这样。我正计划制作目标,所以在“目标目录”中包含了一个 Info.plist,但后来我没有创建目标,所以我确实有一个 Info.plist 和一些其他 Info.plist(使用其他名称,但我设置了 xcode将该文件用作 Info.plist)。谢谢一堆。 :) 你也是我的英雄!它对我有用。非常感谢老兄! 我不知道为什么要创建另一个文件,例如 MyApp-Info.plist。谢谢!【参考方案2】:

我还在为“命令 /usr/bin/codesign 失败,退出代码 1”错误消息而苦苦挣扎。

我是这样解决的

右键单击info.plist查看它的目标。确保左侧的框未选中。这是默认状态。

定位文件不适用于 info.plist。

【讨论】:

这正是 XCode 4 中问题的解决方案!删除目标->构建阶段->复制捆绑资源下的plist。 这也是我的解决方案。我认为新的 Xcode 4.2“清理设置”功能向我的两个目标添加了一个 Info.plist,必须撤消此更改。【参考方案3】:

搜索具体的错误信息

object file format invalid or unsuitable

我得到了这些链接:

http://www.galloway.me.uk/2009/04/json-framework-codesign-object-file-format-invalid-or-unsuitable/

这表明您的 ResourceRules.plist 设置不正确。该解决方案似乎已经帮助很多人解决了这个问题。

【讨论】:

抱歉,这不起作用。还是同样的问题。工作一次,然后我必须再次重建/签署另一个项目(B)。项目 B 是一个 iPhone 应用程序,它显示一个带有 1 个可单击单元格的表格视图,单击该单元格时,会将视图更改为另一个视图。真的是一个教程程序。那里没有什么花哨的。 我不知道它是否有趣,但我也可以模拟项目,只尝试构建和运行两次。它彼此失败。原帖中解释得更清楚。 谢谢我解决了我的问题。【参考方案4】:

这个问题发生在我身上,尝试了证书、配置文件、清理和重新启动的所有组合,令人沮丧的是该死的系统并没有告诉你问题是什么。让我继续猜测。我的解决方案是上面引用的文章。

“可执行文件名称”必须与“产品名称”匹配

真的救了我在这里找到这个。谢谢。

【讨论】:

【参考方案5】:

确保您的目标中没有多个 Info.plist 文件!

【讨论】:

以上是关于其他xcode iphone项目成功签名后,codesign才成功的主要内容,如果未能解决你的问题,请参考以下文章

无法在 iPad 上启动 Xcode 应用程序而无需代码签名,在 iPhone 上可以

在 iPhone 上测试 Xcode 项目

xcodebuild:使用升级到 XCode 8.1 后出现“需要代码签名”错误

无法修复签名问题 Xcode 7.3.1

Xcode6:嵌入式二进制文件未使用与父应用程序相同的证书进行签名

如何在带有 ios 7.0.2 的 iphone 5 上运行 xcode 5 项目