You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

编译AOSP源码时遇“LUNCH_MENU_CHOICES[@]:未绑定变量”错误的解决方法

解决AOSP编译时LUNCH_MENU_CHOICES[@]: unbound variable错误

我之前也碰到过这个问题,刚好能帮你理清报错的原因和解决办法:

问题还原

你在Ubuntu 16.04上编译AOSP 7.1.1_r6源码时,执行了以下命令:

curl https://storage.googleapis.com/git-repo-downloads/repo > repo
chmod a+x repo
./repo init -u https://android.googlesource.com/platform/manifest -b android-7.1.1_r6
./repo sync
. build/envsetup.sh

结果在执行. build/envsetup.sh时触发报错:

build/envsetup.sh: line 508: LUNCH_MENU_CHOICES[@]: unbound variable

错误原因

这个问题本质是bash的set -u(即nounset)选项导致的:当该选项开启时,引用未初始化的变量或数组会直接抛出错误。AOSP的envsetup.sh脚本中,LUNCH_MENU_CHOICES数组需要加载完设备/product配置后才会初始化,如果你的shell默认开启了set -u,或者repo同步不完整导致配置未正常加载,就会触发这个报错。

解决方案

给你两个靠谱的解决途径,任选其一即可:

方法1:临时关闭nounset选项

在执行envsetup.sh前先关掉严格变量检查,执行完成后可按需恢复:

set +u
. build/envsetup.sh
set -u  # 如果你之前默认开启了这个选项,执行完脚本后可以重新开启

方法2:确保同步完整并使用bash执行

  1. 先确认repo sync是否完整完成——网络不稳定时容易出现同步中断,重新执行同步并利用多核加速:
    ./repo sync -j$(nproc)
    
  2. 切换到bash再执行脚本(Ubuntu 16.04默认是bash,但zsh等其他shell可能存在兼容性问题):
    bash
    . build/envsetup.sh
    

额外提示

解决报错后,就可以正常使用lunch命令选择编译目标了,比如:

lunch aosp_arm-eng

内容的提问来源于stack exchange,提问作者Ciro Santilli OurBigBook.com

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.29 08:11:05