My biggest fragmentation issues have been the result of hardware differences. Carriers pick and choose which permissions are allowed/denied. An example, only ATNT denies access to AlarmManager. This means you cannot set or change the alarm through software without root. Now, due to this, you have to build a complex software alarm to do what the operating system should give you access to.