Episode #18

Adhoc Provisioning

13 minutes
Published on May 31, 2012

This video is only available to subscribers. Get access to this video and 578 others.

To distribute your application to a wider audience of beta testers, you'll use what is called "adhoc provisioning." In this episode, I create an adhoc build configuration, show how to create a distribution profile for adhoc builds, and how to manually put the build on a device using the iPhone Configuration Utility. Lastly, I cover how to use Test Flight to easily send out builds to be installed over the air.


Creating an Adhoc Build Configuration & Scheme

This assumes you have already created your adhoc distribution profile and installed it into Xcode

  1. Duplicate the Release build configuration on the Project -> Info tab.
  2. Name the new configuration "Adhoc"
  3. Create a new Scheme, call it "Adhoc"
  4. Set the configuration setting of all build steps of the Adhoc scheme to use the Adhoc build configuration
  5. Give the Archive a descriptive name
  6. Under the target settings, search for Code Signing. Change both Adhoc entries to use the iPhone Distribution profile (Automatic selector).
  7. Select Archive from the Product menu
  8. Click the button that says "Distribute"
  9. Select the "Save for Enterprise or Adhoc distribution"
  10. Select the correct Code Signing Identity
  11. Save the IPA somewhere.

Note that you might find references to blog posts where they suggest you create an Entitlements.plist and add an entry called get-task-allow set to false. This used to be required, but is not any longer.

Troubleshooting Steps

  • No valid code signing identity found
    This can happen if you haven't installed the distribution certificate. Look in Keychain Access on OS X, under the My Certificates section you should see your "Distribution" certificate with a private key below it. If not, you'll need to retrieve this private key from a previous export, or regenerate it from the portal.

  • App was signed with improper entitlements
    This usually means either you have an Entitlements.plist with improper settings (you can delete this file if you're not using it for some other settings like iCloud or Push Notifications). It can also mean that your device was not part of the profile.