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

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.23 02:22:49