Trent Polack's site for cats, games, game development, and undeniably powerful sociological insight all with a healthy dose of narcissism.
The Digital Bureaucracy
Published on January 4, 2009 By mittens In Game Developers

I've been plugging away on my iPhone project over my vacation and it's been pretty rad. which I'm actually developing using an iPod Touch but shortening it from iPhone/iPod Touch to just iPhone is so much easier. I do want to record just how absurd application deployment to an iPhone/iPod Touch is, though. Once an individual pays the $99 fee for a development license he/she is given access to the iPhone Development Portal. And in order to get a working xcode project from the iPhone Simulator to an actual device is as follows:

  1. Setup the team. For an individual license the only allowed team member is the person who bought the license. The first thing this person will need to do is generate a Certificate Signing Request; this is done through a system application. Once a request for a certificate from a "Certificate Authority" has been made, then a CSR file will be made on the desktop. This CSR file needs to submitted to the Development Portal to allow a team leader to approve it. Once that is done, then the portal will allow team members/admins to download their certificates and install them to their machine. Each certificate is composed of a public key (which is available to the team leader) and a private key (which is available only for the team member).
  2. The next step is to add a list of up to one hundred possible devices that will be used for testing. This is the most straightforward part of the process. Just add in the device name and its unique device ID.
  3. Now an application identifier needs to be created that will serve as a unique identifier for that application and is composed of ten letters/numbers. This key is then followed by a bundle identifier that the developer can create; for instance, mine is ##########.com.trentpolack.kaboom.
  4. Then it is necessary to create a provisioning profile which ties all of the aforementioned steps together. Mine is "Trent kaboom," and allows ##########.com.trentpolack.kaboom to be deployed to either mittens or Stardock's iPod Touch (which I was using before I bought my own) under the use of my developer license, Trent Polack. Once the form is filled out then a file has to be downloaded to the desktop and added as a provisioning profile to xcode's device organizer.
  5. Moving to xcode, a property list file (Info.plist, typically) needs to be filled out since xcode seems to have issues automating its project name/product name/product bundle through the project settings alone. So various information from the previous steps needs to be manually entered here. The main information that needs to be given is the bundle identifier: com.trentpolack.{$PRODUCT_NAME:identifier}. It seems without that ':identifier' modifier deployment to a device will only work once until that installed application has been deleted; adding it, presumably, gives each deployed executable a unique ID that will allow it to overwrite a previous one.
  6. And, finally, a provisioning profile is linked with a given target (executable) through the xcode project settings and serves as a means of signing that executable for use by an attached device. Deployment is impossible without a code-signing profile in place.

I think that about covers it. Maybe it's because I've been a Windows developer all my life (until a week and a half ago), but the number of steps that needed to be taken and then tweaks that had to be made over the course of getting my first executable properly deploying to my iPod Touch was just absurd. Deploying XNA-built applications to my Xbox 360 was a breeze compared to this. But:

And then there's my development desktop (check out all of those certificates):

And, finally, the logo for kaboom that I just whipped up:

Working in a completely different development environment has been an absolute blast, though. I'm looking to get my own Mac Mini sometime in the next month or two so I can continue working on this project (and others).


Comments
on Jan 06, 2009

It's great to see this article. I am just getting started with iPhone development (although not necessarily games development). This is the first time for me to be developing on the modern (OS X) Mac platform. Years ago when I was an Atari ST guy, I had a Mac emulator and I wrote some C code for System 6 if I recall correctly.

I Just bought my first real Mac in November. It's a Macbook. While it only has the 13 inch screen, I got it loaded with 4GB of RAM and the external DVI adapter which I have connected to a 22 inch Samsung monitor.

Anyway, I agree that it is a bit of a pain to get started with the certificates. While it sure did feel like I was jumping through hoops, I'm pretty sure that the worst is behind me and that it will be clear sailing from here on in.

I'm curious as to which resources that you are using to guide you along the way. I've acquired several good books. My first is a pdf from Pragmatic Programmers called "iPhone SDK Development". This is the book that I am starting with.

For Christmas I received two books, "The iPhone Developers CookBook", and "iPhone Open Application Development. 2nd Edition". I've only read about 12 pages of the first book, and it is helping me to understand some of the nuances of the platform. The second book is really geared towards developing applications outside of the official Apple SDK (ie. jailbroken machines).

I haven't worked with Objective-C before, but I'm pretty good with C++, and I'm a little bit familiar with SmallTalk, so I'm not too concerned about that aspect of things.

Anyway, happy iPhone/iTouch programming!