I got an interesting Mac App Store rejection tonight I haven’t seen anywhere else. My app submission was rejected to §2.2 - Apps that exhibit bugs will be rejected - for missing frameworks, which I weak linked into the application, but stripped out using a custom build phase in Xcode.

The scenario here is as follows: The app is already available for purchase outside the App Store and includes the Sparkle framework for dynamically updating the application binary. This is not necessary for Mac App Store distribution of course, so I removed all the Sparkle code from the app. Because I did not want to add a new Xcode target only for another build configuration, I set the Sparkle framework in the “Linked Frameworks” table to “optional”.

xcode

Since weak linking frameworks and not shipping them seems not to be allowed (nothing in the App Submission Guidelines about that of course), you can’t use this “Linked Frameworks” table in mixed build environments. What I’ll do instead is create two Xcode Config files and manually hard link the necessary frameworks using the OTHER_LDFLAGS option.

Of course it would be nice if XCode could warn you about this issue during submission validation, so that you don’t have to wait 6 days for Apple to tell you that.