4.23

安卓应用的 CI/CD 集成
以下是使用 GitHub Actions 实现安卓应用 CI/CD 的 Java 实践:

  1. 创建 workflow 文件
    在项目根目录下创建.github/workflows/android.yml文件:

yaml
name: Android CI

on:
push:
branches: [ main ]
pull_request:
branches: [ main ]

jobs:
build:
runs-on: ubuntu-latest

steps:
- uses: actions/checkout@v3
- name: Set up JDK 11
  uses: actions/setup-java@v3
  with:
    java-version: '11'
    distribution: 'adopt'

- name: Validate Gradle wrapper
  uses: gradle/wrapper-validation-action@v1

- name: Build with Gradle
  run: ./gradlew build

- name: Run tests
  run: ./gradlew test

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

- name: Sign APK
  if: github.event_name == 'push' && github.ref == 'refs/heads/main'
  run: |
    echo "$KEYSTORE" | base64 -d > release.keystore
    ./gradlew assembleRelease \
      -Pandroid.injected.signing.store.file=release.keystore \
      -Pandroid.injected.signing.store.password=$KEYSTORE_PASSWORD \
      -Pandroid.injected.signing.key.alias=$KEY_ALIAS \
      -Pandroid.injected.signing.key.password=$KEY_PASSWORD
  env:
    KEYSTORE: ${{ secrets.KEYSTORE }}
    KEYSTORE_PASSWORD: ${{ secrets.KEYSTORE_PASSWORD }}
    KEY_ALIAS: ${{ secrets.KEY_ALIAS }}
    KEY_PASSWORD: ${{ secrets.KEY_PASSWORD }}

- name: Upload Release APK
  if: github.event_name == 'push' && github.ref == 'refs/heads/main'
  uses: actions/upload-artifact@v3
  with:
    name: app-release.apk
    path: app/build/outputs/apk/release/app-release.apk
  1. 配置密钥
    在 GitHub 仓库的 Settings > Secrets 中添加以下密钥:

KEYSTORE: 经过 Base64 编码的签名密钥库文件
KEYSTORE_PASSWORD: 密钥库密码
KEY_ALIAS: 密钥别名
KEY_PASSWORD: 密钥密码
3. 生成 Base64 编码的密钥库
bash
base64 release.keystore > release.keystore.base64
通过以上配置,每次推送到 main 分支时,GitHub Actions 会自动构建、测试并上传 APK 文件。

posted @ 2025-04-23 21:20  Echosssss  阅读(5)  评论(0)    收藏  举报