Thanks for this post. Now I'll wait a bit longer before moving to an Android phone.
From a developer's point of view, Android is known to be a mess. I thought the reason was the lack of organization between the numerous manufacturers. Now I see that the reason is even more fundamental.
Reykjavik is available on the world clock, and if you go there it picks up the correct timezone automatically. The only missing part is that the system timezone widget which you would never normally use doesn't have it.
Also, while excluding a country would be a fairly crappy thing to do, Iceland is the 174th largest country in the world by population, so it's not big relative to very much at all
I hope it has improved since last time I've worked with it (3 years maybe now ?). But on top of my head this were the problems I faced (probably not up do date now, I hope it's much better now):
- The emulator was slow as hell
- Impossible to resize the emulator window dynamically so testing is really slow and painful
- Bugs with manufacturer roms & drivers (hello Samsung !) So you have to test with a lot of devices without guarantee it will work
- you have to copy all the fields yourself when your device pass in portrait mode since everything is being erased (even text fields)
- You need to create some strange XML for just about everything, nothing really works by default.
- No package manager for the libraries, you have to copy some random .jar here and there
- Really poor API. No usable date picker (I'm discarding the default one here), no file picker, no contact manager you can inherit from in built-in, you had to reimplement everything yourself, even a button with an image on it you had to do it yourself.
- Poor consistency in the XML names, it was difficult to guess what meant what.
- The documentation was also hard to browse
- The permission system is close to broken (they are working on that at the moment apparently).
- If your APK is too large, APK expansions (can't remember the exact name now) API's were borderline broken and buggy.
- SD card management was a mess.
- Everything related to layout was difficult to get it right and nothing would ever resize right unless you put a lot of effort into it (the opposite of the web on this).
- Android browser was close to unusable but now that I've checked a recent version, it seems they solved that.
The emulator is fast as hell now (faster than using an actual device, according to them). Many of the other issues you have mentioned here are fixed as well.
Not being an Android dev myself, these are some complaints I've heard: There are a ton of resolutions, aspect ratios, and screen sizes. There are a lot of GPU vendors. Driver quality, performance of specific features, little tricks to even use specific features, etc, vary between each of those vendors, and your program should support as many as possible. Different phones have different input methods and peripheral hardware (sensors, notification lights, vibration motors, 3D screens, slide-out keyboards, etc), and trends in the market shift over time.
Compared to Apple, there's a lot of variability in devices, and that may be what they were referring to.
> There are a ton of resolutions, aspect ratios, and screen sizes. There are a lot of GPU vendors. Driver quality, performance of specific features, little tricks to even use specific features, etc, vary between each of those vendors, and your program should support as many as possible.
IMO, variety is not a mess - this is has been the norm programming for the consumer space for decades (PC applications, all non-console games, web development). Fixed resolutions & hardware is the exception (consoles, and previously iPhones: now iOS devices are 'fragmenting' too)
From a developer's point of view, Android is known to be a mess. I thought the reason was the lack of organization between the numerous manufacturers. Now I see that the reason is even more fundamental.