What is the meaning of AOSP's 'lunch' combinations and what do I need to choose?

22.1k Views Asked by At

I am a new comer to Android devices ROM development. Anyway, I am now in the progress of building AOSP to a Chinese device with a 64-bit processor. I am following the menu at source.android.com, and when I am running the "lunch" command, the terminal says: "Lunch menu... pick a combo:".

There are two options of which I am debating: aosp_arm-eng and aosp_arm64_eng.

As I have mentioned, I am building for a 64-bit processor device. Does it mean that I need to pick the aosp_arm64-eng? Because I have tried it, but then the emulator didn't work for some reason...

2

There are 2 best solutions below

1
On

Those names are constructed, on the fly, by the build system. They reflect the specific device builds in the $AOSP/device directory (specifically, by running the the vendorsetup.sh files in the subdirectories).

The portion of the name before the hyphen ('-') is the target hardware. The portion after the hyphen is one of eng, userdebug, and release. Those keywords control the debugging tools added to the build and whether adbd runs as root or not.

Both aosp_arm-eng and aosp_arm64_eng should produce a useful emulator. Neither, however, will work on your device. For your device you will need a specific, customized, build. If there isn't one already available, creating it can be quite time consuming.

2
On

(two years later)

This answer is just to update the prior answer further. The "lunch" menu combos are made up of two or three fields. The first two are as stated above and repeated here:

  1. The first field (the portion up to the first hyphen '-') is the target hardware (exported as TARGET_PRODUCT).
  2. The second field (the portion following the first hyphen, up to the optional second hypen, or end of line) is one of the keywords, eng, userdebug, release (exported as TARGET_BUILD_VARIANT).
  3. The third (optional) field (the portion following the optional second hypen) is the version (if present, it's exported as TARGET_PLATFORM_VERSION).

Not all possible lunch combos are listed though. The most notable one is sdk-eng and variants. This one sets up the build system so that you can build the different SDKs, for instance:

    lunch sdk-eng
    make -j8 win_sdk