As an Android consultant I'm always amazed at how much clients underestimate the effort involved in putting together a high quality "simple" app. It's actually worse for Android, for some reason clients can't fathom paying the same for Android as they pay for iPhone apps. I always have to explain that it is no easier creating an Android app than an iPhone app. Of course people get what they pay for which is probably why the quality of Android apps in general is so poor.
It's actually a bit harder to create an Android app of comparable quality, isn't it?
Apple gives you a boatload of really thoughtful, usable UI classes. What I've read is that Android's SDK UI code isn't nearly as substantial or mature. Can you confirm if this is the case?
edit: Then there's Core Data for object modeling and persistence, which is a huge time saver. Is there an Android analog of this with comparable power?
The other challenge is developing for all the variants on Android (OS version, different manufacture idiosyncrasies, hardware speeds, screen resolutions, orientation, virtual vs hardware keyboard) all increase the development time and especially the QA time on Android.
Android is costlier because designers don't like Google's widgets, so every Android app (that involves a "designer") makes their own instead.
This results in shitty apps that are costly to develop. Fortunately, most of the apps that people actually use don't do this, so it's not really a big deal for users.
The API's have more gotchas and simple bugs than the Apple ones.
The 1.6 API in particular has some hairy bugs.
The debug cycle takes considerably longer (almost 3x as long as the iPhone debug cycle for a non-media app).
The debugger doesn't work as well.
The lack of a GUI UI layout tool (there are some, they don't work well yet).
The project setup is considerably more time intensive (barring signing issues, which experienced iPhone shops don't have issues with really).
Now it's not all against android: The lax approval criteria and ease of market publications are awesome. I'm just saying it costs MORE to do android, I'm not saying don't do it.
And yes, you're right, custom widgets are harder in android than in iOS. If it makes you feel better, I find the amount people change iOS custom widgets silly too.
I can't speak to Android SDK's maturity, but I can say that the foundation of the iOS SDK has been around a long time. All our Foundation classes are still prefixed with NS. Almost all of the most basic stuff, and even a lot of higher level stuff as well, has come over from MacOS X and NextStep before that.
Yeah, OS X is an enormous, and often underestimated asset of Apple's. Put them on great footing from the very iPhone SDK.
On the NS prefix: Lots of fun to switch between iOS and OS X dev. Wrote my first OS X app a couple months ago and it was weird to stop using the UI prefix for all the view classes.
My big wish for the next major iOS SDK is to get bindings. Those are awesome on the desktop.
> My big wish for the next major iOS SDK is to get bindings.
I wouldn't expect this. Honestly I'd expect things to go the other way: 10.7 maybe deprecating bindings on the Desktop for things like table and outline views. Particularly since they added NSTableViewDataSource/Delegate and NSOutlineViewDataSource/Delgate in 10.6.
Really? With bindings you get to write so much less glue code for labels, button states and other UI widgets. It's a dramatic time saver for UI minutiae.
I actually do like them for labels, button states, and other what I'll call "scalar" widgets.
For collections, though, I feel like they're more likely to get you into trouble than to actually solve your problems.
I think you could do something substantially less complicated/powerful than bindings for the cases that bindings handle well, though, and I'd rather Apple did some innovating there than bring bindings over to iOS.
I'm also with the other folk who would much prefer to see Garbage Collection first. I rarely get into trouble with the reference counting system, but when I do it usually takes me forever to track down why my app is crashing without a single line of code written by me in the stack trace. Usually it's because I assigned an autoreleased value to an ivar in an init method while failing to retain it (a stupid mistake that I still make once every few months even after 5 years of Cocoa/Cocoa Touch work).
I've never found myself wishing for bindings on the iPhone. Maybe when I'm using Core Data, but thats not too often. And even then, its relatively easy and quick to abstract it all away.
I want GC on the iPhone. Not for the GC itself, just so Apple will make NSPointerArray, NSHashTable and NSMapTable part of the public API.
I have seen bindings running on iOS, and it has massive potential, especially for areas like live updating of on-screen table rows etc. Fully expect them there soon.
Will be astonished if they get deprecated on desktop, too. Value is far too high.
Yeah I took on a short Mac project a number of months back and got really messed up with the switch. The ubiquity of Core Animation on the iOS was what spoiled me I think. Don't hold your breath for bindings on iOS though. I'd rather have garbage collection anyway.
I'm sure garbage collection's on the way with the increases in processor and memory in iOS devices.
Lack of GC seems to be an artificial constraint designed to force dev's to take charge of a situation with very limited memory. Unless there was some major overhaul to the Foundation classes.
I can't really say whether Android is harder, but I think Apple's tight design guidelines make the design easier if you're using the default built-in controls.
for my sins I have been making mobile apps for over 6 years, the original problems we had explaining to clients about fragmentation in J2ME was even worse as Java was sold as write once run anywhere, A similar thing now happens with iPhone OS variants where people just see it as a "iPhone app"
The real skill is in explaining why this is difficult and actually how much design work needs to be undertaken to make these "simple, clean" looking apps
However it has to be said there are some quick wins for mobile apps that can be achieved quickly, however something like twitterific which is probably one of the top 2% of iPhone applications the effort expended is not that surprising unfortunately