HTC Dream(aka T-Mobile G1, Android Dev Phone 1)のcontactsが同期しなくなったので直してみる

ファーム書き換え後のデータが空の状態でgoogleサーバと同期したらサーバ側のデータが消えてしまった。
MyBackupで取ってあったバックアップを戻しても一向にsyncしない。Dreamにはデータがあるのにサーバに転送されない。
いろいろやってもだめだったので、最終的に以下の手順で復旧させた。PC側から操作したが、よく考えるとDream単独でもできる(Terminal Emulatorを入れておこう)。

contactsのsync情報を削除する

以下のSQL文を発行してsync関係のフィールドを全て空にする。

adb shell
$ su
# sqlite3 /data/data/com.android.providers.contacts/databases/contacts.db
sqlite> update people set _sync_account=null, _sync_id=null, _sync_version=null, _sync_local_id=null, _sync_mark=null;
sqlite> .exit
# reboot

これでsyncするようになった。google側にデータを送ろう。
google側に全てのデータが転送されたのを確認したら、念のためexportしてバックアップ(contacts.csv)を作っておく。

googleをベースに再同期

Dream側のcontactsのデータを全て消す。

adb shell
$ su
# rm /data/data/com.android.providers.contacts/databases/*
# reboot

これでsyncすると万全。