Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

XCode 4.3.1 breaks validation of apps with directories added by reference. Any workaround?

I've discovered that Xcode 4.3.1 has a serious issue validating apps with resources within a directory tree inside an application bundle.

Apps can pass validation within the Xcode "Build for Archive" process - it only fails when the validation is run via Organizer, which is required to save for ad hoc or App Store submittal.

After spending hours trying to trace down the usual code signing entitlement issues, I eventually noticed the following line in the system console when the export fails:

3/10/12 2:32:48.450 PM [0x0-0x261261].com.apple.dt.Xcode: /Users/chris/Library/Developer/Xcode/Archives/2012-03-10/Coverage 3-10-12 2.32 PM.xcarchive/Products/Applications/Coverage.app/Tiles/T-Mobile-roam/4: Is a directory

The "Tiles" directory has been added to my project via "Create folder reference for any added folders".

I discovered that removing the Tiles directory allows the app to build and validate. Adding it back results in this code sign failure.

It seems that adding a multi-level directory tree completely screws up the validation process, and the error messages send developers on a wild goose chase trying to track down code signing and entitlement issues that really aren't an issue.

I never had any issues with prior releases of Xcode - this seems to be a new serious bug in Xcode 4.3.1.

Is there any workaround possible that will allow us to submit updates to our app?

Notes:

This thread seems related: https://devforums.apple.com/message/630800

This question touches on a similar issue as well: Xcode 4.3: Codesign operation failed (Check that the identity you selected is valid)

like image 229
radven Avatar asked Mar 10 '12 20:03

radven


2 Answers

I spent a day trying to isolate this bug, and I've finally nailed it.

The code signer in XCode 4.3.1 when validating for the App Store or saving for AdHoc distribution chokes whenever there is a subdirectory in your bundle that has the same name as its parent directory.

For example:

test/test/file.x -- FAIL
test/test2/file.x -- WORKS

This seems to be new in Xcode 4.3.1, and hopefully will be fixed soon.

UPDATE: I have heard back from Apple DTS support confirming the issue, and indicating that there is no known workaround yet other than renaming the directories in the bundle. ugh

like image 120
radven Avatar answered Oct 22 '22 19:10

radven


Maybe I've found a workaround:

  1. Open Organizer;
  2. Right click on the archive you want to export and select "Reveal in Finder";
  3. Right click on the xcarchive file and select "Show package content";
  4. Go to Products/Applications;
  5. Create a folder and name it Payload;
  6. Drag the .app file into the folder (don't copy it, since it would invalidate the signing);
  7. Zip the folder;
  8. Rename the .zip file to .ipa

It worked for me.
Let me know if it's ok even for you.

like image 40
pasine Avatar answered Oct 22 '22 18:10

pasine