Files
kirl 38c6db1e45
Android CI / Build APK (push) Waiting to run
Github Action CI
2026-09-01 16:31:52 +08:00

94 lines
3.1 KiB
YAML
Raw Permalink Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# Android CI — 7maHelper (4ma 用车计时助手)
#
# 触发条件:
# - push / pull_request 到 main 或 master
# - 手动触发 (Actions 页面的 Run workflow 按钮)
#
# 任务:
# 1. JDK 17 + Android SDK (platforms;android-35, build-tools;35.0.0)
# 2. Gradle wrapper 校验 + 依赖缓存 (gradle/actions/setup-gradle)
# 3. 构建 Debug / Release APK
# 4. 上传 APK 为 Actions artifact
name: Android CI
on:
push:
branches: [ main, master ]
pull_request:
branches: [ main, master ]
workflow_dispatch:
permissions:
contents: read
jobs:
build:
name: Build APK
runs-on: ubuntu-latest
steps:
- name: Checkout
uses: actions/checkout@v4
- name: Set up JDK 17
uses: actions/setup-java@v4
with:
distribution: temurin
java-version: '17'
- name: Set up Android SDK
run: |
# GitHub 托管 runner 已预装 Android SDK (ANDROID_HOME 默认已设置),
# 这里只显式安装本项目所需的平台与构建工具,并接受所有许可。
yes | sdkmanager --licenses >/dev/null 2>&1 || true
sdkmanager "platforms;android-35" "build-tools;35.0.0"
- name: Set up Gradle
uses: gradle/actions/setup-gradle@v4
- name: Grant execute permission for gradlew
run: chmod +x gradlew
- name: Build with Gradle
# local.properties 已被 .gitignore 忽略,CI 上不存在;
# AGP 自动使用 ANDROID_HOME 环境变量定位 SDK。
run: ./gradlew assembleDebug assembleRelease --no-daemon
- name: Upload APK artifacts
uses: actions/upload-artifact@v4
with:
name: apk
path: |
app/build/outputs/apk/debug/*.apk
app/build/outputs/apk/release/*.apk
if-no-files-found: error
# 可选:对 Release APK 进行正式签名。
# 启用方法(在仓库 Settings -> Secrets and variables -> Actions 中配置):
# KEYSTORE_BASE64 - base64 编码的 keystore 文件内容
# KEYSTORE_PASSWORD / KEY_ALIAS / KEY_PASSWORD
# 未配置时此步骤自动跳过。
- name: Sign Release APK (optional)
if: env.KEYSTORE_BASE64 != ''
env:
KEYSTORE_BASE64: ${{ secrets.KEYSTORE_BASE64 }}
KEYSTORE_PASSWORD: ${{ secrets.KEYSTORE_PASSWORD }}
KEY_ALIAS: ${{ secrets.KEY_ALIAS }}
KEY_PASSWORD: ${{ secrets.KEY_PASSWORD }}
run: |
APK="app/build/outputs/apk/release/app-release-unsigned.apk"
if [ -f "$APK" ]; then
echo "$KEYSTORE_BASE64" | base64 -d > release.keystore
"$ANDROID_HOME/build-tools/35.0.0/apksigner" sign \
--ks release.keystore \
--ks-pass "pass:${KEYSTORE_PASSWORD}" \
--key-pass "pass:${KEY_PASSWORD}" \
--ks-key-alias "$KEY_ALIAS" \
--out app/build/outputs/apk/release/app-release.apk \
"$APK"
echo "已签名: app/build/outputs/apk/release/app-release.apk"
else
echo "未找到 release 未签名 APK,跳过签名"
fi