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

如何通过GitHub Action构建React Native可安装APK?

React Native项目通过GitHub Action生成可安装APK的配置优化

你的现有Workflow配置存在几个关键问题,导致无法正常生成可安装的APK,以下是修正后的完整配置及关键说明:

原配置的问题点

  • 重复执行npm install,浪费构建时间
  • 未配置Android开发环境,Ubuntu默认缺少Android SDK,无法执行Gradle构建命令
  • upload-artifact使用旧版本,且路径指向目录而非具体APK文件
  • Release版本APK未做签名处理,未签名的APK无法直接安装到设备

修正后的Workflow配置

on:
  workflow_dispatch: # 保留手动触发,可按需添加自定义输入参数

name: Build Android Installable APK

jobs:
  build-android:
    runs-on: ubuntu-latest
    steps:
      - name: 检出代码
        uses: actions/checkout@v4

      - name: 设置Node.js环境
        uses: actions/setup-node@v4
        with:
          node-version: 20 # 根据你的React Native版本调整,比如RN 0.68用Node 16
          cache: 'npm' # 自动缓存node_modules,加速依赖安装

      - name: 安装npm依赖
        run: npm ci # 替代npm install,保证依赖版本与package-lock.json完全一致

      - name: 配置Android SDK环境
        uses: android-actions/setup-android@v3

      - name: 生成签名密钥(已有密钥可跳过此步)
        run: |
          keytool -genkey -v -keystore my-release-key.keystore -alias my-key-alias -keyalg RSA -keysize 2048 -validity 10000 -storepass ${{ secrets.KEYSTORE_PASSWORD }} -keypass ${{ secrets.KEY_PASSWORD }} -dname "CN=Android Release,O=YourOrg,C=CN"
        env:
          KEYSTORE_PASSWORD: ${{ secrets.KEYSTORE_PASSWORD }}
          KEY_PASSWORD: ${{ secrets.KEY_PASSWORD }}

      - name: 配置Gradle签名信息
        run: |
          echo "MYAPP_RELEASE_STORE_FILE=../my-release-key.keystore" >> android/gradle.properties
          echo "MYAPP_RELEASE_STORE_PASSWORD=${{ secrets.KEYSTORE_PASSWORD }}" >> android/gradle.properties
          echo "MYAPP_RELEASE_KEY_ALIAS=my-key-alias" >> android/gradle.properties
          echo "MYAPP_RELEASE_KEY_PASSWORD=${{ secrets.KEY_PASSWORD }}" >> android/gradle.properties

      - name: 构建签名版Release APK
        run: cd android && ./gradlew assembleRelease

      - name: 上传APK产物
        uses: actions/upload-artifact@v4
        with:
          name: app-release-signed.apk
          path: android/app/build/outputs/apk/release/app-release.apk

关键配置说明

  1. Node环境与依赖缓存

    • 使用actions/setup-node指定适配项目的Node版本,开启cache: 'npm'自动缓存node_modules,避免重复安装依赖
    • 用npm ci替代npm install,确保依赖版本严格匹配package-lock.json,构建更稳定
  2. Android SDK配置

    • 通过android-actions/setup-android自动安装Android SDK及构建所需工具,解决Ubuntu环境缺少Android开发环境的问题
  3. APK签名处理

    • 若已有签名密钥文件,可跳过“生成签名密钥”步骤,直接将密钥文件上传到GitHub Secrets(或添加到仓库并在.gitignore中排除),调整gradle.properties的配置路径即可
    • 若无签名密钥,需在GitHub仓库的Settings > Secrets and variables > Actions中添加KEYSTORE_PASSWORD和KEY_PASSWORD两个密钥,用于生成签名文件和配置Gradle
    • 只有签名后的Release APK才能直接安装到设备,未签名的Release APK无法正常安装
  4. 产物上传

    • 使用最新版actions/upload-artifact@v4,路径指向具体的APK文件,确保只上传最终可安装的产物

额外注意事项

  • 若不需要正式Release版本,可将assembleRelease改为assembleDebug,Debug版APK默认使用调试密钥签名,可直接安装,但不适合正式发布
  • 确保项目的Android目录下的Gradle配置文件无语法错误,否则会导致构建失败

内容的提问来源于stack exchange,提问作者Paul

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.27 19:43:17