At least for me(as an indie dev), probably never. Developing for the Android is not enjoyable at all.
At least for me(as an indie dev), probably never. Developing for the Android is not enjoyable at all.
If anything I think there's an opportunity for somebody to make a Rails of mobile dev. It's a lot more work on either side than it really has to be most of the time.
Java isn't my favorite language to use and I really prefer Objective-C, but Xcode is a huge annoyance as well. I would say I prefer Android development as it is my favored OS to use but neither blow the other away as far as development fun.
And especially with web developement, where you'd have to test your site on a various number of combinations of OS, browser, and resolution.
If you want to get the kind of pixel-perfect layouts people have come to expect on the iPhone then yes that's a hassle. But I suspect the trend is away from that kind of design towards more flexible, information-centric designs just as it's been on the web.
Not really, no. http://thenextweb.com/apple/2012/03/06/why-do-developers-pre...
The company I work for does Android development for the gov't, and we have had a lot of issues with difference in camera support for example. Yes, there is one API, but for each camera in a phone it behaves slightly differently.
The worst still is the different screen sizes. It will look and work perfectly on one or two devices, and then you try it on a third and all of the elements are laid out differently or are rendered wrong and we have to add a work-around for that specific device.
The other issue we have found is the different versions of the libraries that various different versions of Android ship with. For example BouncyCastle is extremely outdated, or sqlite versions differ enough that it works on one device but doesn't work on the other.
We've also had issues with the phone switching between the cellular network and then wifi whereby sometimes our app will get sent up to 50 notifications in rapid fire saying it is switching between the two, which causes our app to tear down/restart the connection process. We ended up putting a timer in that waits a couple seconds and uses the last notification that came in ...
That's not to say that iOS development also doesn't have its issues. I had one app that if you used the switch on the iPad for screen orientation lock that it wouldn't output sound due to the switch not being recognised correctly. A bug that still exists in the latest version of iOS, and still hasn't been fixed (here is hoping for iOS 6 (which I have not yet installed on this device), my radar got closed as duplicate). But iOS has less of an issue with fragmentation due to the fact that most of the hardware is the same, and people with iOS devices tend to upgrade en masse to the latest version when it is released so it becomes less of an issue to have an app require a new version of iOS and no longer function on older versions of iOS (although, I am still targeting iOS 4 for now when doing consulting/client work).
This means that even if you use Android's layout tools and create automatically resizing and fitting layouts it may not work correctly, and render incorrectly for example when you move from landscape to portrait, or move from one screen to the next. Highly annoying.
We've also had bugs that we could not reproduce on any of our test devices (all 27 of them that we have now ...) but that a customer had out in the field. We then attempt to locate the same device with the same OS version to test on.
Sometimes it has to do with themes that a manufacturer has installed not working correctly... this gets annoying fast when you've got the same phone on multiple carriers and they each customise it their own way.
Some mount to the file system as USB mass storage. Some devices call it "Disk Drive" mode. Some have a button called "Mount USB". Sometimes the button's in the notification bar. Sometimes it's in the settings. Some Android devices use MTP and the user doesn't have to do anything (but the names of the folders are different!).
You either get to write documentation like a choose-your-own-adventure novel or deal with confused users.
Android manufacturers & carriers have little incentive to get you to upgrade [Apple sidesteps them and delivers updates directly]. Do you want to target a several-years-old platform to guarantee the most access?
Screen sizes are also a challenge. iOS (iPhone + iPad) has 4 different ones to choose from. Android has... a lot more than that.
Fluid layouts usually don't work that well -- awkward spacing here, awkward wrapping there. Notice how many web frameworks use fixed-width columns (like Twitter Bootstrap).