J2ME was my first experience with mobile app development. It was very direct and easy to program for! But it definitely needed testing on the different devices. We had an array of different phones to test on. And some definitely had a nicer implementation than others.
The Java it supported was very old fashioned, with no generics. Which was a pain at times.
If you mean Chinese or Russian OEMs with their own version of ASOP, well that's not really Android anymore and is not using the Play app store anyway.
Western devices have to go through certification to use the name Android, so its not the wild wild west you think it is (although obviously some bugs may fall through).
I certainly mean Android device I can buy in any European country from the lame 100 euros pre-paid throwaway phone up to 2000 euros three ways foldable phone, plus everything else running Android on cars, kiosks, TVs, handhelds and everywhere else Android gets installed as alternative to GNU/Linux by OEMs.
CTS only covers a subset of what everyone is doing with Android.
And it will never cover everything, because as the Android team likes to point out, they don't want to stiffle the innovation of their partners.
I also have experience across Sharp, Nokia and Sony Ericson devices from J2ME days, and whatever brands ship Android phones, and outside flagship Android models, it is a jungle out there in drivers, AOSP customisations, vendor specific APIs, so I am of different point of view.
The most infuriating thing was extreme fragmentation when it came to support of various APIs in devices, even devices from the same vendor. Nokia was prominently culpable of this. The Finnish giant vomited out an enormous stream of S40 and S60 phones whose support for APIs was all over the map, which meant producing a shitload of JARs depending of what you needed, and the code was cluttered with constant checks of what is supported and what not. What an irony given Java's official motto of "Write once, run anywhere". Just freaking no.
Being a developer for Nokia was its own kind of hell. They never understood what API standardization is for and didn't care about your time and effort.
Hey, here are 12 different devices for this year with different hardware, screen size and other equipment, and you'd better get your hands on all of them to make sure that your app really works and looks acceptably, because an emulator only gets you half way. Also, any firmware update from us can kick your house of cards apart, and there will be like three of them coming in the next year. Happy programming!
> whose support for APIs was all over the map, which meant producing a shitload of JARs depending of what you needed
I wouldn't be surprised if this was actually one of the reasons why Sun fought MS and Google when they tried to make their own "Java" versions (embrace+extend). They didn't want a repeat of the J2ME situation.
The Java it supported was very old fashioned, with no generics. Which was a pain at times.