Edit: Mac Access is no longer required
I managed to get iCloud Contact Sync working on Android devices, this should work for every single CardDav compatible device, how requires you to have a Mac in order to get the vital data.

Firstly on your Mac.

  1. Open Terminal
  2. cd to cd ~/Library/Application\ Support/AddressBook/Sources
  3. Go to the most recent directory, this is usually your iCloud one, type ls -l to see the directories and cd "latest folder here"
  4. Open the configuration file with nano Configuration.plist
  5. Press Ctrl + W and type servername
  6. Keep that window open, your going to need it.

On Android, install a CardDav app, this one is great and free.

  1. Add an account in CardDav
  2. For Server name, enter the servername from the file we opened, so for example "https://p01-contacts.icloud.com/123456/principal" You can now just enter http://contacts.icloud.com
  3. Make sure SSL is checked
  4. For username enter your iCloud username (example [email protected]) and password enter your iCloud password.
  5. Press Ok, wait a few seconds for it to confirm

And voilla, your iCloud contacts now sync with your Android device, it may take a few minutes for them to show up.

I hope this helps