Compare commits
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
38c6db1e45 |
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
|
||||||
@@ -7,6 +7,10 @@ app/build/
|
|||||||
*.apk
|
*.apk
|
||||||
local.properties
|
local.properties
|
||||||
|
|
||||||
|
# 签名密钥
|
||||||
|
release.keystore
|
||||||
|
release.keystore.b64
|
||||||
|
|
||||||
# 自包含的工具链(体积大,若用 git 建议忽略;重装见 SETUP.md)
|
# 自包含的工具链(体积大,若用 git 建议忽略;重装见 SETUP.md)
|
||||||
android-sdk/
|
android-sdk/
|
||||||
tools/*
|
tools/*
|
||||||
|
|||||||
Reference in new issue
Block a user