- Varying screen resolutions
- Varying display sizes
- On board memory sizes differ greatly and go from minuscule (32mb) to “accepted standard” (16-32 gb)
- Many different versions “in the wild” with different capabilities
- Device manufacturers can create skins for the phone and change basic functionality and colors
- Cell phone carriers can further customize the experience and block certain abilities (e.g. installing form “unknown sources”)
- The seemingly random combination of all of the above
The “fragmentation” issue is that you, as a developer, have to test in many different combinations of devices and configurations to make sure your application runs satisfactorily in all of them. You also have to consider that your application layouts will be displayed in many different resolutions, so the end result might be pretty crappy in a tablet, for example.
In reality my guess is that you give up trying to support everything and try to get as much market as you can with as little extra development as possible.
solved What are some fragmentation issues you’ve encountered while developing Android apps? [closed]