Things Google have done recently to combat fragmentation:
- Announced the release of the Android PDK, a preview-esque version of the new OS available to manufacturers before the official release hits source
- Begun de-coupling official Google apps from the OS and therefore from the update cycle (e.g. Google keyboard, IIRC Gmail and Maps, etc)
- From a 'smoke and mirror' perspective, kept the Android codenames the same across Jellybean (4.1 and 4.2)
- Most recently, "updated" Android completely without actually updating it via pushing updates to core apps and services like Play Store, Music player, sync APIs, etc.
- Adding to above: Held off on releasing a numbered Android update to let the natural cycle for replacing handsets to continue (so people with Android 2.1 phones hit the end of their contracts and buy 4.2 phones)
.. and certainly much more. I'm thinking the #1 point on the PDK will be significant as we have yet to see the real effect of this. Previously the source code for new Android versions would be released to both the public and manufacturers at the same time, so you'd have teams like Cyanogenmod quickly port and do their own QA on releases using stock Android, while manufacturers had to update their custom UI's against the new version, go through their own rigorous QA processes, go through telco QA processes and timeframes, etc. The end result was updates being released by community teams (excluding Nexus devices) long before manufacturers did, leading to much discontent.