Nix-shell环境下Bazel构建Android应用失败问题求助
Nix-shell环境下Bazel构建Android应用的符号链接兼容问题
问题现象
在Nix-shell环境完成依赖配置后,使用Bazel构建Android应用时失败:Bazel提示需安装30.0.0及以上版本的Android Build Tools,但执行sdkmanager命令确认已安装33.0.1版本。环境变量、路径配置均正常,但Android SDK的build-tools和platforms目录为指向Nix Store的符号链接。
排查尝试与结果
- 更新WORKSPACE文件,采用新版Bazel Android构建规则,问题未解决
- 替换符号链接为实际复制的
build-tools目录后,不同Bazel版本表现不同:- Bazel v6:触发内存不足错误
- Bazel v5:出现脱糖检查不支持错误
- Bazel v4:在同时复制
platforms目录后,构建成功
临时可行方案
若需紧急完成构建,可执行以下操作:
- 将Android SDK的
build-tools和platforms目录从Nix Store复制到普通本地路径,避开符号链接 - 使用Bazel v4版本执行构建命令
根因定位
Bazel 6.1.2的代码中未实现对build-tools目录符号链接的检测逻辑,导致无法识别已安装的高版本Build Tools。该问题已提交至GitHub Issue(编号#18345)。
内容的提问来源于stack exchange,提问作者dweipert
相关产品推荐
相关产品推荐

