ci: build Android packages in release workflow

Provision Java, Android SDK and NDK, and Rust Android targets in GitHub Actions. Initialize the Tauri Android project, build APK and AAB packages, upload workflow artifacts, and attach them to tagged releases. Document local Android packaging and signing requirements.
This commit is contained in:
2026-09-16 17:20:09 -04:00
parent 84fd2da49c
commit e3b34a9712
3 changed files with 65 additions and 3 deletions

View File

@@ -48,4 +48,59 @@ jobs:
releaseName: 'Cipher Master ${{ github.ref_name }}'
releaseBody: 'Download the compiled standalone application binaries below.'
releaseDraft: true
prerelease: false
prerelease: false
android:
name: Android APK and AAB
runs-on: ubuntu-latest
permissions:
contents: write
steps:
- uses: actions/checkout@v4
- name: Setup Java
uses: actions/setup-java@v4
with:
distribution: temurin
java-version: '17'
- name: Setup Android SDK
uses: android-actions/setup-android@v3
- name: Install Android SDK packages
run: sdkmanager "platform-tools" "platforms;android-35" "build-tools;35.0.0" "ndk;27.2.12479018"
- name: Install Rust
uses: dtolnay/rust-toolchain@stable
with:
targets: aarch64-linux-android, armv7-linux-androideabi, i686-linux-android, x86_64-linux-android
- name: Install Tauri CLI
run: cargo install tauri-cli --version '^2.0' --locked
- name: Initialize Android project
working-directory: src-tauri
run: cargo tauri android init
- name: Build Android packages
working-directory: src-tauri
run: cargo tauri android build --apk --aab
- name: Upload Android packages
uses: actions/upload-artifact@v4
with:
name: cipher-master-android-${{ github.ref_name }}
path: |
src-tauri/gen/android/app/build/outputs/apk/**/*.apk
src-tauri/gen/android/app/build/outputs/bundle/**/*.aab
if-no-files-found: error
- name: Attach Android packages to GitHub release
uses: softprops/action-gh-release@v2
if: startsWith(github.ref, 'refs/tags/')
with:
files: |
src-tauri/gen/android/app/build/outputs/apk/**/*.apk
src-tauri/gen/android/app/build/outputs/bundle/**/*.aab
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}

View File

@@ -58,7 +58,13 @@ cargo tauri android dev
cargo tauri android build
```
The generated Android project lives under `src-tauri/gen/android` and should be reviewed before committing. The responsive frontend and bundled quote library work without a desktop-only dependency; Ollama remains optional and is normally unavailable on a phone.
The generated Android project lives under `src-tauri/gen/android` and should be reviewed before committing. To build both Android package formats locally after setup:
```bash
cargo tauri android build --apk --aab
```
The APK and AAB outputs are written under `src-tauri/gen/android/app/build/outputs/`. The tagged GitHub Actions release workflow also provisions Java 17, Android API 35, build tools, the Android NDK, and Rust Android targets, then uploads the APK/AAB files as a workflow artifact. A signed store release requires configuring Android signing secrets; unsigned packages are suitable for testing only.
## Discord Slash Commands Setup

View File

@@ -20,7 +20,8 @@ This document outlines proposed integrations with external services, tools, and
* **Custom Printed Output (Thermal Printers)**: Direct USB/Bluetooth printer integration to print cryptographic escape room physical receipts/slips.
## 5. Other OSes
* **Android Packaging**: Tauri Android support is ready to initialize with `cargo tauri android init` and build with `cargo tauri android build`. The responsive frontend and bundled quote fallback keep the mobile app useful without Ollama.
* **Android Packaging**: The release workflow provisions Java 17, Android API 35, build tools, the Android NDK, and Rust Android targets, initializes Tauri Android, and builds both APK and AAB packages. Local builds use `cargo tauri android init` followed by `cargo tauri android build --apk --aab`.
* **Android release artifacts**: GitHub Actions uploads the APK/AAB files to the workflow run and attaches them to tagged GitHub releases. Store-ready distribution still requires Android signing secrets and a signing configuration.
## 6. Discord Slash Commands
* **Discord bot starter**: `integrations/discord-bot` provides `/cipher`, `/hint`, and `/solution`. It uses the bundled quote library, keeps challenge state per user, and makes hints and solutions ephemeral.