在脚本中,lunch $MTK_SYS_PROJ $_SYS_PROJ(如 lunch -userdebug A122 )用于:
lunch 这个函数的定义是在 split_build 脚本里定义的 还是在 envsetup里定义的?
在 Android 编译系统里,lunch 并不是普通的 shell 命令,而是 一个 shell 函数,它的定义来源和加载过程如下:
lunch 函数 不是在 split_build 里定义的。
envsetup.sh 脚本里定义的,或者更准确地说,是由 envsetup.sh 加载的其他脚本定义的。
在典型 AOSP/MTK 编译环境中:
build/envsetup.sh里面会有一行类似:
lunch() {
...
}或者它会 source 其他脚本,例如:
source build/core/envsetup.mk但本质上,你 source build/envsetup.sh 后,就会得到 lunch 命令。
lunch 的作用是:
TARGET_PRODUCT
TARGET_BUILD_VARIANT
TARGET_BUILD_TYPE 等
BoardConfig.mk、device.mk 等配置文件。
make 或 m 命令知道要编译哪个 product 和 variant。
当你在终端执行:
source build/envsetup.sh
lunch sys MMIenvsetup.sh 已经定义了 lunch 函数
lunch 会解析 sys(product+variant)和 MMI(device)
m 或 make 编译对应镜像
✅ 结论:
lunch 是 envsetup.sh 里定义的 shell 函数,不是 split_build 脚本。
split_build 只是某些 MTK 自定义的构建脚本,用于分区或增量编译,跟 lunch 的定义无关。
原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。
如有侵权,请联系 cloudcommunity@tencent.com 删除。
原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。
如有侵权,请联系 cloudcommunity@tencent.com 删除。