Granted, the use of word "bugs" was a bit too much.
I consider it a bug when ´Environment.getExternalStorageState´ tells me the SDCard is mounted, when the SD-slot is empty. That was because parts of Samsung's internals storage where referred to as external storage.
I consider it very bad design when Android allows me to write Views that cause layout-passes multiple times during construction. (Because of setTypeFace). That Views are riddled with methods which cause re-layouts mixed with others that don't. There should be an annotation for this.
I know, nowadays there's a logging-statement if that occurs, that wasn't there in Android 4.2 IIRC.
On a complicated app you can either do proper separation of concern and compose everything in nested Views, but you have to throw everything back into a single View to get more performance. Or you write your own layout-manager which is what I did.
It's impossible to define constraints on animations. I can't tell android, hey that view is going to change it's height, but not it's width and it won't affect anything else, so save yourself some time and stop calculating the height of this letter for the 546th time in the last 10 seconds. rantrant
Hardware-Acceleration is a different matter. I ended up disabling it completely, because it would accelerate some animations, fades and make some other parts jittery. Most fine-grained layer-control specified in the Guide doesn't seem to affect anything.
And so on, and so forth.
Android development is painful compared to other SDKs and that's why app-quality is so low. You can claim that stems from confusion: no it doesn't, i've read large parts of the (UI) code by now and I've written software in many languages for many years.
Or ignorance: Maybe in the sense that I refuse the reason for all this: That most of Android was baked hastily in the beginning to get something out and fixing mistakes which would require most APPs to be redone is close to impossible. Android is the new Windows. ;)
I still don't see why this is a bad thing. Sure it would be nice if they split the file into multiple source files for maintainability. But, should we also chastise the Linux kernel for having source files that have more than 5K+ LOC that aren't documented nearly to the extent the Android source is?