当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米,并且记住我无法缩小交换空间,我感觉那里出了问题。
那么有什么想法可能导致这个一致的错误?
- 虚拟服务器或容器上的Android操作系统
- 如何将一个USB设备连接到docker集装箱
- 访问除ssh以外的Docker容器
- 通过peer @ io_fillbuf重置连接 – fd:8(HTTPClient :: KeepAliveDisconnected)
- 是否有可能在docker中运行android模拟器/ android应用程序?
- 如何在Docker上安装Ruby?
- 如何使用dockerfile在模拟器上构build和运行android apk
- 蟑螂android.util.AndroidException:INSTRUMENTATION_FAILED
- 无法使用Gitlab-CI在Docker容器中运行Android应用程序