In other words: Fragmentation is a bit of a problem on the Android platform.
Sure, your software doesn't crash on any Android hardware. Good for you! But there's a big difference between does not crash and is useable.
Fortunately, your software is also usable on "average" Android hardware. Great! But there's a big difference between usable and useful, and an even bigger difference between useful and elegantly designed.
The problem is least-common-denominator design: You can't assume a hardware keyboard, and you can't assume a software keyboard, and you can't assume multitouch, and you can't assume an orientation sensor, and you apparently can't assume a minimum level of graphics performance. So you design something that runs well on some hardware, but not so well on others, in a way that's not necessarily easy for a potential software customer to understand or anticipate in advance. And you're careful not to accidentally take too much advantage of some hardware feature that isn't widely available, lest you box yourself into a niche.