You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何通过GitHub Actions构建React Native安卓应用并解决构建报错

解决GitHub Actions构建React Native Android APK的Gradle堆内存错误

错误根源

报错核心是Java heap space,说明Gradle守护进程分配的内存不足,导致JetifyTransform处理React Native的aar依赖时发生内存溢出,进而中断构建流程。


具体解决方案

1. 调整Gradle JVM内存参数

在项目的android/gradle.properties文件中添加或修改以下配置,增大堆内存分配:

org.gradle.jvmargs=-Xmx4096m -XX:MaxPermSize=2048m -XX:+HeapDumpOnOutOfMemoryError -Dfile.encoding=UTF-8

-Xmx4096m将最大堆内存设置为4GB,足以应对React Native依赖转换的内存需求。

2. 在GitHub Actions构建命令中直接指定内存参数

如果不想修改项目文件,可在Action的构建步骤中直接传递JVM参数:
修改Action.yml中的Build Android Release步骤:

- name: Build Android Release
  run: cd android && ./gradlew assembleRelease -Dorg.gradle.jvmargs="-Xmx4096m"

3. 优化GitHub Actions运行环境

  • 缓存Gradle依赖:添加缓存步骤减少重复下载依赖的开销,提升构建效率:

    - name: Cache Gradle dependencies
      uses: actions/cache@v3
      with:
        path: |
          ~/.gradle/caches
          ~/.gradle/wrapper
        key: ${{ runner.os }}-gradle-${{ hashFiles('android/build.gradle', 'android/app/build.gradle', 'android/gradle/wrapper/gradle-wrapper.properties') }}
        restore-keys: |
          ${{ runner.os }}-gradle-
    

    将此步骤放在Install dependencies之后、Build Android Release之前。

  • 使用稳定运行环境:指定ubuntu-22.04作为运行环境,比默认ubuntu-latest更稳定:

    runs-on: ubuntu-22.04
    

4. 升级Gradle版本(可选)

当前使用的Gradle 6.7与React Native 0.71.x兼容性一般,升级到7.x版本可优化内存管理:

  • 修改android/gradle/wrapper/gradle-wrapper.properties中的distributionUrl:
    distributionUrl=https\://services.gradle.org/distributions/gradle-7.5-bin.zip
    
  • 修改android/build.gradle中的Gradle插件版本:
    dependencies {
      classpath("com.android.tools.build:gradle:7.4.2")
      // 保留其他原有依赖
    }
    

完整Action配置(含构建、上传制品、设备测试)

修改后的Action.yml整合了上述优化,并添加了Android模拟器测试步骤:

name: Build Android
on:
  push:
    branches: [main]
jobs:
  build:
    runs-on: ubuntu-22.04
    steps:
      - uses: actions/checkout@v3

      - name: Install dependencies
        run: yarn

      - name: Cache Gradle dependencies
        uses: actions/cache@v3
        with:
          path: |
            ~/.gradle/caches
            ~/.gradle/wrapper
          key: ${{ runner.os }}-gradle-${{ hashFiles('android/build.gradle', 'android/app/build.gradle', 'android/gradle/wrapper/gradle-wrapper.properties') }}
          restore-keys: |
            ${{ runner.os }}-gradle-

      - name: Build Android Release
        run: cd android && ./gradlew assembleRelease -Dorg.gradle.jvmargs="-Xmx4096m"

      - name: Upload Release APK
        uses: actions/upload-artifact@v3
        with:
          name: android-release-apk
          path: android/app/build/outputs/apk/release/app-release.apk

      - name: Test APK on Android Emulator
        uses: reactivecircus/android-emulator-runner@v2
        with:
          api-level: 33
          script: |
            adb install -r android/app/build/outputs/apk/release/app-release.apk
            # 可添加自定义测试命令,例如启动应用:adb shell am start -n com.yourpackage.name/.MainActivity

内容的提问来源于stack exchange,提问作者Muhammad Afaq Nasir

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.19 22:32:02