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

使用GitHub Action自动化构建发布Ionic(7.2.0)+Capacitor(7.0.1)签名Android APK

基于Ionic+Capacitor的Android应用GitHub Actions签名构建与部署自动化方案

前置准备

  1. 生成Android签名密钥
    若还未生成签名密钥,执行以下命令创建:

    keytool -genkey -v -keystore my-release-key.jks -keyalg RSA -keysize 2048 -validity 10000 -alias my-key-alias
    

    牢记密钥库密码、密钥密码及别名,后续配置会用到。

  2. 将密钥存入GitHub Secrets

    • 把签名密钥文件转为Base64编码:
      base64 my-release-key.jks > keybase64.txt
      
    • 进入GitHub仓库的Settings > Secrets and variables > Actions,添加以下4个Secrets:
      • ANDROID_KEYSTORE_BASE64:粘贴keybase64.txt中的编码内容
      • ANDROID_KEYSTORE_PASSWORD:密钥库密码
      • ANDROID_KEY_ALIAS:密钥别名
      • ANDROID_KEY_PASSWORD:密钥密码
  3. 配置签名属性模板
    在项目根目录创建signing.properties文件(务必添加到.gitignore,禁止提交到仓库),内容如下:

    storeFile=../my-release-key.jks
    storePassword=${ANDROID_KEYSTORE_PASSWORD}
    keyAlias=${ANDROID_KEY_ALIAS}
    keyPassword=${ANDROID_KEY_PASSWORD}
    

编写GitHub Actions工作流

在项目路径.github/workflows/android-build.yml下创建工作流文件,内容示例:

name: Android Signed Build & Deploy

on:
  push:
    branches: [ main ]
  release:
    types: [ published ]

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

      - name: 配置Node环境
        uses: actions/setup-node@v4
        with:
          node-version: 20
          cache: 'npm'

      - name: 安装依赖
        run: npm ci

      - name: 构建Ionic项目
        run: npm run build

      - name: 同步Capacitor到Android
        run: npx cap sync android

      - name: 配置Java环境
        uses: actions/setup-java@v4
        with:
          java-version: '17'
          distribution: 'temurin'
          cache: 'gradle'

      - name: 解密签名密钥
        run: |
          echo "${{ secrets.ANDROID_KEYSTORE_BASE64 }}" | base64 -d > android/app/my-release-key.jks

      - name: 生成签名配置文件
        run: |
          echo "storeFile=my-release-key.jks" > android/signing.properties
          echo "storePassword=${{ secrets.ANDROID_KEYSTORE_PASSWORD }}" >> android/signing.properties
          echo "keyAlias=${{ secrets.ANDROID_KEY_ALIAS }}" >> android/signing.properties
          echo "keyPassword=${{ secrets.ANDROID_KEY_PASSWORD }}" >> android/signing.properties

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

      - name: 构建签名App Bundle(AAB)
        run: cd android && ./gradlew bundleRelease

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

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

      # 可选:自动部署到Google Play(需额外配置Google服务账号密钥)
      # - name: 部署到Google Play
      #   uses: r0adkll/upload-google-play@v1
      #   with:
      #     serviceAccountJson: ${{ secrets.GOOGLE_PLAY_SERVICE_ACCOUNT_JSON }}
      #     packageName: com.your.app.package
      #     releaseFiles: android/app/build/outputs/bundle/release/app-release.aab
      #     track: production

关键说明

  • 触发规则:默认配置为推送到main分支或发布版本时触发,可根据需求修改on字段调整触发时机。
  • 依赖缓存:通过cache参数缓存npm和Gradle依赖,大幅缩短构建时间。
  • 安全配置:工作流中动态生成签名配置文件并解密密钥,避免敏感信息暴露。
  • 产物管理:同时生成APK和AAB两种格式,作为GitHub Artifacts保存,方便下载或后续部署。
  • 商店部署:若需自动发布到Google Play,需在GitHub Secrets中添加Google服务账号的JSON密钥,并启用注释中的部署步骤。

验证构建结果

提交工作流文件后,触发构建(如推送代码到main分支),在仓库Actions标签下查看构建状态。完成后可在Artifacts中下载签名产物,用以下命令验证签名有效性:

apksigner verify --verbose app-release.apk

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.14 13:19:55