Using PhoneGap (now called Cordova) to develop native iPhone apps has been awesome! I’ve successfully released one app, and continued on to release an enhanced version of the app. A month later, my second app is ready for submission, and as expected, I’ve entirely forgotten the process. So, in a somewhat selfish act, I’m creating this post not only for others, but as a guideline to myself!

  1. This goes without saying, but it’s a good idea to fully test your app on as many devices as you have available. If you have an old 2nd generation iPod laying around, awesome, use it! Otherwise, make good use of the available simulators that come with XCode (some you may have to download).Don’t just test it yourself, hand the controls over to a non-developer, your colleague, girlfriend, spouse, kids, anyone who doesn’t quite know what to expect, and is more likely to act as a typical user would.
  2. Create a distribution provisioning profile.
    Provisioning -> Distribution -> New Profile
  3. The fields are pretty clear on this portion. After submitting, wait a minute or two, then refresh the page. The time from pending to active usually isn’t much longer than that.
  4. Download the distribution provisioning profile.
  5. Open up the organizer from XCode, by choosing Window -> Organizer from the menu.
  6. Drag the profile that you just downloaded into the Organizer Window, specifically, the Library -> Provisioning Profiles area.
  7. Create an Archive of the App 

    1. Duplicate your release build configuration as shown above. Apple suggests naming the new configuration “AppStore”.
    2. Switch to the Build Settings tab, you’ll notice your new configuration, called AppStore. Within that configuration, change the Code Signing Identity through your new Distribution Provisioning Profile that you created in the steps above.
      Although not noted by Apple, it appears that you need to make sure that Any iOS SDK be set to iPhone Distribution.

      Change: The “iPhone Distribution” option was available on earlier Xcode versions, but I no longer see it.

    3. At this point, Apple’s instructions suggest “In the target, delete the Validate Build Product build setting specification for the Release build configuration.”However, there doesn’t appear to be an option to delete the build setting. Instead, I’ve opted to choose a value of No, as shown below.

  8. Create a New Scheme to build your App 
    2. Click ‘Edit’
    3. Click ‘Duplicate’, Name the duplicate “<App_Name>-AppStore”
    4. Go back and edit the duplicate scheme you just created.
    5. Set the build configuration for the Archive action to AppStore.


    6. From the XCode menu, choose Product -> Archive
  9. Validation – The steps above will bring up the Organizer, at which point, you should click the ‘Validate’ button to validate your app.
    1. Fix any issues, then rerun Product -> Archive
    2. At this point, you may wish to do some cleanup and delete previous Archives that did not validate.
  10. Congratulations! You’ve completed the steps above, now just click ‘Distribute…’ and follow the instructions.


  1. Do you have any advice for making certain build files not copy into the final archive?
    For example, we have www / css / less / [bunch of .less files that get output to .css in www/css] … is there a way to not include the less folder and its contents in the final archive, that you know of?

Leave a Reply

Your email address will not be published. Required fields are marked *