Android编译系统(一)

Andoid 编译系统一
一、 编译命令。

.build/envsetup.sh

lunch

make –j16/8

执行Android系统的编译,必须运行envsetup.sh脚本,这个脚本会建立android 的编译环境,envsetup.sh文件定义了很多shell命令,这些命令在envsetup.sh脚本之后就可以从shell环境中调用了。编译中执行的lunch命令就是在envsetup.sh脚本定义的,在文件中 有add_lunch_combo命令,同时envsetup.sh定义了:

Execute the contents of any vendorsetup.sh files we can find.

for f in test -d device && find -L device -maxdepth 4 -name 'vendorsetup.sh' 2> /dev/null | sort \
test -d vendor && find -L vendor -maxdepth 4 -name 'vendorsetup.sh' 2> /dev/null | sort \
test -d product && find -L product -maxdepth 4 -name 'vendorsetup.sh' 2> /dev/null | sort

在device和vendor目录下搜索envsetup.sh文件 并执行它们。
Add_lunch_combo 命令功能就是将调用该命令所传的参数存放到一个全局的数组变量LUNCH_MENU_CHOICES中,执行“lunch”命令会打印出菜单项正是这项内容。
unset LUNCH_MENU_CHOICES
function add_lunch_combo()
{
local new_combo= 1localcforcin {LUNCH_MENU_CHOICES[@]} ; do
if [ “ newcombo"=" c” ] ; then
return
fi
done
LUNCH_MENU_CHOICES=( LUNCHMENUCHOICES[@] new_combo)
}

add the default one here

add_lunch_combo aosp_arm-eng
add_lunch_combo aosp_arm64-eng
add_lunch_combo aosp_mips-eng
add_lunch_combo aosp_mips64-eng
add_lunch_combo aosp_x86-eng
add_lunch_combo aosp_x86_64-eng

具体如:

上面这些选项都是通过add_lunch_combo命令加入的。

二 Envsetup.sh 脚本还定义了一些其他有用的shell 命令,这些命令可以单独使用。例如

Lunch 当前编译的产品
croot 跳转到根目录
m 编译整个源码
mm 编译当前目录所有模块,不编译依赖模块
mmm 编译指定模块,不编译依赖模块
mma 编译当前目录所有模块,编译依赖模块
mmma 编译指定模块,编译依赖模块
cgrep 对所有的c/c++文件执行grep命令
ggrep 对所有的Gradle文件执行grep命令
jgrep 对所有的java文件执行grep命令
resgrep 对所有的资源文件执行grep命令
sgrep 对所有的文件执行grep命令
godir 查找目录,并切换。

Lunch 命令没有参数,打印产品列表,以供选择,如果有名称,格式为“——-< build_variant >”其中其半部分是产品名称,后面是“build_variant”必须是,eng /user/userdebug 三者之一。

三、Lunch 主要作用就是根据用户输入或选择的产品的名来设置与产品相关的环境变量。

执行lunch之后,系统会打印当前的配置所生成的环境变量,例如输入 lunch 37 会出现

这些环境变量将影响编译过程。
PLATFORM_VERSION_CODENAME:平台版本名称,通常是AOSP(Android Open Source Project的缩写)
PLATFORM_ VERSION:Android平台的版本号。
TARGET_PRODUCT:所编译的产品名称。
TARGET_BUILD_VARIANT:表示编译产品的类型。可能值有 eng ,user .userdebug.
TARGET_BUILD_TYPE:表示编译的类型,可选值为release和debug当选择debug版本时,系统会加入调式信息,方便追踪。
TARGET_BUILD_APPS:编译系统时,这个变量值为空,编译单个模块时,这个模块的变量值为模块的路径。
TARGET_ARCH:编译目标的CPU架构。
TARGET_ARCH_VARIANT: 编译目标的CPU架构版本
TARGET_CPU_VARIANT: 编译目标的CPU代号
TARGET_2ND_ARCH: 编译目标的第二CPU架构
TARGET_2ND_ARCH _VARIANT: 编译目标的第二CPU架构版本
TARGET_2ND_CPU_VARIANT: 编译目标的第二CPU代号
HOST_ARCH:编译平台架构。
HOST_OS:编译平台使用的操作系统。
HOST_OS_EXTRA:编译平台操作系统的一些额外信息,包括版本号、产品名称、代号等。
BUILD_ID:编译版本信息,可以定义公司特有标识。
OUT_DIR:编译结果输出目录。

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值