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.

iCloud
  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