(二)编译的第二步是用lunch命令来选择一个编译目标以完成基本的编译信息配置,也可以通过带参数的lunch命令来直接选择一个编译目标。如果运行不带参数的lunch命令,终端输出如下:
$ lunch
You're building on Linux
Lunch menu... pick a combo:
1. aosp_arm-eng
2. aosp_arm64-eng
3. aosp_mips-eng
4. aosp_mips64-eng
5. aosp_x86-eng
6. aosp_x86_64-eng
7. aosp_manta-userdebug
8. aosp_deb-userdebug
9. aosp_grouper-userdebug
10. full_fugu-userdebug
11. aosp_fugu-userdebug
12. aosp_tilapia-userdebug
13. aosp_flo-userdebug
14. aosp_nx40x-userdebug
15. aosp_aries-userdebug
16. aosp_shamu-userdebug
17. mini_emulator_arm64-userdebug
18. mini_emulator_arm-userdebug
19. mini_emulator_x86-userdebug
20. mini_emulator_mips-userdebug
21. mini_emulator_x86_64-userdebug
22. aosp_mako-userdebug
23. aosp_hammerhead-userdebug
Which would you like? [aosp_arm-eng]
然后输入一个序号来选择一个编译目标,或直接按【ENTER】来选择默认的选项。如果输入合法的话,终端输出如下。
============================================
PLATFORM_VERSION_CODENAME=REL
PLATFORM_VERSION=5.0.1
TARGET_PRODUCT=aosp_arm
TARGET_BUILD_VARIANT=eng
TARGET_BUILD_TYPE=release
TARGET_BUILD_APPS=
TARGET_ARCH=arm
TARGET_ARCH_VARIANT=armv7-a
TARGET_CPU_VARIANT=generic
TARGET_2ND_ARCH=
TARGET_2ND_ARCH_VARIANT=
TARGET_2ND_CPU_VARIANT=
HOST_ARCH=x86_64
HOST_OS=linux
HOST_OS_EXTRA=Linux-3.13.0-43-generic-x86_64-with-Ubuntu-12.04-precise
HOST_BUILD_TYPE=release
BUILD_ID=LRX22C
OUT_DIR=out
============================================
可以看到运行完lunch之后,很多自定义变量便获得了与你选择的编译目标相对应的值。这是如何完成的呢?
lunch是定义在build/envsetup.sh中的一个脚本函数,内容如下。
function lunch()
{
local answer
if [ "$1" ] ; then
answer=$1
else
print_lunch_menu
echo -n "Which would you like? [aosp_arm-eng] "
read answer
fi
local selection=
if [ -z "$answer" ]
then
selection=aosp_arm-eng
elif (echo -n $answer | grep -q -e "^[0-9][0-9]*$")
then
if [ $answer -le ${#LUNCH_MENU_CHOICES[@]} ]
then
selection=${LUNCH_MENU_CHOICES[$(($answer-1))]}
fi
elif (echo -n $answer | grep -q -e "^[^\-][^\-]*-[^\-][^\-]*$")
then
selection=$answer
fi
if [ -z "$selection" ]
then
echo
echo "Invalid lunch combo: $answer"
return 1
fi
export TARGET_BUILD_APPS=
local product=$(echo -n $selection | sed -e "s/-.*$//")
check_product $product
if [ $? -ne 0 ]
then
echo
echo "** Don't have a product spec for: '$product'"
echo "** Do