BlackDog Foundry Bookmark This page

So, I went to submit an update to my app today and it successfully archives OK in Xcode, validates and uploads to iTunesConnect. However, when I log into iTunesConnect to submit for review, my binary is nowhere to be found.

Eventually, I thought to click on the Prerelease tab, and there it was sitting with a status of Invalid Binary, but with absolutely no clue as to what is wrong.

Twelve hours later, though, I get an automated email from Apple that looks something like:

Invalid Signature - The main app bundle LogDiver at path has
 following signing error(s): --
mz_919581240064122261dir/com.logdiver.LogDiver.pkg/Payload/ unsealed contents present in the root directory 
of an embedded framework In subcomponent: /Volumes/data01/

Ahh… OK, so at least I know what the problem is now – one of my embedded frameworks contains unsealed contents. The question is whether I could have determined whether this ahead of time.

Turns out, you can check this for yourself by running the following commands:

cd ~/Library/Developer/Xcode/Archives/{yyyy-mm-dd}/{yourapp}.xcarchive/Products/Applications
codesign -vvvv {yourapp}.app

This will produce the exact message that I got back from Apple. I have no idea why Xcode couldn’t have told me this at some stage during the validation or submission process – sigh!

So, what was the solution to my problem? Turns out that Parse distributes a license file called third_party_licenses.txt in the root directory of their Framework. This file doesn’t appear in the Xcode navigator anywhere, so unless you go digging around in their framework, it is hard to spot. Deleting that file makes everything better.

Leave a Comment »


Copyright © 2012 BlackDog Foundry