Docker:Android 项目使用Gradle镜像打包构建报错: aapt

现有一个Android项目,项目比较大,分了好几个模块,用Docker拉起一个gradle镜像。

从docker hub 上拉取镜像

docker pull gradle:4.4 

启动镜像

docker run -i -v /Users/wjy/Desktop/android/android:/opt/data -v /Users/wjy/Desktop/android-sdk-linux:/root/sdk/ -t gradle:4.4.5 /bin/bash

这里将项目挂在到了容器中的/opt/data目录下,Android-SDK 挂载到了/root/sdk/目录下

报错!!!

Linux
Linux
Failed to execute aapt
com.android.ide.common.process.ProcessException: Failed to execute aapt
...
...
Caused by: java.util.concurrent.ExecutionException: org.gradle.process.internal.ExecException: A problem occurred starting process 'command '/root/.gradle/caches/modules-2/files-2.1/com.android.boost.toolkits/toolskit/1.1.11-snap/7044c8cdb0e07254d756e8ad13899c18f484625d/toolskit-1.1.11-snap/aapt/linux/aapt''
        at com.google.common.util.concurrent.AbstractFuture.getDoneValue(AbstractFuture.java:528)
        at com.google.common.util.concurrent.AbstractFuture.get(AbstractFuture.java:509)
        at com.google.common.util.concurrent.AbstractFuture$TrustedFuture.get(AbstractFuture.java:85)
        at com.android.builder.core.AndroidBuilder.processResources(AndroidBuilder.java:794)
        ... 55 more
Caused by: org.gradle.process.internal.ExecException: A problem occurred starting process 'command '/root/.gradle/caches/modules-2/files-2.1/com.android.boost.toolkits/toolskit/1.1.11-snap/7044c8cdb0e07254d756e8ad13899c18f484625d/toolskit-1.1.11-snap/aapt/linux/aapt''
        at org.gradle.process.internal.DefaultExecHandle.execExceptionFor(DefaultExecHandle.java:222)
        at org.gradle.process.internal.DefaultExecHandle.setEndStateInfo(DefaultExecHandle.java:202)
        at org.gradle.process.internal.DefaultExecHandle.failed(DefaultExecHandle.java:342)
        at org.gradle.process.internal.ExecHandleRunner.run(ExecHandleRunner.java:86)
        at org.gradle.internal.operations.BuildOperationIdentifierPreservingRunnable.run(BuildOperationIdentifierPreservingRunnable.java:35)
        ... 6 more
Caused by: net.rubygrapefruit.platform.NativeException: Could not start '/root/.gradle/caches/modules-2/files-2.1/com.android.boost.toolkits/toolskit/1.1.11-snap/7044c8cdb0e07254d756e8ad13899c18f484625d/toolskit-1.1.11-snap/aapt/linux/aapt'
        at net.rubygrapefruit.platform.internal.DefaultProcessLauncher.start(DefaultProcessLauncher.java:27)
        at net.rubygrapefruit.platform.internal.WrapperProcessLauncher.start(WrapperProcessLauncher.java:36)
        at org.gradle.process.internal.ExecHandleRunner.run(ExecHandleRunner.java:68)
        ... 7 more
Caused by: java.io.IOException: Cannot run program "/root/.gradle/caches/modules-2/files-2.1/com.android.boost.toolkits/toolskit/1.1.11-snap/7044c8cdb0e07254d756e8ad13899c18f484625d/toolskit-1.1.11-snap/aapt/linux/aapt" (in directory "/opt/data/xxx/app"): error=2, No such file or directory
        at java.lang.ProcessBuilder.start(ProcessBuilder.java:1048)
        at net.rubygrapefruit.platform.internal.DefaultProcessLauncher.start(DefaultProcessLauncher.java:25)
        ... 9 more
Caused by: java.io.IOException: error=2, No such file or directory
        at java.lang.UNIXProcess.forkAndExec(Native Method)
        at java.lang.UNIXProcess.<init>(UNIXProcess.java:247)
        at java.lang.ProcessImpl.start(ProcessImpl.java:134)
        at java.lang.ProcessBuilder.start(ProcessBuilder.java:1029)
        ... 10 more

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-HiXuTEx9-1577698651395)(evernotecid://621D2FF6-4E72-4E02-9043-55F31F42819B/appyinxiangcom/22553815/ENResource/p1041)]

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-0KEUsVTX-1577698651397)(evernotecid://621D2FF6-4E72-4E02-9043-55F31F42819B/appyinxiangcom/22553815/ENResource/p1040)]

解决错误

在模块的 gradle.properties已经配置了isAlipayUseCustomAapt26=false

切换到目录/root/.gradle/caches/modules-2/files-2.1/com.android.boost.toolkits/toolskit/1.1.11-snap/7044c8cdb0e07254d756e8ad13899c18f484625d/toolskit-1.1.11-snap/aapt/linux/

执行命令:ldd aapt报错

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-iFLnNEBR-1577698651398)(evernotecid://621D2FF6-4E72-4E02-9043-55F31F42819B/appyinxiangcom/22553815/ENResource/p1042)]

进过查找确认,认为可能是镜像内的库中没有lib32stdc++6lib32z1 lib32z1-dev导致的

修改Dockerfile

FROM openjdk:8

CMD ["gradle"]

ENV GRADLE_HOME /opt/gradle

RUN mkdir -p /root/.gradle

VOLUME /root/.gradle

RUN apt-get update \
    && apt-get install --yes --no-install-recommends \
        fontconfig \
        unzip \
        wget \
        \
        bzr \
        git \
        mercurial \
        openssh-client \
        subversion \
        lib32stdc++6 \
        lib32z1 lib32z1-dev \
    && rm -rf /var/lib/apt/lists/*

ENV GRADLE_VERSION 4.4
RUN set -o errexit -o nounset \
    && echo "Downloading Gradle" \
    && wget --no-verbose --output-document=gradle.zip "https://services.gradle.org/distributions/gradle-${GRADLE_VERSION}-all.zip" \
    \
    && echo "Installing Gradle" \
    && unzip gradle.zip \
    && rm gradle.zip \
    && mv "gradle-${GRADLE_VERSION}" "${GRADLE_HOME}/" \
    && ln --symbolic "${GRADLE_HOME}/bin/gradle" /usr/bin/gradle \
    \
    && echo "Testing Gradle installation" \
    && gradle --version

然后重新打包构建,问题完美解决

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-Qv6NgdxC-1577698651398)(evernotecid://621D2FF6-4E72-4E02-9043-55F31F42819B/appyinxiangcom/22553815/ENResource/p1043)]

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值