【发布时间】:2016-03-08 18:09:33
【问题描述】:
我正在设置运行 TeamCity 的 CI 服务器。
服务器运行的是openjdk8,我使用的是构建工具23.0.2
我有一个 multidex Android 应用程序,我可以使用 assembleMyFlavorRelease 在本地构建它。我在 app:transformClassesWithDexForMyFlavorRelease 上的 TeamCity 代理上的相同构建失败了
stacktrace 显示 java 以 1 退出,但我似乎找不到原因
[Gradle failure report] Execution failed for task ':app:transformClassesWithDexForMyFlavorRelease'.
[Gradle failure report] >
com.android.build.api.transform.TransformException:
com.android.ide.common.process.ProcessException:
java.util.concurrent.ExecutionException:
com.android.ide.common.process.ProcessException:
org.gradle.process.internal.ExecException:
Process 'command '/usr/lib/jvm/java-8-openjdk-amd64/bin/java'' finished with non-zero exit value 1
Exception is:
[Gradle failure report] org.gradle.api.tasks.TaskExecutionException:
Execution failed for task ':app:transformClassesWithDexForMyFlavorRelease'.
....
Caused by:
java.lang.RuntimeException: com.android.build.api.transform.TransformException: com.android.ide.common.process.ProcessException: java.util.concurrent.ExecutionException: com.android.ide.common.process.ProcessException: org.gradle.process.internal.ExecException: Process 'command '/usr/lib/jvm/java-8-openjdk-amd64/bin/java'' finished with non-zero exit value 1
....
Caused by:
com.android.build.api.transform.TransformException: com.android.ide.common.process.ProcessException: java.util.concurrent.ExecutionException: com.android.ide.common.process.ProcessException: org.gradle.process.internal.ExecException: Process 'command '/usr/lib/jvm/java-8-openjdk-amd64/bin/java'' finished with non-zero exit value 1
我的 app.gradle 是这样的
productFlavors {
final def MIN_SDK = 19
final def TARGET_SDK = 23
myFlavor {
minSdkVersion MIN_SDK
targetSdkVersion TARGET_SDK
multiDexEnabled true
}
使用这些 dex 选项
dexOptions {
javaMaxHeapSize "4g"
preDexLibraries false
}
编译
compileSdkVersion 23
buildToolsVersion '23.0.2'
使用多索引 1.0.1
dependencies {
compile 'com.android.support:multidex:1.0.1'
}
构建代理完成了两者
:app:collectMyFlavorReleaseMultiDexComponents
:app:transformClassesWithMultidexlistForMyFlavorRelease
在失败之前
app:transformClassesWithDexForMyFlavorRelease
使用信息运行会在退出前显示这一点
[org.gradle.launcher.daemon.client.DaemonClient] Received result Failure[value=org.gradle.initialization.ReportedException:
org.gradle.internal.exceptions.LocationAwareException: Execution failed for task ':app:transformClassesWithDexForMyFlavor'.]
from daemon DaemonInfo{pid=2200,
address=[a10b64d0-94c0-40e9-8b5d-b5a5bbb171c4 port:46291, addresses:[/0:0:0:0:0:0:0:1%lo, /127.0.0.1]], idle=false,
context=DefaultDaemonContext[uid=968a9ee5-e6d4-4cba-a2a5-ce768ecbfe44,
javaHome=/usr/lib/jvm/java-8-openjdk-amd64,
daemonRegistryDir=/root/.gradle/daemon,pid=2200,idleTimeout=120000,
daemonOpts=-XX:MaxPermSize=512m,-XX:+HeapDumpOnOutOfMemoryError,-Xmx2048m,-Dfile.encoding=UTF-8,
-Duser.country=US,-Duser.language=en,-Duser.variant]
在这一点上的任何帮助或指导将不胜感激!
【问题讨论】:
-
“堆栈跟踪显示 java 以 1 退出,但我似乎无法找到原因”——您确定在这部分输出之前没有任何内容吗?
-
是的,我所看到的只是在堆栈跟踪失败之前:构建失败并出现异常。
-
如果您还没有这样做,请尝试常规的命令行 Gradle 构建(例如,
gradle assembleDebug)。在配备 Android Studio 的机器和 TeamCity 服务器上试用。如果他们都成功了,那么问题可能与 TeamCity 集成有关。如果它们都失败了,则问题可能与 Gradle 构建文件有关。如果开发者机器成功但 TeamCity 服务器失败,则问题可能与环境中的其他内容(例如 JDK 版本)有关。 -
在本地和构建服务器上运行
assembleDebug,它在本地工作正常,但在服务器上失败。我用信息日志输出更新了帖子。构建服务器正在运行我正在运行的 OpenJDK1.8Java(TM) SE Runtime Environment (build 1.8.0_25-b17)
标签: java android teamcity android-multidex