Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
87 changes: 87 additions & 0 deletions .github/workflows/android-split.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,87 @@
name: Android Split-ABI Build

on:
push:
branches:
- build

jobs:
build:
runs-on: ubuntu-latest

env:
ANDROID_NDK_VERSION: r25c

steps:
- name: Checkout code
uses: actions/checkout@v4

- name: Set up JDK
uses: actions/setup-java@v3
with:
distribution: 'temurin'
java-version: '17'

- name: Install Bun
run: |
curl -fsSL https://bun.sh/install | bash
echo "$HOME/.bun/bin" >> $GITHUB_PATH

- name: Install Rust
uses: dtolnay/rust-toolchain@stable

- name: Rust cache
uses: swatinem/rust-cache@v2
with:
workspaces: '. -> src-tauri/target'

- name: Install Android SDK
uses: android-actions/setup-android@v3

- name: Install Android NDK
id: ndk
uses: nttld/setup-ndk@v1
with:
ndk-version: ${{ env.ANDROID_NDK_VERSION }}
local-cache: true

- name: Export NDK_HOME
run: echo "NDK_HOME=${{ steps.ndk.outputs.ndk-path }}" >> $GITHUB_ENV

- name: Decode keystore and create signing config
run: |
mkdir -p src-tauri/gen/android
echo "keyAlias=${{ secrets.ANDROID_KEY_ALIAS }}" > src-tauri/gen/android/keystore.properties
echo "password=${{ secrets.ANDROID_KEY_PASSWORD }}" >> src-tauri/gen/android/keystore.properties
echo "storePassword=${{ secrets.ANDROID_KEY_PASSWORD }}" >> src-tauri/gen/android/keystore.properties
echo "keyPassword=${{ secrets.ANDROID_KEY_PASSWORD }}" >> src-tauri/gen/android/keystore.properties

echo "storeFile=hyperionbox.jks" >> src-tauri/gen/android/keystore.properties

- name: Install dependencies
run: bun install

- name: Build split-ABI APKs
run: bun tauri android build --apk --split-per-abi

- name: Rename and collect split-ABI APKs
run: |
APK_ROOT=src-tauri/gen/android/app/build/outputs/apk
OUTPUT_DIR=$APK_ROOT/renamed
mkdir -p "$OUTPUT_DIR"

for ARCH in arm arm64 x86 x86_64; do
SRC="$APK_ROOT/$ARCH/release/app-$ARCH-release.apk"
DEST="$OUTPUT_DIR/hyperionbox-$ARCH-release.apk"
if [ -f "$SRC" ]; then
cp "$SRC" "$DEST"
else
echo "Warning: APK not found for $ARCH"
fi
done

- name: Upload renamed APKs as artifacts
uses: actions/upload-artifact@v4
with:
name: hyperionbox-split-apks
path: src-tauri/gen/android/app/build/outputs/apk/renamed/*.apk
78 changes: 78 additions & 0 deletions .github/workflows/android-universal.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,78 @@
name: Android Universal APK Build

on:
push:
branches:
- build

jobs:
build-universal:
runs-on: ubuntu-latest

env:
ANDROID_NDK_VERSION: r25c

steps:
- name: Checkout code
uses: actions/checkout@v4

- name: Set up JDK
uses: actions/setup-java@v3
with:
distribution: 'temurin'
java-version: '17'

- name: Install Bun
run: |
curl -fsSL https://bun.sh/install | bash
echo "$HOME/.bun/bin" >> $GITHUB_PATH

- name: Install Rust
uses: dtolnay/rust-toolchain@stable

- name: Rust cache
uses: swatinem/rust-cache@v2
with:
workspaces: '. -> src-tauri/target'

- name: Install Android SDK
uses: android-actions/setup-android@v3

- name: Install Android NDK
id: ndk
uses: nttld/setup-ndk@v1
with:
ndk-version: ${{ env.ANDROID_NDK_VERSION }}
local-cache: true

- name: Export NDK_HOME
run: echo "NDK_HOME=${{ steps.ndk.outputs.ndk-path }}" >> $GITHUB_ENV

- name: Decode keystore and create signing config
run: |
mkdir -p src-tauri/gen/android
echo "keyAlias=${{ secrets.ANDROID_KEY_ALIAS }}" > src-tauri/gen/android/keystore.properties
echo "password=${{ secrets.ANDROID_KEY_PASSWORD }}" >> src-tauri/gen/android/keystore.properties
echo "storePassword=${{ secrets.ANDROID_KEY_PASSWORD }}" >> src-tauri/gen/android/keystore.properties
echo "keyPassword=${{ secrets.ANDROID_KEY_PASSWORD }}" >> src-tauri/gen/android/keystore.properties

echo "storeFile=hyperionbox.jks" >> src-tauri/gen/android/keystore.properties

- name: Install dependencies
run: bun install

- name: Build universal APK
run: bun tauri android build

- name: Rename universal APK
run: |
APK_PATH=src-tauri/gen/android/app/build/outputs/apk/universal/release/app-universal-release.apk
OUTPUT_DIR=src-tauri/gen/android/app/build/outputs/apk/universal/renamed
mkdir -p "$OUTPUT_DIR"
cp "$APK_PATH" "$OUTPUT_DIR/hyperionbox-universal-release.apk"

- name: Upload universal APK as artifact
uses: actions/upload-artifact@v4
with:
name: hyperionbox-universal-apk
path: src-tauri/gen/android/app/build/outputs/apk/universal/renamed/hyperionbox-universal-release.apk
47 changes: 47 additions & 0 deletions .github/workflows/windows.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,47 @@
name: Windows Build

on:
push:
branches:
- build

jobs:
build-windows:
runs-on: windows-latest

steps:
- name: Checkout code
uses: actions/checkout@v4

- name: Set up Bun
uses: oven-sh/setup-bun@v2
with:
bun-version: latest

- name: Install Rust
uses: dtolnay/rust-toolchain@stable

- name: Rust cache
uses: swatinem/rust-cache@v2
with:
workspaces: '. -> src-tauri/target'

- name: Export Tauri signing environment variables
shell: bash
run: |
echo "TAURI_SIGNING_PRIVATE_KEY=${{ secrets.TAURI_SIGNING_PRIVATE_KEY }}" >> $GITHUB_ENV
echo "TAURI_SIGNING_PRIVATE_KEY_PASSWORD=${{ secrets.TAURI_SIGNING_PRIVATE_KEY_PASSWORD }}" >> $GITHUB_ENV

- name: Install dependencies
run: bun install

- name: Build Windows installer
run: bun tauri build

- name: Upload NSIS installer and signature
uses: actions/upload-artifact@v4
with:
name: hyperionbox-windows-installer
path: |
src-tauri/target/release/bundle/nsis/*-setup.exe
src-tauri/target/release/bundle/nsis/*.sig
4 changes: 2 additions & 2 deletions src-tauri/Cargo.lock

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

4 changes: 2 additions & 2 deletions src-tauri/Cargo.toml
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
[package]
name = "HyperionBox"
version = "2.0.1"
version = "2.0.2"
description = "A Tauri App"
authors = ["you"]
edition = "2021"
Expand All @@ -17,7 +17,7 @@ crate-type = ["staticlib", "cdylib", "rlib"]
[profile.release]
opt-level = 3
lto = true
strip = false # Dynamic libloading will be bugged if set strip to `true`
strip = true
codegen-units = 1

[build-dependencies]
Expand Down
47 changes: 0 additions & 47 deletions src-tauri/gen/android/app/hyperionbox_encoded.jks.txt

This file was deleted.

2 changes: 1 addition & 1 deletion src-tauri/tauri.conf.json
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
{
"$schema": "https://schema.tauri.app/config/2",
"productName": "HyperionBox",
"version": "2.0.1",
"version": "2.0.2",
"identifier": "io.github.goodday360.hyperionbox",
"build": {
"beforeDevCommand": "bun run dev",
Expand Down
Loading