Given the large number of examples of issues with the manual steps necessary to provision devices and install apps using the developer SDK, I am wondering why Apple took this route.

Specifically, the process seems to be error-prone and could likely be automated.

Is this just a rite of passage or are there reasons for implementing it this way that I am missing?

  • Are there reasons some of these steps HAVE to be manual?
  • Does anyone see a way of improving this or does anyone know of some automation/scripts that make this simpler for developers new to the platform?
  • sorry, I shouldn't have assumed you knew you could edit the post. Feel free and I will reopen it. Jan 24, 2011 at 4:22
  • @calavera - Thanks for suggesting that I improve the question - it had been "rantish" - a bit better now.
    – Tim
    Jan 24, 2011 at 4:31
  • no prob, everyone needs to rant sometimes :) and sorry again for not specifying that I would reopen on edit. Jan 24, 2011 at 4:48

3 Answers 3


The biggest issue is the key generation. The hardcore security of iOS is that only signed apps are allowed to run on your devices, unless you've jailbroken it and installed a package to bypass this, typically for non-licensed deploying or app pirating.

You need to generate a key based on Apple's certificate authority, or CA. Then you upload it to the portal and Apple approves it, provided you're a paid developer. Whenever you deploy an app, be it to the store or to your device for testing, you sign the app with your digital signature, which is backed by Apple. This tells your device, or your testers' or customer's devices, that the app is from a developer who is who he says he is. Since the main way to get an app on your device is through the store, you have the confidence that it is not tampered with (since the developer's signature is invalid with the flip of a single bit in the app) and that it's passed through Apple's checks by being hosted on the store. This is a two-fold assurance of the security.

Provisioning profiles are a whole other beast. Previously, Apple would let you "sideload" an app to any number of devices you wanted. This meant that you could bypass the App Store and sell apps yourself as a download, no different than desktop apps. Apple didn't approve of this and has since limited it to 100 devices per year being listed on a single developers account. You add your devices to the portal by it's UDID, it's unique fingerprint, and you would need to get this from any devices you wish to beta test your app or adhoc deploy to. Since it costs roughly $0.99 / year / device, it's prohibitively expensive to sell apps this way, but it allows you to have plenty of beta testing slots. Of course, a provisioning profile is the list of which devices can run which apps signed by who developer.

In recent Xcode's, once you've established your key (which would be difficult to automate from inside Xcode), you can plug in any iDevice, open the organizer and click "Use for Development". Xcode will prompt for your credentials and then automatically add the device to the portal and create a provisioning profile for you. Once you've done the initial setup, it's basically one-click to add an extra device. I don't think Apple is as worried about the initial setup being automated, since it's only a one-time process.

(Sorry, I'm trying to work on my long-windedness.)

  • -1 Lengthy answer, but I don't see how it answers the OP's questions. Jan 24, 2011 at 21:01
  • 1
    Did you read it? I explain why things have to be done they way they do. Thank you for -1'ing me for thoroughness.
    – wjl
    Jan 24, 2011 at 21:05
  • I did read it. It reads more like instructions on how to follow the convoluted process of creating the profiles rather than explaining why, but there's really no way for any of us to know that, is there? Sorry, but the -1 stays. Jan 24, 2011 at 21:43

The free TestFlight service aims to help with test app distribution, although I don't know if it makes it easier to test on your own device.

  • Not worried about testing - I want to be able to deploy my apps. I was just wondering why there is a 30-step process for this basic, fundamental part of iPhone development. +! for the great information. i did not know about that.
    – Tim
    Jan 24, 2011 at 3:36

I haven't seen a lot of speculation as to why they have it be this way other than to say that it's probably designed with device and user security in mind to keep the "riff raff" out of the process (i.e., creators of malicious software). You are, however, in good company with your frustrations regarding how the whole process works. Near as I can tell, outside of prepping a device for local, hard-wired testing, there is no way to automate any of this.

In the end, this is Apple's decision, and they have never said why it is this way. C'est la vie.

You must log in to answer this question.

Not the answer you're looking for? Browse other questions tagged .