Lately, there's been a lot of hate about the Moto X getting KitKat before the Nexus 4. I've seen countless people saying "I bought a Nexus to get updates early, and the Moto X gets it first?" and many others have said virtually the same thing. I can't say I blame them though, while on the other hand, I'm happy for Verizon Moto X users. Well today, one of Google's Engineers Dan Morrill popped up on Reddit and talked about clearing data on Google Services Framework as well as the Nexus OTA process. Here's what he said about the Google Services Framework trick we all do:
Doing this changes the primary ID by which Google knows your device. As far as the servers are concerned, the device was basically factory reset. There are many downstream effects of this, but a big one is that this invalidates the tokens used by any app that uses GCM (which is nearly all the Google apps, and a ton of third-party apps.)
How apps react to GCM IDs changing varies by app. With Play Store you have to log out and log back in, I think Gmail usually handles it transparently eventually but won't get new mail notifications for a while, etc. Some apps you may have to clear data on to recover. All apps will simply stop getting GCM push-messages, until they get a new GCM ID; some do this frequently, others rarely, and some apps use the GCM ID as an ID on their own servers (as it is opaque and basically random), so other things besides push messages may not work.
Nothing bursts into flames, but it makes a ton of nuisances on the device, including some that can look pretty mysterious. Your mileage will vary depending on what apps you use.
All of this can be avoided by just doing an 'adb sideload' if you are impatient.
So that little trick about clearing Google Services Framework data, yeah it's not really a trick and probably hurts you more than helps you. As it basically tells Google it's a new device. Well good to know that I don't need to do that anymore.
In another thread over on Reddit, Dan Morrill also gave us some insight on the Nexus OTA process. And it's actually exactly as I thought, here's what Dan had to say:
Rollouts are conducted in phases. Typically they start at 1% of devices for around 24 - 48 hours; we watch the return rates and resulting device checkins and error reports (if any), and make sure nothing looks wrong before sending it to more. Then typically it goes to 25%, 50%, 100% over the course of a week or two.
What the percentages mean is that when your device checks in, it has a 1% chance (for example) of being offered the OTA. If it doesn't (randomly) get an offer, it will never get an offer until the next batch.
IOW, once your device checks in and gets turned down, that's it until the next batch. Mashing on the "check for updates" button just causes your device to check in again, and get automatically turned down again. Think about how that makes your device feel! WON'T SOMEONE PLEASE THINK OF THE PHONES?!
That said, once the new batch does start, hitting that button does give you a new roll of the dice -- but once. Since devices usually only check in for system updates every 24 hours (I think? Certainly on a many-hours basis) this can get you your shot sooner than it would happen on its own.
So, mash away. :) Just be patient, and mashing on it more often than once or twice a day isn't going to gain you anything.
Edit: also, keep in mind that this isn't first-come/first-served. You're not racing other devices to get your slot in the current batch, or something.
So the moral of all of this is basically, do not clear the Google Services Framework data, and don't check for updates constantly throughout the day. It'll get to your device when it gets there. Sounds good?