我尝试在 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 更多