Friday, July 17, 2009

iPhone app distribution made easy - Part 1

This is the first in a multi part series that will explore one approach to making iPhone app distribution a single click operation. The purpose is to take the thought out of generating a distribution and leave you free to concentrate on the real work. There are some prerequisites that I'll assume you have completed:
  1. Registered for the iPhone developer program.
  2. Created you unique AppID.
  3. Requested your code signing certificate.
  4. Created your distribution profiles for iTunes store and AdHoc.
  5. Installed these items on your development machine.

Armed with these items we'll begin by setting up the project.

Creating distribution configurations

Using the "project info" window's "configurations" tab duplicate the Release configuration twice. I named the two configurations "DistributionAdHoc" and "DistributionAppStore" but you're free to come up with your own convention.

The next step is to assign the "code signing identity" to the corresponding distribution profile. Do this in the "build" tab.

Creating the AdHoc target

The only difference with the AdHoc target is that it has the iTunesArtwork file so that iTunes will display the application icon. The application icon for the iTunes for the AppStore distribution will actually come from the iTunes store.

Create a new target by selecting the projects current target and duplicate it. Rename the target to something that indicates that its the AdHoc target. Add the iTunesArtwork file to the "Copy Bundle Resources" step of the target.

Note: The iTunesArtWork file is a 512x512 png file with no extension in the root of the app bundle.

One step closer

So now you should be able to select the Target, Configuration and SDK and build your specific distribution.

Next time we'll use the command line build utility xcodebuild to take the thought out of building.

1 comment:

  1. Part 1
    Part 2
    Part 3
    Part 4

    btw, any thoughts of updating given recent release addition of Continuous Integration in Xcode, does it cover all of the features that are possible with these posts?