对于使用 gradle 构建系统的 android 项目,我想在 hosteurope 提供的虚拟服务器上的 jenkins 中运行测试和构建。
系统使用
- Debian Wheezy (7.5)
- OpenJDK-7 (7u55-2.4.7-1~deb7u1)
- Jenkins(1.564) 作为独立服务器。
用于运行我安装的 jenkins 作业
- Gradle 插件(1.23)
- Android 模拟器插件(2.11.1)
对于构建过程本身,使用了 Android 构建工具 (19.1)。
每次在 preDexDebug 任务期间构建都会失败,并显示以下错误消息:
:app:preDexDebugError: Could not create the Java Virtual Machine.
Error: A fatal exception has occurred. Program will exit.
FAILED
FAILURE: Build failed with an exception.
* What went wrong:
Execution failed for task ':app:preDexDebug'.
> com.android.ide.common.internal.LoggedErrorException: Failed to run command:
/var/lib/jenkins/tools/android-sdk/build-tools/19.1.0/dx --dex --output /var/lib/jenkins/workspace/test_project/app/build/pre-dexed/debug/ormlite-core-4.48-bdb20e19ede8fedfab10bb99de3affa6b8ed6e4d.jar /var/lib/jenkins/.gradle/caches/modules-2/files-2.1/com.j256.ormlite/ormlite-core/4.48/e579bd2905d0399af5029aaaf9817d5fa0ca88a5/ormlite-core-4.48.jar
Error Code:
1
Output:
Error: Could not create the Java Virtual Machine.
Error: A fatal exception has occurred. Program will exit.
应用“--debug”开关后,堆内存不足会显示为失败的原因。
不幸的是,将/etc/default/jenkins 中的 JAVA_ARGS 参数或 gradlew 脚本中的 DEFAULT_JVM_OPTS 设置为“-Xms128m -Xmx512”并不能解决问题。 我发现唯一可行的解决方案是使用 _JAVA_OPTIONS。
因此,我在 jenkins 配置中添加了 _JAVA_OPTIONS 作为环境变量。
转到菜单中的“Jenkins->Manage Jenkins->Configure System”并激活“Global properties”部分中的复选框“Environment variables”。 然后点击“添加”按钮并在标记为“名称”的文本字段中插入 _JAVA_OPTIONS,并在标记为“值”的文本字段中插入“-Xms64M -Xmx512M”。
根据 hosteurope 网站 ( http://faq.hosteurope.de/index.php?cpid=13918 ) 上的德国常见问题解答条目,问题是由 hosteurope VPS 中可用内存的错误计算引起的。
最佳答案
已解释问题的解决方法是在问题中使用 _JAVA_OPTIONS 作为 jenkins 中的环境变量。它会影响所有由 jenkins 启动的 Java 进程,这可能会导致其他问题。希望下一个 Java 或 Hosteurope VPS 更新可以完全解决这个问题。
关于java - 在 hosteurope 服务器上的 Jenkins 中运行 android gradle 脚本时出现堆内存问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23866385/