This article is meant for beginners who are just starting to learn android custom rom development. Motivation: When I started all this, it wasn’t easy to understand AOSP and it’s process. So I decided to write an article so that newbies can understand faster.

What is AOSP ?

Android is the most popular Mobile operating system in the world today. Android Open Source Project (AOSP) is a production quality Open Source Software for Embedded Devices such as Mobiles, Tablets, TV’s by GOOGLE inc .

By AOSP anyone can download Android sources make changes to it and create their own customized OS for their device !

Aosp source is hosted at and

project review and management is done at

What is a custom ROM ?

Although the word ROM means Read-Only Memory, a custom ROM is the one that has been modified, customized according to one’s requirements or wants! As AOSP is Open-Source (with Apache License 2.0) any developer can edit, modify and compile the code and release it for various devices .

Custom ROMs are known for their performance, battery-life and bloatfree-ness with some added customization options!

Some of the popular CustomROM projects are

  • Lineage OS ( previously Cynogen MOD)
  • OmniROM
  • Paranoid Andoid
  • Resurrection Remix
  • Pixel Experience
  • GrapheneOS (Security and privacy focused)

… and many more More can be found here

Why build your own system ?

  • Full control over device software ( remove bloat, stop telemetry data, more privacy)
  • Extend device lifetime beyond OEM support
  • Customize/Personalize device
  • Get Latest Security Patch directly from AOSP
  • Live life on Edge ; )

What are Pre-requisites ?

No pre-requisites, only needed is patience and willingness to learn new stuff ! : )

Although it’s better to understand some technical concepts which you will need. Some of them are listed below with references you must read =>

Below are some File Structures which are use by different parts in source, make sure you know the basics.

Name Extension
Makefile .mk / Makefile
Blueprint .bp
Shell Scripts .sh
Python Scripts .py
GoLang .go
Extensible Markup Language .xml
Java .java
Java ARchive .jar
C .c
CPP .cpp
Header file .h
XML Schema Definition .xsd
eXtensible Stylesheet Language .xsl
Yacc File .y
Device Tree Files .dts / .dtsi
Source File(written in Assembly) .S
Perl Script .pl
Config File .conf

Where to ask for if I get errors ?

Now that you have decided to dive into the amazingly complex stuff, it is obvious that you will face some difficulties ! I recommend to use your friend Google (or any other search engine) to search for the debug message or any errors. Also use Github search to search for fixes commits.

Moreover you can join Groups at XDA-Developers and Telegram »

(Note: Please read the Rules of specific group before you ask anything, be modest and have patience)

Here’s a Playlist of Youtube Videos Related to AOSP Building : AOSP Build References

Happy Building : )

Next in Series : Building Android - Setting Up Build Environment