Since the ROM is the first thing one has installed on their Android device, this is the first thing we should consider, for a few different reasons.

Step 1.1: Base Apps

Since we are going No Gapps, we can’t rely on Google’s versions of the base apps - that is, the clock, calendar, contacts, phone, texting, and gallery apps that come preinstalled. Most ROMs come with the AOSP or their own versions of these apps preinstalled and you won’t have to worry about them. A few, such as Pure Nexus, assume that you are installing a Google Apps package that contains Google’s versions of these apps and does not include most of them. You can still use these ROMs, but be aware that you will have to find alternatives for these apps. There is a chart of alternatives on this website that you can reference, if needed.

Step 1.2: (microG) Signature Spoofing Support

If you are using microG as a replacement for the Google Play Services, the ROM that you install needs to have support for signature spoofing. In short, this allows microG to pretend to be the official Google Play Services, otherwise the system and other apps won’t listen to it. You can find more on the microG wiki, but here is a summary:

  • Some ROMs are patched by the developer to support signature spoofing and you don’t have to do anything more. Of these ROMs, those on Android 67 implement spoofing like any other system permission and the system will ask the user before allowing the permission. There is a list of these ROMs available at the wiki link above that should stay updated. The only ones that I am aware of are OmniROM and the OnePlus phone versions of Resurrection Remix.
  • Most ROMs do not have this patch because of perceived security issues. These can still be patched to support signature spoofing, but only if they are not odexed or have been deodexed. You can find links to a few different patching tools on the microG wiki, linked above (more likely up-to-date) or below:
    • Needle: The original patching script by moosd. Requires Python 3 and ADB.
    • Tingle: Forked from Needle by ale5000 with many improvements and bug fixes. Also requires Python 3 and ADB.
    • Haystack: A project by Lanchon that aims to patch the system in a different and better way than Needle/Tingle.