AOSP编译系统初探(二)

本文深入探讨AOSP编译过程中的lunch命令,解释如何选择编译目标,以及该命令如何配置编译信息。lunch在build/envsetup.sh中定义,用于设定产品和变体,并通过相关函数设置环境变量,如set_title、set_java_home、setpaths和set_sequence_number。lunch的作用在于确定合法的<product>和<variant>,并将衍生的编译参数导出为环境变量。
摘要由CSDN通过智能技术生成

(二)编译的第二步是用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 
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值