They have to re-do everything. The linux kernel does not have a stable binary interface, so the various blobs used have to be updated, or the hooks that go into the kernel that attach those blobs have to be updated. The Android code was not merged into the kernel tree by Linus because it broke too many things and caused too many issues.
I'm a very happy linode.com
customer, I'm sure you will be too!