3

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

我的 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

我创建了一个 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

MyApplication 是 Android Studio 的默认空活动项目。

错误日志在这里:

/gradlew :app:assembledebug

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

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

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

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

  • 尝试:使用 --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 的 com.android.builder.internal.aapt.v2.Aapt2DaemonImpl.startProcess(Aapt2DaemonImpl.kt:80) 没有这样的文件或目录.Aapt2Daemon.checkStarted(Aapt2Daemon.kt:53) ... 8 更多原因:java.io.IOException: error=2, No such file or directory ... 10 更多

4

2 回答 2

2

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

当我用作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
于 2020-01-18T11:24:43.913 回答
0

试试这个,非常有用和简单。它带有appium和最新的SDK,还具有以headed模式打开模拟器的功能

https://hub.docker.com/repository/docker/amrka/ultimate-android

于 2021-04-06T18:46:19.163 回答