Showing posts with label iPhone Simulator. Show all posts
Showing posts with label iPhone Simulator. Show all posts

Thursday, June 18, 2009

iPhone vs. Android: Initial Developer Experience

When the G1 came out, I tore into the Android SDK. I noted at the time that, compared to the iPhone, it appeared much easier and cheaper to get an application from the drawing board onto users' phones. Well, now that I've done some development for both, I can confirm that my suspicions were correct. There's just less hoopla with Android.

  1. The Android SDK, including beta versions, is available to everybody. You don't need to pay a fee to be a "special" developer with early access to the tools.
  2. Every Android phone out there, whether a retail phone or a developer phone, is ready for development. There is no provisioning, no additional fees, no nothing. You check a little checkbox in the phone's settings and you can deploy code to your device.
  3. You don't need to be on T-Mobile to develop for Android. Google will sell you a developer phone, T-Mobile will unlock their devices if you ask, and people are porting Android to various devices at an alarming rate. Another of The Gents would actually like to acquire a separate iPhone for development purposes (his sole iPhone doubles as his primary communication wedge), but he can't see any easy way to acquire one without signing yet another pact with AT&T.
  4. Testing on hardware isn't quite as necessary with Android. The Android SDK doesn't include a simulator, it includes an emulator. It runs a full Android system image on emulated hardware. This means that the binary you deploy to the emulator is the same binary that you deploy to an actual phone. The iPhone simulator, on the other hand, just runs x86 applications in a little window that looks like a phone. This is surprising since the iPhone itself has an ARM chip. This is particularly important when you run into strange, simulator-only problems.
  5. The Android Market is cheaper than the App Store for developers. With Android, it doesn't cost anything to deploy to devices. To sell apps in the Market, Google charges a one-time fee of $25. Apple charges $99 per year. That might not be bad for commercial software, but it must be murder for people who give their apps away for free.
  6. You don't need to go through Google. If you get rejected from the Android Market or just want to avoid it, you can distribute your app on your own. Users will be able to install it. While Google is the gatekeeper for the Market, they are not the gatekeeper for your phone. Apple, as everybody knows, has a seemingly broken application approval process. As a developer, you just need to pray that the approval die is cast in your favor. If not, you just wasted weeks of time. Though, I suppose you could just re-submit it and hope that you get luckier the second time around.

Of course, iPhone development isn't all bad. It's just so much harder and more expensive to get your first app running on your phone.

Wednesday, June 17, 2009

OpenAL in the iPhone Simulator

As somebody without an iPhone, I knew off the bat that there would be a barrier to developing iPhone apps. Fortunately, the SDK and simulator are free, so I figured I had a pretty good shot at getting started and, when it became necessary, I could invest in some hardware. It turns out that day was much closer than I thought.

In the app that The Gents have started to write, we knew we would want to use OpenAL. Apple has an OpenAL sample app that you can download and try. When I tried running it in the simulator, though, I got nothing. No audio. No app. It got as far as displaying default.png before giving up the ghost and crashing back to the home screen. I was left with some cryptic messages in the run log:

AQMEIOBase::DoStartIO: timeout
AQMEDevice::StartIO: AudioOutputUnitStart returned -66681
AUIOClient_StartIO failed (-66681)

Interestingly enough, the other two bearded ones had no problems with the simulator at all.

After much Googling, I was left with speculation but no real information. Some people believed that it was a bug that Apple was fixing. Others just asserted that sound doesn't work reliably in the simulator and that you need to test on hardware, period. One person had the exact same problem as me. I decided that day to bite the bullet and buy an iPod Touch. I got mine at Sam's club, went back to The Lab, and then remembered that I had to pay my $99 Apple tax to provision it for development. That process was not exactly instantaneous. With my spare time, I decided to refresh my aging Leopard install as well.

Long story short: re-installing from scratch worked. I didn't do an "Archive and Install" - I wiped the disk and restored files from a backup by hand. It was slow, laborious, but it worked. My theory is that some sound software that I had installed long ago did something nasty to my system configuration that never manifested until I stuck the iPhone Simulator on it.

In the end, I didn't need the iPod Touch, though I think I'm glad to have bought it. It gives us another platform to develop for and test on, which is pretty awesome. I can start to see what it's like to be an iPhone user, and I get to complain about Apple's treatment of the iPod touch as a second-class citizen. Everybody wins!