Github Codespaces中Android SDK的.devcontainer构建失败求助
我正尝试为Android开发搭建Github Codespaces,环境配置如下:
- 通过Chrome浏览器访问VS Code
- 4核CPU+8GB内存的免费层级Codespaces
我在./.devcontainer/devcontainer.json中配置了devcontainer:
{ "name": "Android Container", "image": "mcr.microsoft.com/devcontainers/universal:2", "features": { "ghcr.io/devcontainers-contrib/features/gradle-sdkman:2": { "version": "latest", "jdkVersion": "11", "jdkDistro": "ms" }, "ghcr.io/devcontainers-contrib/features/kotlin-sdkman:2": { "version": "latest", "jdkVersion": "11", "jdkDistro": "ms" }, "ghcr.io/mikaello/devcontainer-features/kotlinc:1": {}, "ghcr.io/akhildevelops/devcontainer-features/android-cli:0": {}, "ghcr.io/jarrodcolburn/features/android-sdk:0": { "platforms": "27", "build-tools": "33.0.2" } } }
配置使用JDK11,和我Win11电脑上Android Studio自带的JDK版本一致。但执行「Rebuild Container」时,Codespaces在“Setting up your codespace”页面显示“Container build failed”,随后进入恢复环境。错误日志核心内容为:
#20 57.89 ./install.sh: 32: Syntax error: "(" unexpected #20 57.89 ERROR: Feature "Android SDK" (ghcr.io/jarrodcolburn/features/android-sdk) failed to install!
我已搜索相关问题但未找到有效解决办法,请问该如何解决?
这个错误是ghcr.io/jarrodcolburn/features/android-sdk的install.sh脚本使用了bash专属语法,但容器默认用dash执行脚本导致的,可通过以下方式解决:
1. 替换为维护更完善的Android SDK Feature
移除问题feature,改用官方或更活跃的Android SDK devcontainer feature,比如ghcr.io/devcontainers/features/android:1,修改后的配置如下:
{ "name": "Android Container", "image": "mcr.microsoft.com/devcontainers/universal:2", "features": { "ghcr.io/devcontainers-contrib/features/gradle-sdkman:2": { "version": "latest", "jdkVersion": "11", "jdkDistro": "ms" }, "ghcr.io/devcontainers-contrib/features/kotlin-sdkman:2": { "version": "latest", "jdkVersion": "11", "jdkDistro": "ms" }, "ghcr.io/mikaello/devcontainer-features/kotlinc:1": {}, "ghcr.io/akhildevelops/devcontainer-features/android-cli:0": {}, "ghcr.io/devcontainers/features/android:1": { "platforms": "android-27", "buildToolsVersion": "33.0.2" } } }
注意:官方feature参数名有差异,platforms需写成android-27格式,build-tools对应buildToolsVersion。
2. 强制容器用bash执行脚本
如果一定要保留原feature,可以通过自定义Dockerfile将容器默认shell改为bash:
- 创建
./.devcontainer/Dockerfile:FROM mcr.microsoft.com/devcontainers/universal:2 SHELL ["/bin/bash", "-c"] - 修改
devcontainer.json添加build配置:{ "name": "Android Container", "build": { "dockerfile": "Dockerfile" }, "features": { // 保留原feature配置 } }
3. 移除重复冲突的Feature
检查是否存在重复的Android SDK相关组件,比如ghcr.io/akhildevelops/devcontainer-features/android-cli可能已包含基础SDK,重复安装会引发冲突,可尝试移除其中一个。
内容的提问来源于stack exchange,提问作者0xdead

