CircleN上的ReactNative 0.59.x构建失败,退出值为137

Sou*_*abh 8 android circleci react-native

在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
Run Code Online (Sandbox Code Playgroud)

我认为这与内存或Gradle / Java选项有关,因为该构建在本机(./gradlew assembleRelease)上运行良好

圈子配置中的有用片段:

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
Run Code Online (Sandbox Code Playgroud)

并且fastlane make

gradle(task: "clean")
gradle(task: "assembleRelease")
Run Code Online (Sandbox Code Playgroud)

我尝试了多个JAVA_OPTS和GRADE_OPTS,包括将它们删除(它过去在_OPTSv0.57.8上都可以正常工作,但不能运行)

JAVA_OPTS: "-Xms512m -Xmx4096m"
GRADLE_OPTS: -Xmx4096m -Dorg.gradle.daemon=false -Dorg.gradle.jvmargs="-Xms512m -Xmx4096m -XX:+HeapDumpOnOutOfMemoryError"
Run Code Online (Sandbox Code Playgroud)
JAVA_OPTS: "-Xms512m -Xmx2048m"
GRADLE_OPTS: -Xmx2048m -Dorg.gradle.daemon=false -Dorg.gradle.jvmargs="-Xmx2048m -XX:+HeapDumpOnOutOfMemoryError"
Run Code Online (Sandbox Code Playgroud)

我在android / app / build.gradle中也有这个

dexOptions {
    javaMaxHeapSize "2g"
    preDexLibraries false
}
Run Code Online (Sandbox Code Playgroud)

Sou*_*abh 10

原因之一可能是地铁捆扎机正在使用的工人人数众多。

设置maxWorkers: <# workers>metro.config.js固定对我来说。

module.exports = {
    transformer: {
    getTransformOptions: async () => ({
        transform: {
        experimentalImportSupport: false,
        inlineRequires: false,
        },
    }),
    },
    maxWorkers: 2,
};
Run Code Online (Sandbox Code Playgroud)

我换了其他的事情被设置JAVA_OPTSGRADLE_OPTS.circle/config.yml

JAVA_OPTS: '-Xms512m -Xmx2g'
GRADLE_OPTS: '-Xmx3g -Dorg.gradle.daemon=false -Dorg.gradle.jvmargs="-Xmx2g -XX:+HeapDumpOnOutOfMemoryError"'
Run Code Online (Sandbox Code Playgroud)

  • 这为我解决了这个问题。特别是最大工人。谢谢你! (2认同)