当Gradle运行transformClasses时,Android构build在Ubuntu Docker容器中失败

我的Android项目得到很好的Windows开发机器上有很多内存。 但在一个简单的Docker容器(FROM ubuntu:xenial + Android SDK)中,gradle build(./gradlew assembleTrunkDebug)在58%的执行任务时失败:

transformClassesWithPreJackPackagedLibrariesForTrunkDebug 

即使有–stacktrace – debugging最多,我从错误中得到的是:

 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 

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

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

Androidbuild议新的构build工具Jack和Jill用于最新的sdks必须被允许使用至less1536m的内存。 但是Docker镜像应该运行最长2048米,并且记住我无法缩小交换空间,我感觉那里出了问题。

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