Android envsetup.sh剖析
每次进入到android source 目录后的第一件事恐怕就是先执行. build/envsetup.sh,完成一些命令的初始化,今天主要分析envsetup.sh。
1. 命令-也就是envsetup.sh中的函数
function help() # 显示帮助信息
function get_abs_build_var() # 获取绝对变量
function get_build_var() # 获取绝对变量
function check_product() # 检查product
function check_variant() # 检查变量
function setpaths() # 设置文件路径
function printconfig() # 打印配置
function set_stuff_for_environment() # 设置环境变量
function set_sequence_number() # 设置序号
function settitle() # 设置标题
function choosetype() # 设置type
function chooseproduct() # 设置product
function choosevariant() # 设置variant
function tapas() # 功能同 choo易做图bo
function choo易做图bo() # 设置编译参数
function add_lunch_combo() # 添加lunch项目
function print_lunch_menu() # 打印lunch列表
function lunch() # 配置lunch
function m() # make from top
function findmakefile() # 查找makefile
function mm() # make from current directory
function mmm() # make the supplied directories
function croot() # 回到根目录
function cproj()
function pid()
function systemstack()
function gdbclient()
function jgrep() # 查找 java文件
function cgrep() # 查找 c/cpp 文件
function resgrep()
function tracedmdump()
function runhat()
function getbugreports()
function startviewserver()
function stopviewserver()
function isviewserverstarted()
function smoketest() function runtest()
function godir () # 跳到指定目录
# add the default one here
add_lunch_combo generic-eng
# Execute the contents of any vendorsetup.sh files we can find.
for f in `/bin/ls vendor/*/vendorsetup.sh vendor/*/build/vendorsetup.sh 2> /dev/null`
do
echo "including $f"
. $f
done
2. lunch命令
已经有人分析过了,直接搬过来:
http://www.lupaworld.com/home.php?mod=space&uid=131820&do=blog&id=149462
下面是详细解释,好多都没有用到过,看来我的确是个菜鸟
. build/envsetup.sh
build/envsetup.sh提供了几个有用的shell命令,使用
$. build/envsetup.sh
可以引入到shell环境中。下面整理并简述。特别,envsetup.sh还同时会引入vendor/和device /目录下的
vendorsetup.sh脚本。
help
显示帮助,列出提供的命令
get_abs_build_var
列出make 脚本中某变量的值,前缀上当前路径。ref dumpvar.mk
使用方法:
get_abs_build_var VAR_NAME
VAR_NAME是需要显示的 make 脚本中的变量。
例如:
get_abs_build_var TARGET_PRODUCT
返回 <Your Android Root>\<VAR_NAME Value>
get_build_var
www.zzzyk.com
列出make 脚本中某变量的值。ref dumpvar.mk
Usage:
get_build_var VAR_NAME
VAR_NAME是需要显示的 make 脚本中的变量。
Return:
<VAR_NAME Value>
Example:
get_abs_build_var TARGET_PRODUCT
check_product
检查指定的 TARGET_PRODUCT是否允许, 默认的有sim 和generic。 如果不允许, 则输出错误信息, 允许则无回显。
Usage:
check_product <YourTargetProduct>
Example:
check_product generic
check_variant
检查variant是否支持,支持则返回0,不支持则返回1。允许的variant列表定义在envsetup.sh 中的
VARIANT_CHOICES 中,默认是user,userdebug,eng。定制android时,可以在VARIANT_CHOICES 中添
加vairant。
Usage:
check_variant <YourVariant>
Example:
check_variant eng
setpaths
奇次执行时,将ANDROID_BUILD_PATHS 路径加到PATH中。偶次执行时,将ANDROID_BUILD_PATHS 路
径从PATH中去除。ANDROID_BUILD_PATHS 包括android 编译中要使用到的路径,例如
ANDROID_EABI_TOOLCHAIN,ANDROID_TOOLCHAIN,ANDROID_QTOOLS,
ANDROID_JAVA_TOOLCHAIN,ANDROID_PRODUCT_OUT 等等。
Usage:
setpaths printconfig
输出类似如下形势的配置信息。
============================================
PLATFORM_VERSION_CODENAME=AOSP
PLATFORM_VERSION=AOSP
TARGET_PRODUCT=generic
TARGET_BUILD_VARIANT=eng
TARGET_SIMULATOR=
TARGET_BUILD_TYPE=release
TARGET_BUILD_APPS=
TARGET_ARCH=arm
HOST_ARCH=x86
HOST_OS=linux
HOST_BUILD_TYPE=release
BUILD_ID=OPENMASTER
============================================
set_stuff_for_environment
依次调用settitle, set_java_home,setpaths,set_sequence_numb
补充:移动开发 , Android ,