1

我的 Android 项目在具有大量 RAM 的 Windows 开发机器上构建良好。但是在一个简单的 Docker 容器(来自 ubuntu:xenial + Android SDK)中,gradle build(./gradlew assembleTrunkDebug)在执行任务时失败了 58%:

transformClassesWithPreJackPackagedLibrariesForTrunkDebug

即使使用 --stacktrace --debug ,我从错误中得到的最多是:

Gradle build daemon disappeared unexpectedly (it may have been killed or may have crashed)

我注意到了一些奇怪的事情:我传递给 docker 容器实例化的内存参数并不重要。它总是向我显示相同的内存统计信息。

Tasks:   2 total,   1 running,   1 sleeping,   0 stopped,   0 zombie
%Cpu(s):  0.0 us,  0.0 sy,  0.0 ni,100.0 id,  0.0 wa,  0.0 hi,  0.0 si,  0.0 st
KiB Mem :  1019776 total,   860604 free,    88840 used,    70332 buff/cache
KiB Swap:  1168688 total,   853640 free,   315048 used.   824484 avail Mem

我通常在做类似的事情:

docker run -it --volume=/Users/MyUser/code/localDebugRepo:/localDebugRepo --workdir="/localDebugRepo" --memory="2048m" --memory-swap="2048m" 66b48030ee34 /bin/bash

但我也尝试传递更少的内存和相同的内存交换或更多的总内存,但它总是显示 Mem:1019776 和 Swap:1168688。

我还在任务管理器中注意到 VBoxHeadless.exe 仅使用 41MB 的 RAM。虽然不幸的任务正在运行(在崩溃之前需要很长时间),但 RAM 使用量不会改变,但磁盘传输量很大并且只会消耗越来越多(因为它在 SSD 驱动器上)。

Android 建议必须允许用于最新 sdks 的新构建工具 Jack 和 Jill 至少使用 1536m 内存。但是 Docker 映像应该以最大 2048m 的速度运行,并且考虑到我无法缩小交换空间,我感觉那里出了点问题。

那么有什么想法可能导致这种一致的错误吗?

4

0 回答 0