Android 在 docker 容器中构建

zak*_*jma 5 android gradle docker aapt2

我尝试在 docker 容器上运行 android 构建。

我的 dockerfile 的内容在这里:

FROM openjdk:8-jre-alpine

RUN mkdir -p /myapp
WORKDIR /myapp
COPY . .

RUN apk add --update nodejs nodejs-npm
RUN apk add git
RUN apk add zip
RUN apk --no-cache add curl
Run Code Online (Sandbox Code Playgroud)

我创建了一个 docker 镜像并运行它。我在 docker 终端上运行以下命令。

wget https://dl.google.com/android/repository/sdk-tools-linux-4333796.zip
unzip -q sdk-tools-linux-4333796.zip -d Android-sdk
export ANDROID_HOME=/path-to-sdk/Android-sdk
export PATH=${PATH}:${ANDROID_HOME}/tools:${ANDROID_HOME}/tools/bin:${ANDROID_HOME}/platform-tools
yes | sdkmanager  --licenses
cd MyApplication && chmod +x gradlew && ./gradlew :app:assembledebug
Run Code Online (Sandbox Code Playgroud)

MyApplication 是 Android Studio 默认的空 Activity 项目。

错误日志在这里:

/gradlew :应用程序:assembledebug

任务 :app:preBuild 最新 任务 :app:preDebugBuild 最新 任务 :app:compileDebugAidl NO-SOURCE 任务 :app:compileDebugRenderscript 最新 任务 :app:checkDebugManifest 最新 任务 : app:generateDebugBuildConfig 最新任务 :app:prepareLintJar 最新任务 :app:mainApkListPersistenceDebug 最新任务 :app:generateDebugResValues 最新任务 :app:generateDebugResources 最新任务 :应用程序:合并调试资源失败

失败:构建失败并出现异常。

  • 出了什么问题:任务“:app:mergeDebugResources”执行失败。

    java.util.concurrent.ExecutionException: com.android.builder.internal.aapt.v2.Aapt2InternalException: AAPT2 aapt2-3.3.0-alpha12-5013011-linux Daemon #0: Daemon 启动失败
    这在正常情况下不应该发生,请如果确实如此,请提出问题。

  • 尝试:使用 --stacktrace 选项运行以获取堆栈跟踪。使用 --info 或 --debug 选项运行以获得更多日志输出。使用 --scan 运行以获得完整的见解。

  • 在https://help.gradle.org获取更多帮助

编辑

这个项目在我的 Mac 笔记本电脑上运行良好。本地机器构建没问题,但在 docker 容器上不起作用。

编辑

我运行--stacktrace参数。未找到 aapt2

引起:java.io.IOException:无法运行程序“/root/.gradle/caches/transforms-1/files-1.1/aapt2-3.2.0-4818971-linux.jar/6f8af69a2b8f839763b018ee3b5c1d41/aapt2-3.2.0-4818971 -linux/aapt2": error=2, com.android.builder.internal.aapt.v2.Aapt2DaemonImpl.startProcess(Aapt2DaemonImpl.kt:80) 处没有此类文件或目录 com.android.builder.internal.aapt.v2 .Aapt2Daemon.checkStarted(Aapt2Daemon.kt:53) ... 8 更多 引起:java.io.IOException: error=2, 没有这样的文件或目录 ... 10 更多

pip*_*per 2

在 docker 镜像中遇到了同样的问题openjdk:8-jre-alpine

oracle/openjdk:8当我用作基础图像时,问题得到解决

像这样更改你的 Dockerfile 并重试:

FROM oracle/openjdk:8
RUN mkdir -p /myapp
WORKDIR /myapp
COPY . .

RUN yum install -y nodejs nodejs-npm
RUN yum install -y git zip curl
Run Code Online (Sandbox Code Playgroud)