android lunch menu,android lunch函数浅析

编程入门 行业动态 更新时间:2024-10-23 20:16:40

android lunch menu,android lunch<a href=https://www.elefans.com/category/jswz/34/1771370.html style=函数浅析"/>

android lunch menu,android lunch函数浅析

转自:.php?mod=space&uid=131820&do=blog&id=149462

build/envsetup.sh 脚本分析(lunch函数)

lunch函数提供了一个菜单,让开发人员选择需要编译的目标产品(target product)和变体(variant),并做一些检查,设置环境变量,并打印出主要的环境变量。

直接运行lunch(必须先运行 build/envsetup.sh,让lunch函数驻留到环境变量中)ning@ning-desktop:~/donut-compare/mydroid$ lunchYou're building on Linuxgeneric-eng simulator aosp_emulator_us-eng aosp_emulator_eu-eng aosp_dream_us-userdebug aosp_dream_eu-userdebug aosp_dream_us-eng aosp_dream_eu-eng aosp_sapphire_us-userdebug aosp_sapphire_eu-userdebug aosp_sapphire_us-eng aosp_sapphire_eu-engLunch menu... pick a combo:1. generic-eng2. simulator3. aosp_emulator_us-eng4. aosp_emulator_eu-eng5. aosp_dream_us-userdebug6. aosp_dream_eu-userdebug7. aosp_dream_us-eng8. aosp_dream_eu-eng9. aosp_sapphire_us-userdebug10. aosp_sapphire_eu-userdebug11. aosp_sapphire_us-eng12. aosp_sapphire_eu-engWhich would you like? [generic-eng] 7============================================PLATFORM_VERSION_CODENAME=RELPLATFORM_VERSION=1.6TARGET_PRODUCT=aosp_dream_usTARGET_BUILD_VARIANT=engTARGET_SIMULATOR=falseTARGET_BUILD_TYPE=releaseTARGET_ARCH=armHOST_ARCH=x86HOST_OS=linuxHOST_BUILD_TYPE=releaseBUILD_ID=Donut============================================用户也可以直接输入参数,不使用菜单ning@ning-desktop:~/donut-compare/mydroid$ lunch aosp_dream_us-eng============================================PLATFORM_VERSION_CODENAME=RELPLATFORM_VERSION=1.6TARGET_PRODUCT=aosp_dream_usTARGET_BUILD_VARIANT=engTARGET_SIMULATOR=falseTARGET_BUILD_TYPE=releaseTARGET_ARCH=armHOST_ARCH=x86HOST_OS=linuxHOST_BUILD_TYPE=releaseBUILD_ID=Donut============================================

下面是lunch函数源代码,用蓝色添加了一下注释,便于阅读:function lunch()

{

local answer

if [ "$1" ] ; then# lunch后面直接带参数answer=$1

else# lunch后面不带参数,则打印处所有的target product和variant菜单提供用户选择print_lunch_menu

echo -n "Which would you like? [generic-eng] "

read answer

fi

local selection=

if [ -z "$answer" ]

then# 如果用户在菜单中没有选择,直接回车,则为系统缺省的generic-engselection=generic-eng

elif [ "$answer" = "simulator" ]

then# 如果是模拟器selection=simulator

elif (echo -n $answer | grep -q -e "^[0-9][0-9]*$")

then# 如果answer是选择菜单的数字,则获取该数字对应的字符串if [ $answer -le ${#LUNCH_MENU_CHOICES[@]} ]

then

selection=${LUNCH_MENU_CHOICES[$(($answer-$_arrayoffset))]}

fi# 如果 answer字符串匹配 *-*模式(*的开头不能为-)elif (echo -n $answer | grep -q -e "^[^\-][^\-]*-[^\-][^\-]*$")

then

selection=$answer

fi

if [ -z "$selection" ]

then

echo

echo "Invalid lunch combo: $answer"

return 1

fi

# special case the simulator

if [ "$selection" = "simulator" ]

then# 模拟器模式export TARGET_PRODUCT=sim

export TARGET_BUILD_VARIANT=eng

export TARGET_SIMULATOR=true

export TARGET_BUILD_TYPE=debug

else# 将 product-variant模式种的product分离出来local product=$(echo -n $selection | sed -e "s/-.*$//")# 检查之,调用关系 check_product()->get_build_var()->build/core/config.mk比较罗嗦,不展开了check_product $product

if [ $? -ne 0 ]

then

echo

echo "** Don't have a product spec for: '$product'"

echo "** Do you have the right repo manifest?"

product=

fi# 将 product-variant模式种的variant分离出来local variant=$(echo -n $selection | sed -e "s/^[^\-]*-//")# 检查之,看看是否在 (user userdebug eng) 范围内check_variant $variant

if [ $? -ne 0 ]

then

echo

echo "** Invalid variant: '$variant'"

echo "** Must be one of ${VARIANT_CHOICES[@]}"

variant=

fi

if [ -z "$product" -o -z "$variant" ]

then

echo

return 1

fi

export TARGET_PRODUCT=$product

export TARGET_BUILD_VARIANT=$variant

export TARGET_SIMULATOR=false

export TARGET_BUILD_TYPE=release

fi # !simulator

echo# 设置到环境变量,比较多,不再一一列出,最简单的方法 set >env.txt 可获得set_stuff_for_environment# 打印一些主要的变量, 调用关系 printconfig()->get_build_var()->build/core/config.mk->build/core/envsetup.mk比较罗嗦,不展开了printconfig

}

更多推荐

android lunch menu,android lunch函数浅析

本文发布于:2023-06-16 17:33:13,感谢您对本站的认可!
本文链接:https://www.elefans.com/category/jswz/34/747778.html
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。
本文标签:函数   android   lunch   menu

发布评论

评论列表 (有 0 条评论)
草根站长

>www.elefans.com

编程频道|电子爱好者 - 技术资讯及电子产品介绍!