许多个人站长或技术爱好者在使用自己的VPS或本地macOS机器编译Android Open Source Project (AOSP)时,在尝试运行核心配置命令lunch时,会遇到bash: lunch: command not found的错误。这个错误并非意味着lunch程序不存在,而是你的shell环境尚未加载AOSP编译所需的特定脚本和路径。
lunch命令是AOSP构建系统的一部分,它依赖于名为envsetup.sh的脚本来设置必需的环境变量、函数和路径。当你克隆完AOSP源代码后,必须手动执行这个“环境初始化”步骤。
解决方案:加载环境设置脚本
要解决lunch命令找不到的问题,你只需要在AOSP源代码根目录下,使用source命令加载envsetup.sh脚本。
步骤 1: 进入AOSP源代码根目录
首先,导航到你下载或同步的AOSP源代码的顶层目录。假设你的源代码位于~/aosp。
cd ~/aosp
步骤 2: 运行环境设置脚本
使用source命令(或简写的.)执行build/envsetup.sh脚本。注意:使用source至关重要,因为它会在当前的shell会话中执行脚本,从而加载函数和设置环境变量,而不仅仅是启动一个新的子进程。
source build/envsetup.sh
执行成功后,你会看到一些提示信息,并且你的当前shell环境现在已经导入了AOSP相关的函数,包括lunch、m、croot等等。
步骤 3: 验证并运行 lunch
现在,你可以直接运行lunch命令了。如果环境设置成功,系统将显示可用的编译目标列表,让你选择编译设备的配置。
lunch
预期输出示例:
You're building on Linux
Lunch menu... pick a configuration:
1. aosp_arm-eng
2. aosp_arm64-eng
3. aosp_x86-eng
...
Which product would you like to target? (Default is 'aosp_arm-eng'):
总结与技巧
- 为什么是source而不是直接执行? 直接执行./build/envsetup.sh会在子shell中运行,脚本结束后,所有设置的环境变量和函数都会丢失。source确保了这些设置在当前终端会话中保持有效。
- 新开终端怎么办? 每次打开新的终端窗口或SSH到你的VPS进行AOSP编译工作时,你都必须重新执行 source build/envsetup.sh。
- 快捷方式: 在macOS/Linux下,可以使用简写方式croot(该函数在envsetup.sh中定义)快速返回AOSP根目录,使用m代替make来启动编译。
汤不热吧