Skip to content

fixs

fixs #18

Workflow file for this run

name: Android CI
on:
push:
tags:
- 'v*.*.*'
workflow_dispatch:
jobs:
build-android:
runs-on: ubuntu-latest
steps:
- name: Checkout
uses: actions/checkout@v5
- name: Setup Node
uses: actions/setup-node@v5
with:
node-version: '24'
- name: Install deps
run: npm ci
- name: Sync Android version
run: node scripts/sync-android-version.mjs
- name: Add & Sync Capacitor Android
run: |
npx cap sync
if [ ! -d android ]; then
npx cap add android
fi
npx cap sync android
- name: Setup Java
uses: actions/setup-java@v5
with:
distribution: temurin
java-version: '17'
- name: Make Gradle wrapper executable
working-directory: android
run: chmod +x gradlew
- name: Build Debug APK
working-directory: android
run: ./gradlew assembleDebug
- name: Upload Debug APK
uses: actions/upload-artifact@v6
with:
name: app-debug-apk
path: android/app/build/outputs/apk/debug/*.apk
if-no-files-found: warn
- name: Decode Keystore (PKCS#12)
run: |
if [ -n "${ANDROID_KEYSTORE_BASE64}" ]; then
echo "$ANDROID_KEYSTORE_BASE64" | base64 -d > android/keystore.p12
echo "Keystore decoded to android/keystore.p12"
else
echo "ANDROID_KEYSTORE_BASE64 not set; skipping keystore decode"
fi
env:
ANDROID_KEYSTORE_BASE64: ${{ secrets.ANDROID_KEYSTORE_BASE64 }}
- name: Build Signed Release (AAB + APK)
working-directory: android
env:
ANDROID_KEYSTORE_BASE64: ${{ secrets.ANDROID_KEYSTORE_BASE64 }}
KEYSTORE_PATH: keystore.p12
KEYSTORE_PASSWORD: ${{ secrets.ANDROID_KEYSTORE_PASSWORD }}
KEY_ALIAS: ${{ secrets.ANDROID_KEY_ALIAS }}
KEY_PASSWORD: ${{ secrets.ANDROID_KEY_PASSWORD }}
run: |
if [ -n "${ANDROID_KEYSTORE_BASE64}" ]; then
chmod +x gradlew
./gradlew clean
./gradlew \
bundleRelease \
assembleRelease \
-Pandroid.injected.signing.store.file=$GITHUB_WORKSPACE/android/$KEYSTORE_PATH \
-Pandroid.injected.signing.store.password=$KEYSTORE_PASSWORD \
-Pandroid.injected.signing.store.type=PKCS12 \
-Pandroid.injected.signing.key.alias=$KEY_ALIAS \
-Pandroid.injected.signing.key.password=$KEY_PASSWORD
else
echo "No keystore secret; skipping signed release build"
fi
- name: Upload Release AAB
uses: actions/upload-artifact@v6
with:
name: app-release-aab
path: android/app/build/outputs/bundle/release/*.aab
if-no-files-found: ignore
- name: Upload Release APK
uses: actions/upload-artifact@v6
with:
name: app-release-apk
path: android/app/build/outputs/apk/release/*.apk
if-no-files-found: ignore