在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 config中的有用片段:

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")

我try 了多个JAVA_选项和GRADE_选项,包括删除它们(在v0.57.8中使用no _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中也有这个.格拉德尔

dexOptions {
    javaMaxHeapSize "2g"
    preDexLibraries false
}

推荐答案

其中一个原因可能是地铁Bundle 机使用的工人数量.

metro.config.js中设置maxWorkers: <# workers>为我解决了这个问题:

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

我还更改了.circle/config.yml中的JAVA_OPTSGRADLE_OPTS

JAVA_OPTS: '-Xms512m -Xmx2g'
GRADLE_OPTS: '-Xmx3g -Dorg.gradle.daemon=false -Dorg.gradle.jvmargs="-Xmx2g -XX:+HeapDumpOnOutOfMemoryError"'

React-native相关问答推荐

React Native:无法将具有 resizeMode包含的图像定位在父组件的 flex-end

判断状态对象是否为空

TouchableOpacity 作为 ListView 中的 Item 仅在 TextInput 失go 焦点后做出响应

React Native 在升级到 0.56 版本后崩溃

使用react native获取设备令牌

React-Native 按钮居中对齐

使用像 React Navigation 这样的基于 JS 的导航解决方案优缺点?

React Native Remote Debugger 在 Chrome 中显示缓存的包

获取没有地理位置 API React-native 的国家/城市?

如何将 Crashlytics 与 React Native 应用程序集成

React Native require(image) 返回数字

当数据为空时,React-Native FlatList 呈现零状态

React Native - React Navigation导航转换

查找文本输入框和按钮字段的资源名称以响应本机 android 应用程序

React Native 元素,未生成 index.ios.js 或 index.android.js

如何用 Realm 元素文件组织 React Native?

在不使用 3rd 方库的情况下,在react-native中显示主屏幕之前显示启动画面

无法解析模块react-native-reanimated

使用 React-Native Navigation 传递数据

如何在 React Native 中将图像放置在其他图像之上?