1 parent
2cf3cbad56
commit
38c6db1e45
2 files changed
+97
No files matched your search
@@ -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
|
||||
Reference in new issue
Block a user