当前位置:操作系统 > 安卓/Android >>

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 ,
CopyRight © 2022 站长资源库 编程知识问答 zzzyk.com All Rights Reserved
部分文章来自网络,