使用GitHub Action自动化构建发布Ionic(7.2.0)+Capacitor(7.0.1)签名Android APK
基于Ionic+Capacitor的Android应用GitHub Actions签名构建与部署自动化方案
前置准备
生成Android签名密钥
若还未生成签名密钥,执行以下命令创建:keytool -genkey -v -keystore my-release-key.jks -keyalg RSA -keysize 2048 -validity 10000 -alias my-key-alias牢记密钥库密码、密钥密码及别名,后续配置会用到。
将密钥存入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:密钥密码
- 把签名密钥文件转为Base64编码:
配置签名属性模板
在项目根目录创建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
相关产品推荐
相关产品推荐

