Advanced phone customization/Installing your custom ROM

Now that we've the prerequisites ready, let's start!

Flashing recovery Edit

A recovery is a type of bootloader which allows you to flash custom ROMs, back up the current OS (including apps) of your phone and wipe the phone if desired. Since most phone bootloaders are far too limited in their capability, we need to flash a custom one.

For this guide, we'll use Team Win Recovery Project (TWRP).

Download TWRP for your device from here. Then enter download mode. How to access it depends on your device. Once in there, flash it and immediately boot to recovery (hint: the combination is most likely different!). If you do not boot immediately to recovery, you'll most likely find that the original bootloader is still present; repeat the process if that happens.

Once you are in recovery, it's fine to restart; you'll see your stock OS. This is normal as you haven't overwritten the OS yet, only the recovery.

Installing your custom OS Edit

  1. Go to Wipe and wipe off the system and data partitions.
  2. Go to Advanced and wipe off the Dalvik cache.
  3. If the ROM is already present on your phone, go to Install and select the ROM to install. If not, you need to download the Andriod SDK. Launch adb, and use the adb send and adb push to install the ROM, whose file should be in your hard drive.
  4. Flash GApps. You must do this before leaving the recovery (Android 6+). If the phone boots, restart the process, as the phone will misbehave if GApps is installed after the phone first boots.
  5. Restart the phone and complete the first boot process.

If you get an error like Failed to mount '/data' (invalid argument), then your phone partition is most likely encrypted. In that case, go to Format, and select the option to format data. You will lose all of your data in your internal storage.

Logs Edit

1. On the computer side: Here's the log from adb:

F:\Program Files\Android\android-sdk\platform-tools>adb sideload F:\Users\<username>\Downloads\ 
loading: 'F:\Users\<username>\Downloads\'* daemon not running. starting it now on port 5037 * 
* daemon started successfully * 
Total xfer: 0.95x

F:\Program Files\Android\android-sdk\platform-tools>adb sideload F:\Users\<username>\Downloads\
loading: 'F:\Users\<username>\Downloads\'
error: closed 

F:\Program Files\Android\android-sdk\platform-tools>adb sideload F:\Users\<username>\Downloads\
Total xfer: 1.19x

The error on the second part occurred because I forgot to set the phone to adb sideload again.