What is the secret of ad-hoc distribution?

So I'm developing my first iPad app, and I need to email it to a few far-flung colleagues so they can try it. It's nowhere near ready for the App Store or Test Flight, but as I understand it the limitations of ad-hoc distribution should be fine for my purpose.

If only I could make it work.

I collected the device names and UDIDs, registered them on my devices page, downloaded the new ad hoc provisioning profile, and used it to build the archive and save for ad-hoc distribution. My colleagues try to install it in iTunes, and it stalls, saying "installing." On my own iPad it works the first time (probably because XCode has also connected itself to that one via the USB cable), but if I try to install a new archive of the same app via iTunes, it also stalls on "installing." Removing the old app doesn't seem to help any way.

I don't know where to begin. Maybe if someone can give the top 10 ways to mess this up, I can see how many I'm doing wrong.

Thanks,

Tim

Maybe 3 top reasons is enough: 1. Out of date Distribution Certificate. 2. Incorrect UDID for user's device. 3. In the Archiving process, selecting to export using bit code could prevent installation--make sure that checkbox is unchecked.

The problem is not 1 or 2. As I read the option in 3, exporting "from" bitcode ought not to be a problem since what's exported should be compiled, not the bitcode itself. But I am unchecking the box according to your advice anyway.

I have my "real" app and a few trivial test apps. I made a few uninformed changes to the code signing settings, and in at least one case I forgot to set the target team identity. None of that helped of course. Since then I found that by keeping the default code signing settings, I made archives that actually did install successfully on one student's iPad, in addition to my own. On my boss' iPad, and that of a cardiologist in our team, it still doesn't work. I have concluded that I am cursed.

One more tidbit: in order to remove a previous, broken install, it seems necessary to both manually remove it on the iPad, and then do the remove process in iTunes.

Thank you for trying, anyway.

Chuckle! Yes, I should have added a fourth top-10 possibility: 4. You may be cursed. I hope somebody else chimes in to offer some more possibilities.

A few more things I learned, mostly in hard ways:


  • Set your team identity in the project target. This isn't automatic.
  • Change the Build String (n.n.n format) to make iTunes update.
  • Make sure your recipient sends you a valid UDID. One of my people didn't follow my directions about iTunes, but instead used one of those obsolete UDID-finding apps, giving me an invalid UDID beginning with FFFF. I didn't know that is invalid, so I banged my head on a wall for several days.
  • After you register or disable devices in Member Center you must regenerate your team provisioning profile in XCode. Dowload the new ad hoc provisioning profile and open it in XCode. Then delete the old team provisioning profile and download the new one. Something in there feels like overkill, but maybe it's all necessary.
  • When exporting the archive, sign the app using the distribution certificate specified in the ad hoc provisioning profile.


Finally, it seems to work consistently. But it's such a hassle, I have moved on to TestFlight distribution.

What is the secret of ad-hoc distribution?
 
 
Q