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:
- 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).
- 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.
- 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.
- 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.
- 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.
- 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).