HowTo: AdHoc distributing an iPhone app

11 Oct
2009

All those Code-Signing, Provision Profiles, Certificates are a real pain in the ass, especially if you do it the first time. Here are some links that helped me out: (I assume that you already have the developer license and set it up)

First, you need to know that the Ad Hoc Beta Testing process sucks.

You need some potential beta testers. They need an iPhone (obviously) and a bit of computer knowledge. First tell them to download a free app from the AppStore, called “BetaAssist” and let them write an email (button top right).

Then they hopefully do that (well… not all of them… you cannot assume that every iPhone user has set up an valid email account…). In the mail you get the device UUID. Keep this ID, you need it for the second step.

Go to the iTunes Developer Program Portal.

  • request a distribution profile (via keychain)
  • Register some demo devices with your UUIDs
  • Provisioning -> Distribution -> New Profile
    Distribution Method: Ad Hoc, Select your App ID and the Devices
  • Download the provisioning file and drag it into xcode
  • Create a new build configuration. Copy Release and Rename it to AdHoc Release
  • Set Base SDK to iPhone Device, Code Signing to IPhone Distribution
  • You also need an Code Signing Entitlement, New File -> Code Signing, and disable the checkbox in the created Entitlement.plist.
  • Make a clean build. (Build and debug fails for me, because this is a release build, but it looks like the app crashes on startup, don’t worry about it)
  • Search your build directory and zip  both the .app and the .mobileprovision
  • Send the package to your customer!

Your customerneed to unzip and drag those two files(actually the .app is a folder) into your iTunes (but they have to delete the old app first).

Here is a nice guide about ad hoc distribution for your customers.

If you want to make it more professional you can create a IPA file (backuplink) (like a zip, but the user can double click to install on it, without the need to unzip) IPA also can include a nice Icon.

And don’t forget to increase your version number! iTunes is sneaky about it, and it won’t replace an app with an equal or lower version (unless you delete it manually).

Crash logs?

Probably your app will crash while betatesting. Thats good, better than when it happens when it’s in the AppStore. But the automatic crash log sending only works via iTunes Connect – thus it has to be in the AppStore.

Your Beta Tester will have do dig in the system to find it.

And then you may notice that they are useless, unless you keep the SYM file that was built with your app and start the Symbolification:
(This is for iPhone SDK 3.0 and above. The path is different on 2.x)

First, make your live easier and add this to your ~/.bash_profile

function desym
{
/Developer/Platforms/iPhoneOS.platform/Developer/Library/PrivateFrameworks/DTDeviceKit.framework/Versions/A/Resources/symbolicatecrash -A -v $1 | more
}

After restarting Terminal, you can now use the desym function:

desym xxx.crash

You can find out more about symbolification herehere and here.

Always remember: You should keep a copy of the dSYM for each version of your application ever shipped.

Also read: Good Practices about iPhone Development

Related posts:

  1. Crash Reports on the iPhone
  2. Compress JavaScript with YUI Compressor
  3. Best Of Stack Overflow For iPhone Devs
  4. iPhone Piracy
  5. Tweetie like swipe menu for iPhone apps

Comment Form

top

Switch to our mobile site