Compare commits

...
1 Commits
Author SHA1 Message Date
kirl 38c6db1e45 Github Action CI
Android CI / Build APK (push) Waiting to run
2026-09-01 16:31:52 +08:00
2 changed files with 97 additions and 0 deletions

No files matched your search

+93
View File
@@ -0,0 +1,93 @@
# 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
+4
View File
@@ -7,6 +7,10 @@ app/build/
*.apk
local.properties
# 签名密钥
release.keystore
release.keystore.b64
# 自包含的工具链(体积大,若用 git 建议忽略;重装见 SETUP.md)
android-sdk/
tools/*