Google Authenticator hasn't been updated in 2 years and it's starting to show its age. It's an ugly, single device, no backups allowed authenticator with a tiny font.
Authy on the other hand is a better looking, multi-device authenticator with a large font.
I can also access the tokens for any account from a desktop computer when I flash new ROMs or Developer Previews which require user data to be reset.
So I'm making the switch, and here is how you can as well.
In order to migrate the 2FA tokens over to Authy without invalidating the old tokens you only need an Android phone with root access, and adb installed locally.
So plugin your phone and fire up a terminal/command prompt and enter.
adb shell
su
sqlite3 /data/data/com.google.android.apps.authenticator2/databases/databases
If you are running Android 5.0 or greater you'll most likely see this error message:
Error: only position independent executables (PIE) are supported.
The easiest way around this is to download an sqlite binary that's been compiled for Lollipop. I got mine from XDA.
Download and copy it to your downloads folder, then head back to the terminal/command prompt and copy it over.
su
mount -o remount,rw /system
cp /sdcard/Download/sqlite /system/xbin
mount -o remount,ro /system
Now we're ready to get our data from the sqlite database.
sqlite3 /data/data/com.google.android.apps.authenticator2/databases/databases
The shell prompt will change from #
to sqlite>
Enter in the select query
select * from accounts;
And you should get something similar to
1|gmail.com|xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx|0|0|0|Google|Google
2|github.com|xxxxxxxxxxxxxxxx|0|0|0|GitHub|GitHub
3|LastPass|xxxxxxxxxxxxxxxx|0|0|0|LastPass|LastPass
Now head over to http://goqr.me/#t=url and generate the a QR code for each account by using following URL pattern:
otpauth://totp/screenconnect?secret=XXXXXXXXXXXXXXXX
From here just scan each QR in to Authy, and select the relevant logo.