Codesign only succeeds after other xcode iphone project is successfully signed

余生颓废 提交于 2019-12-06 06:11:27

问题


I have a weird issue. Codesign refuses to sign this big project I have, project A, but does signs the other, project B. However, when I have signed project B, it also can sign project A all of a sudden. I am 100% certain I didn't change anything else. The steps I took were:

Try to build, sign A - fails on signing
Try to build, sign B - succeeds
Try to build, sign A - succeeds

Transcript:

CodeSign build/Debug-iphoneos/CPPlayer.app
cd /Users/nick/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 Developer: Nick Overdijk (PM7C8QKTYS)" --resource-rules=/Users/nick/CPPlayer/build/Debug-iphoneos/CPPlayer.app/ResourceRules.plist --entitlements /Users/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: object file format invalid or unsuitable
Command /usr/bin/codesign failed with exit code 1

In pictures: See here (imageshack gallery)

Is there anything I could've missed? Any ideas how this can happen? I got everything working now and this seems a cure for my problem, but I'd like to understand what is happening.

Sometimes it also works like this:
Build/sign A - succeeds
Build/sign A - fails
Build/sign B - succeeds (B always seems to succeed)
Build/sign A - succeeds
Build/sign A - fails

So, after every successful build of A, I have to build and sign B to be able to sign project A again. I can rebuild project B any number of times in succession, it always succeeds.

I'm not sure if it matters, but also when I try to run it in the simulator (debug mode for iPhone OS 3.1.2) it fails to install each other time. So:

Build/run - Fails
Build/run - Works
Build/run - Fails
Build/run - Works

This goes only for Project A, I can build and run project B as many times as I like, I never get the message that the installation failed.

Thanks in advance,
Nick


回答1:


The problem could be too many info.plist files.

I had the same problem (alternating codesign success and failure).

I had added a directory of source code to my project, with "add existing files" on the directory. Turns out there was a info.plist file in the directory, so I now had 2 of them in my project. I deleted the new one and removed it from the project, and my problem was solved.




回答2:


I also was struggling with the 'Command /usr/bin/codesign failed with exit code 1' error message.

Here is how I solved it

Right-click on info.plist look at it's targets. Make sure the box to the left is UNCHECKED. This is the default state.

Targeting the files don't work fine for the info.plist.




回答3:


Searching for the specific error message

object file format invalid or unsuitable

I got these links:

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

which suggest that your ResourceRules.plist is not set up correctly. That solution seems to have helped a lot of folks with this problem.




回答4:


the issue happened to me, tried every combination of cert, provisioning profile, cleans and restarts, frustrating the damn system doesn't tell you what the issue is. just let me keep guessing. the solution for me was the above referenced article.

"Executable name" must match "Product Name"

really saved me to find this here. thanks.




回答5:


Make sure you don't have more than one Info.plist file in your target!



来源:https://stackoverflow.com/questions/1890847/codesign-only-succeeds-after-other-xcode-iphone-project-is-successfully-signed

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!