I never did iOS development in anger; I just really, really don't like Obj-C or Xcode from dealing with OS X programming. A few things that come to mind off the top of my head:
-Again, the documentation isn't well-written. It almost all feels like it's written either by an engineer with little writing experience or a technical writer without engineering experience. There have been times when I've had to re-read passages over and over again because I genuinely couldn't parse what they were trying to say.
-The insistence on weak typing everywhere is insane. Intents are sloppy, weakly-typed junk; Messages ditto. The R auto-generated class isn't bright either--even if you need an integer index, at least wrap it in a type-safe class to eliminate the possibility of passing the wrong thing around. I really do genuinely like working in Java, but I like working in well-designed Java. This is the same company that made Guava, which is perhaps the most elegantly designed API I know of in Java-land. But many of Android's APIs treat classes as an incidental hindrance.
-Dalvik blows. There is nothing good about it and there's so much that's bad about it. The class limit is crippling, and the lack of hot-loading is prohibitive. (I write games in my spare time, I'd love to be able to use Groovy as a scripting layer, but that's not going to happen.)
-This might sound crazy, but XML is a machine-readable format. People know that, right? Okay, great. So why are the tools for building layouts so much junk?
Not on this list is fragmentation, because I don't find that to be a real problem for my purposes. My app for work is 4.0+ only, and I test on a Galaxy Nexus; if it works there it'll work on a SIII or an Atrix HD or whatever else somebody wants to try. (We're outsourcing wide device testing to uTest, but our app isn't done so I haven't had the opportunity to try their services.)