Submit to App Store Using XCode 4.4.1 With iPhone 5 Supported

There are still lots of iOS 4.0 ~ 4.2 iOS devices. So we do need to support iOS 4.0-4.2 devices besides the latest iPhone 5. But there are problems for supporting both of them.

Before Oct 2012, you can add 4-inch launching image to your app, compile using XCode 4.4.1 and submit to App Store, your App will get reviewed with iPhone 5 supported. That was good for both Apple and developers. Beginning with Oct 2012, App Store will reject such apps submitted in such a way, saying:

Dear developer,

We have discovered one or more issues with your recent delivery for “####”. To process your delivery, the following issues must be corrected:

Invalid?Launch Image?- Your app contains a launch image with a size modifier that is only supported for apps built with the iOS 6.0 SDK or later.

Once these issues have been corrected, go to the Version Details page and click “Ready to Upload Binary.” Continue through the submission process until the app status is “Waiting for Upload.” You can then deliver the corrected binary.

Regards,

The App Store team

It seems that App Store is trying to force those Apps to support iOS 4.3~6.0 only, leaving those old iOS devices behind (Hey, you should buy our latest iPhone 5! – by Apple).

To support iPhone 5, you need to compile your App under XCode 4.5+. But using XCode 4.5+, only iOS 4.3+ are supported. Using XCode 4.4.1 and earlier, your submitted App with iPhone 5 launch image will get marked as “Invalid Launch Image”.

After searching and testing for one or two days, I figured out the following way:

1. Archive your App under XCode 4.5
2. Open Organizer, show your App folder in Finder and enter App’s Products/Applications folder, copy Info.plist and archived-expanded-entitlements.xcent to somewhere else, like your home folder.
2.5 Open your Info.plist (~/Info.plist) using XCode, and modify MinimumOSVersion from 4.3 to 4.0 [Updated: Nov 19, 2012]
3. Close XCode 4.5 and open XCode 4.4.1, open your App project and open your Target’s “Build Phrases” tab, add a Run Script, with shell “/bin/sh” and “cp -f ~/Info.plist ~/archived-expanded-entitlements.xcent “${TARGET_BUILD_DIR}/${EXECUTABLE_NAME}.app”
4. Re-archive your App, and it should pass App Store’s rule checker and in “Waiting for review” soon.

I have submitted an App in late October, it got online in early November. So it should be working for at least a month or so.

The reason behind these steps is that Info.plist contains the base SDK version and other configuration information. We use Info.plist modified by XCode 4.5, re-compile the app using XCode 4.4.1 and code-sign it with modified Info.plist, so App Store considered it as an App built by XCode 4.5 basing on iOS 6.0 and the given launch image for iPhone 5 is valid. While XCode 4.4.1 supports compiling for armv6 and armv7 CPU instructions that is required for those old iOS 4.0~4.2 devices, we supports all iOS 4.0+ devices ?in such a way.

Hope the above steps help. Let me if it is working for you or not.

P.S. :?Someone used XCode 4.3.2 and submitted his App to App Store successfully in this way. So XCode 4.x should be working in this way.

This entry was posted in iOS. Bookmark the permalink.

6 Responses to Submit to App Store Using XCode 4.4.1 With iPhone 5 Supported

  1. Karl says:

    Hi, I have tried your method, but application loader give me the following error:
    “Application failed codesign verification. the signature was invaid,contains disallowed entitlements, or it was not signed with an iPhone Distribution Certificate.”

    I tried upload the package compiled by xcode4.5, it’s ok.

    • Zhou Renjian says:

      @Karl
      Do not simply copy files by running cp -f ~/Info.plist ~/archived-expanded-entitlements.xcent “${TARGET_BUILD_DIR}/####.app directly in command line.

      If copying these files to target App folder and do code sign myself in command line, you will get “Application failed codesign verification” error. I met this problem before I found the solution.

      To avoid your error, you need add Run Script. So XCode 4.4.1 will copy files before it codesigns. Re-archive your app in XCode 4.4.1 will get a valid App package with modified files.

      After re-archive, open the archived folder, compress the app folder into a ####.zip file and submit to App Store. Your app should be in “Waiting for Review” status.

    • Zhou Renjian says:

      @Karl and others
      I was missing a key point:
      Open your Info.plist (~/Info.plist) using XCode, and modify MinimumOSVersion from 4.3 to 4.0

      We need to modify this value to make it supporting iOS 4.0+

      Sorry for any inconvenience caused by this.

  2. Denis Mikhaylov says:

    It looks like apple closed this bug, app no longer available for devices with iOS 4.0 in AppStore

  3. Paulo says:

    Hi Zhou,

    Are you the developer of KeX mail ?
    It’s possible download to run on my server ?

    Thanks,
    Paulo