So, the ways of building Android are…
There are 3 ways (commands) of Setting up the Build Environment
lunch - Sets the Device Target which is specified by the user
breakfast - Syncs the Device Dependencies + lunch
brunch - breakfast + Starts the Build
Device Dependencies are synced by looking for a file named [rom_name].dependencies which specifies the same. It’s written in JSON.
brunch starts the build immediately after Setting the Environment
Usage of each of them
lunch rom_device-buildtype
breakfast device buildtype
brunch device
rom - ROM’s codename in source
device - Device’s Codename
buildtype - Either of these values -> user, eng, userdebug
Explanation of Values of buildtype is done HERE
| Build Type | Use |
|---|---|
| user | limited access; suited for production |
| userdebug | like “user” but with root access and debuggability; preferred for debugging |
| eng | development configuration with additional debugging tools |
Where userdebug is the preferably used for a Public Custom ROM Release. Debugging Tools in this Build are enough for normal debugging.
eng is only used for debugging non-working things, and not to be publicly released.