
redemonbr/android-sdk本容器镜像包含构建Android应用所需的工具链,当前版本包含:
***),包含:
35.0.0,"cmdline"变体除外)35.0.2,"cmdline"变体除外)API Level,"cmdline"和"tools"变体除外)PATH环境变量自2023-02-12起,构建的镜像要求接受Google的Android SDK许可证。除非设置ASDK_PROMPT_LICENSES禁用提示或覆盖入口点,否则容器启动时会显示许可证提示。可手动接受或自动接受(需已阅读并同意许可证)。默认行为是在容器入口点提示许可证供手动查看和接受。
若要在入口点自动接受许可证,需将环境变量ASDK_ACCEPT_LICENSES设置为yes、true或1。若未设置(默认)或设置其他值,容器将提示接受许可证。更多环境变量信息见环境变量部分。
标签格式:<base_image>-<variant> 或 <base_image>-api-<level>。
基础镜像指构建本镜像所基于的底层镜像:
alpine3.21(别名:alpine3、alpine):基于alpine镜像,Alpine Linux最新稳定版alpine3.20:基于alpine镜像,Alpine Linux仍支持安全修复的最新稳定版alpine3.19:基于alpine镜像,Alpine Linux仍支持安全修复的最新稳定版alpine3.18(弃用通知):基于alpine镜像,Alpine Linux之前支持安全修复的稳定版bookworm(别名:debian):基于buildpack-deps:bookworm镜像,Debian Linux最新版bullseye:基于buildpack-deps:bullseye镜像,Debian Linux上一版本focal(弃用通知):基于buildpack-deps:focal镜像,Ubuntu Linux之前的LTS维护版本jammy:基于buildpack-deps:jammy镜像,Ubuntu Linux旧版LTS维护版本noble(别名:ubuntu):基于buildpack-deps:noble镜像,Ubuntu Linux最新LTS版oracular:基于buildpack-deps:oracular镜像,Ubuntu Linux最新滚动版node-23(别名:node):基于node:23镜像,NodeJS最新稳定版,底层为buildpack-deps:bookwormnode-23-alpine(别名:node-alpine):基于node:23-alpine镜像,NodeJS最新稳定版,底层为alpine:3.21node-22(别名:node-jod、node-lts):基于node:22镜像,NodeJS最新LTS版,底层为buildpack-deps:bookwormnode-22-alpine(别名:node-jod-alpine、node-lts-alpine):基于node:22-alpine镜像,NodeJS最新LTS版,底层为alpine:3.21node-20(别名:node-iron):基于node:20镜像,NodeJS上一LTS维护版本,底层为buildpack-deps:bookwormnode-20-alpine(别名:node-iron-alpine):基于node:20-alpine镜像,NodeJS上一LTS维护版本,底层为alpine:3.21node-18(别名:node-hydrogen)(弃用通知):基于node:18镜像,NodeJS旧版LTS,底层为buildpack-deps:bookwormnode-18-alpine(别名:node-hydrogen-alpine)(弃用通知):基于node:18-alpine镜像,NodeJS旧版LTS,底层为alpine:3.21scratch:基于scratch镜像,无底层操作系统。通过COPY /android-sdk目录用于构建自定义Android SDK镜像,仅推荐高级用户使用redemonbr/android-sdk:<version> | redemonbr/android-sdk:<base-image>-<api-level>默认镜像,包含platform-tools、build-tools和已安装的Android平台,平台版本取决于API级别变体。API级别(又称SDK版本或"平台")决定与Android版本的兼容性:
api-35(别名:next):Beta状态的下一API级别,对应即将发布的Android 15,可能不稳定api-34(别名:latest):最新API级别,新增健康、数据和保护功能,对应Android 14api-33(别名:stable):稳定API级别,主要关注隐私、权限控制和大屏幕设备体验,对应Android 13api-32:基于API 31扩展的稳定级别,新增折叠屏设备功能,对应Android 12Lapi-31:当前最低支持API级别,对应Android 12api-30: Wear OS应用更新的最低API级别,对应Android 11若使用redemonbr/android-sdk:<version>格式(如docker pull redemonbr/android-sdk:api-32),基础镜像默认为noble。更多标签信息见Docker Hub。
redemonbr/android-sdk:<base-image>-tools与cmdline变体相同,但额外包含platform-tools和build-tools。适用于扩展自定义API级别,可通过FROM redemonbr/android-sdk:<version>-tools创建自定义Dockerfile。
redemonbr/android-sdk:<base-image>-cmdline仅包含Android命令行工具(cmdline)、OpenJDK 11和Gradle,不含platform-tools、build-tools或任何构建所需平台。适用于安装自定义版本构建工具或平台,可通过FROM redemonbr/android-sdk:<version>-cmdline创建自定义Dockerfile。
容器镜像提供两种架构:amd64和arm64/v8。大多数场景使用amd64,arm64/v8适用于Apple Silicon等ARM架构主机,但目前处于实验阶段。若arm64/v8遇到问题,可通过docker run --platform linux/amd64运行amd64镜像。
镜像每周更新。
生成的镜像包含入口点脚本,支持以下环境变量(scratch变体除外):
ASDK_PROMPT_LICENSES:是否在入口点提示接受许可证,值为yes/true/1时提示,默认yesASDK_ACCEPT_LICENSES:自动接受许可证,值为yes/true/1时生效,默认未设置(需手动接受)ASDK_ACCEPT_LICENSES_SILENT:自动接受时不在STDOUT打印许可证内容,值为yes/true/1时生效,默认未设置ASDK_EXTRA_LOCALES:生成额外语言环境(Alpine/Scratch变体不支持),多语言用逗号分隔,未设置则不生成使用前需熟悉Android SDK许可证。设置ASDK_ACCEPT_LICENSES为yes/true/1自动接受:
console$ docker run --rm -it --name android-sdk --env "ASDK_ACCEPT_LICENSES=yes" redemonbr/android-sdk:alpine-latest /bin/sh
自动化环境(如CI)可结合ASDK_ACCEPT_LICENSES_SILENT清理日志:
console$ docker run --rm -it --name android-13 --env "ASDK_ACCEPT_LICENSES=yes" --env "ASDK_ACCEPT_LICENSES_SILENT=yes" redemonbr/android-sdk:ubuntu-api-33 /bin/bash
GitLab-CI配置示例:
ymlbuild:android: stage: build image: redemonbr/android-sdk:alpine-stable variables: ASDK_ACCEPT_LICENSES: "yes" ASDK_ACCEPT_LICENSES_SILENT: "yes" script: - sh build-app.sh
Alpine和Scratch变体不支持。默认已生成en_US.UTF-8并设置LANG、LC_ALL(LANGUAGE=en_US:en)。如需其他语言环境:
ASDK_EXTRA_LOCALES:生成额外语言LANG:修改默认语言示例:
console$ docker run --rm -it \ --name node-android-11 \ --env "ASDK_EXTRA_LOCALES=en_GB.UTF-8,de_AT.UTF-8" \ --env "LANG=de_AT.UTF-8" \ redemonbr/android-sdk:node-18-api-32 /bin/bash Generating locales (this might take a while)... de_AT.UTF-8... done en_GB.UTF-8... done en_US.UTF-8... done Generation complete. root@a410113043f0:/# _
多语言设置示例:
console$ docker run --rm -it \ --name buster \ --env "ASDK_EXTRA_LOCALES=en_GB.UTF-8,en_US.UTF-8,pt_BR,pt_BR.UTF-8" \ --env "LANG=en_GB.UTF-8,pt_BR" \ redemonbr/android-sdk:buster /bin/bash Generating locales (this might take a while)... en_GB.UTF-8... done en_US.UTF-8... done pt_BR.ISO-8859-1... done pt_BR.UTF-8... done Generation complete. root@a410113043f0:/# _
如需安装其他Android包,可使用sdkmanager。例如安装特定版本构建工具(以30.0.3为例):
交互环境可能提示手动接受许可证:
console$ sdkmanager --install "build-tools;30.0.3"
非交互环境自动接受(需已阅读并同意许可证):
console$ echo y | sdkmanager --install "build-tools;30.0.3"
适用于Ionic V3、Cordova(cordova-android v10)和Angular v5项目,依赖声明在package.json的devDependencies中:
ymlbuild:android: stage: build image: redemonbr/android-sdk:node-18-api-31 variables: ASDK_ACCEPT_LICENSES: "yes" ASDK_ACCEPT_LICENSES_SILENT: "yes" ASDK_EXTRA_LOCALES: en_GB.UTF-8 script: - npm install - npx ionic cordova build android --prod after_script: - cp platforms/android/app/build/outputs/apk/debug/app-debug.apk my-app-debug.apk artifacts: paths: - my-app-debug.apk expire_in: 1 month public: false
NodeJS镜像变体包含JDK 17(OpenJDK 17),要求cordova-android>=13。2023-10-28起不再包含JDK 11,cordova-android<13项目可能不兼容。可参考Cordova Android平台指南的JDK兼容性矩阵,或在构建前安装其他JDK版本并切换环境。
以下镜像不再受上游支持,停止构建,建议迁移:
alpine3.18:Alpine 3.17基础镜像,上游支持至2025-05-09,建议迁移至alpine3.19或更新版本focal:Ubuntu Focal Fossa基础镜像,上游标准支持至2025-05-29,建议迁移至更新LTS版本node-18/node-18-alpine:NodeJS v18基础镜像,上游支持至2025-04-30,建议迁移至node-20或更新版本buildpack-deps的镜像:参考Docker Hub buildpack-deps和Debian自由软件指南alpine的镜像:参考Docker Hub Alpine




manifest unknown 错误
TLS 证书验证失败
DNS 解析超时
410 错误:版本过低
402 错误:流量耗尽
身份认证失败错误
429 限流错误
凭证保存错误
来自真实用户的反馈,见证轩辕镜像的优质服务