Flashing a new Android ROM is painless

Maybe I should phrase that as “can be painless”. Using Titanium Backup on Android makes flashing to a new ROM a breeze. I figured I’d walk people through the steps of flashing a ROM that requires wiping all of your existing data. Moving from different types of ROMs usually requires wiping data because of incompatibilities. The new ROM might not understand how the old ROM stored data in a certain database, yadda yadda. If you don’t wipe, you’ll often get apps that force close (FC) as they encounter data in format they just don’t understand. Here’s a step-by-step process of moving to a new ROM and restoring all of your data:

  1. Make sure you have root access on your current build. Almost every single stock build can be rooted without having to wipe your data. There are a few exceptions, the Galaxy Nexus being one of them. One of the steps to getting root on the Gnex involves unlocking the bootloader. This is directly supported by Google, but the process of unlocking the bootloader will completely wipe the device. Google does this for security reasons.
  2. Back up your apps and system data using Titanium Backup PRO. Sure, you can install the free version of Titanium Backup but then you’d have to restore your apps one-by-one, manually. Spend the roughly $7 on the PRO version, for your sanity. Once installed, run TB and do a batch backup: Menu > Batch > tap on “Backup all user apps + system data”. This will take some time, roughly 10 minutes for every 50 apps you have installed.
  3. Install ROM Manager. This is the easiest way to flash a custom recovery to your phone. In a nutshell, recovery is a separate bootable OS for your phone. ROM Manager lets you install Clockwork Mod (CWM) recovery, a powerful system for maintaining your device. From within ROM Manager, you can flash CWM and then perform a full device backup. If you ever flash a ROM that isn’t 100% fool-proof, I’d recommend a full backup first.
  4. Download the ROM of your choice. XDA is the most comprehensive source for ROMs though the quality of discussion on RootzWiki is exponentially higher. Most ROM posts will explain how to install the ROM; there might be a few additional steps you’ll need to perform based on the ROM you choose. Just copy the ROM zip file to your SD or internal storage of your device.
  5. Wipe your data and flash the new ROM. From within ROM Manager, tap “Reboot into Recovery”. Wait for the system to boot into a text-centric UI. On most phones, you navigate up and down using the volume buttons and choose a list item using the power button. The touch screen does not function in CWM. The first step is to wipe your data: “wipe data/factory reset”. Once this is complete, navigate to “install zip from sdcard” > “choose zip from sdcard” and then find the ROM zip file you downloaded and copied over earlier. The flash may take a few minutes. Once complete, navigate to the top level of the UI until you see “reboot system now”. The first boot will take quite a bit longer than usual.
  6. Enjoy your new ROM! Wait, what about all my data? You jerk!
  7. Log in to your Google account. This will restore all of the contacts stored with Google, your email from Gmail, and any calendar entries from Google Calendar. It _might_ restore some of your apps, but that process is extremely flaky and unreliable. I personally use ridiculously strong passwords that I can never remember so I use the password vault Keepass. Before I log in to my Google account, I connect the phone to my computer and copy over my Keepass file. From the device, I then download KeepassDroid. Now I have access to all my passwords before even getting Market access.
  8. Reboot. For some reason, custom ROMs like to be rebooted after every major event. Logging in to your Google account is one of those events. As soon as the device says you are successfully logged in, reboot.
  9. Install Titanium Backup. Open the Market and after accepting the ToS, don’t worry about installing any from My Apps other than Titanium Backup. Titanium Backup will restore all of your apps in a way that the Market understands. To your device, all of your apps will seem like they were installed from the Market (if that app is available on the Market). This means the apps will get updates and everything like normal.
  10. Restore your user apps. From within TB: Menu > Batch > run “Restore missing apps”. Do not restore your system data! Remember how I said custom ROMs might not understand some system data so we did a data wipe? If you restore the system data, you’ll get this issue.
  11. Reboot. Major event, reboot.
  12. Backup your new ROM. The device should have all of your apps restored and should be running smoothly. You’ll still be missing a few things like your launcher setup, your wifi settings and a few other system items. Before we try to selectively recover that data, use ROM Manager to create another full backup. You can use this backup incase apps start FCing after you restore some system data.
  13. Restore some system data. We won’t be using batch mode in TB here, we only want to restore a few bits of data. If you want your wifi settings, look for “Wi-Fi Access Points”. Launcher shortcuts, look for “[Desktop]” followed by some other characters. If you used a custom launcher like LauncherPro, your shortcuts should have already been restored. TB cannot backup widgets so any widgets will have to be placed manually. Other keywords to look for include [BOOKMARKS], [ALARMS], [PLAYLISTS], [SMS/MMS PREFS], [VOICEMAIL], [SMS/MMS/APN], [WALLPAPER/SETTINGS], [SETTINGS/BLUETOOTH] and [USER DICT]. If any of these backups offer the ability to restore and app and data, only restore the data.
  14. Reboot. Major event, reboot.
  15. [OPTIONAL] Re-authorize other Google apps. ┬áMany Google applications (Voice, Reader, et cetera) don’t require you to enter your username and password, they can simply add permission requests to your Google accounts on device. After you restore data for those apps, you’ll need to launch them and accept the permissions request to use the apps.
  16. Enjoy your new ROM! For real, this time.