当我在CircleCI上为v0.59.x构建应用程序时,它会给我以下错误(在v0.57.8之前一直可以正常工作):
Translated:在使用CircleCI为v0.59.x版本构建应用程序时,出现了以下错误(在v0.57.8版本之前正常工作):
[12:45:19]: ▸ Note: Some input files use or override a deprecated API.
[12:45:19]: ▸ Note: Recompile with -Xlint:deprecation for details.
[12:45:19]: ▸ > Task :react-native-svg:processReleaseJavaRes NO-SOURCE
[12:45:19]: ▸ > Task :react-native-svg:transformClassesAndResourcesWithPrepareIntermediateJarsForRelease
[12:45:19]: ▸ > Task :app:javaPreCompileQa
[12:45:44]: ▸ > Task :app:bundleQaJsAndAssets
[12:45:44]: ▸ warning: the transform cache was reset.
[12:46:00]: ▸ Loading dependency graph, done.
[12:46:19]: ▸ > Task :app:bundleQaJsAndAssets FAILED
[12:46:19]: ▸ FAILURE: Build failed with an exception.
[12:46:19]: ▸ * What went wrong:
[12:46:19]: ▸ Execution failed for task ':app:bundleQaJsAndAssets'.
[12:46:19]: ▸ > Process 'command 'node'' finished with non-zero exit value 137
我认为这与内存或Gradle/Java选项有关,因为在我的本地计算机上构建正常(./gradlew assembleRelease
)。
Circle配置文件中有用的片段:
jobs:
make-android:
...
docker:
- image: circleci/android:api-28-node8-alpha
environment:
TERM: dumb
# JAVA_OPTS...
# GRADLE_OPTS...
steps:
- checkout:
path: *root_dir
- attach_workspace:
at: *root_dir
- run:
name: Build the app
no_output_timeout: 30m
command: bundle exec fastlane make
而 fastlane make
则是
gradle(task: "clean")
gradle(task: "assembleRelease")
我尝试了多个JAVA_OPTS和GRADE_OPTS,包括删除它们(在v0.57.8中没有_OPTS
也可以正常工作)
JAVA_OPTS: "-Xms512m -Xmx4096m"
GRADLE_OPTS: -Xmx4096m -Dorg.gradle.daemon=false -Dorg.gradle.jvmargs="-Xms512m -Xmx4096m -XX:+HeapDumpOnOutOfMemoryError"
JAVA_OPTS: "-Xms512m -Xmx2048m"
GRADLE_OPTS: -Xmx2048m -Dorg.gradle.daemon=false -Dorg.gradle.jvmargs="-Xmx2048m -XX:+HeapDumpOnOutOfMemoryError"
我也在 android/app/build.gradle 中有这个。dexOptions {
javaMaxHeapSize "2g"
preDexLibraries false
}
Task:app:bundleQaJsAndAssets FAILED
和FAILURE: Build failed with an exception
,但它们似乎没有提供太多细节。你能获取更多的日志吗?我知道它在你的开发机器上工作正常,但这可能是一个普通的环境问题,而不是特定于CircleCI的问题。我建议使用后构建SSH选项,这样你就可以手动运行它并深入挖掘/var/log
文件夹(或任何其他可能写入日志的地方)。 - halfer-Xmx4096m
会失败。假设您使用的是默认容器大小,则整个系统的RAM限制为4G,因此您的JVM应该远小于此值。我建议您选择2G到3G之间的值。 - halfermaxWorkers
修复了它。 - Sourabh