I'm using both iOS and Android devices, so I need the contacts in sync between iCloud and Gmail.
I did it with Contacts.app on Mountain Lion, there is a check box that says "Synchronize with Google".
When this is checked, Contacts.app will fetch all my Gmail contacts and store it locally ("On My Mac"), I manually linked duplicate contacts and now every contact in Contacts.app has a "linked cards" field that links to an "On My Mac" card and an "iCloud" card.
This works perfectly in Contacts.app, no duplicates. But in Messages.app, when I click that little plus sign and a list of my contacts gets popped up, there are exactly two card entries for each contact. (I guess one for "On My Mac" that syncs with Google and one for "iCloud").
This is driving me crazy...
BTW, is it possible to search for phonetic names (there is such a field in Contacts.app) directly in Messages.app (not in the contacts popover)?