Skip to content

Commit 55e06e2

Browse files
Create build-android.yml
1 parent d60e140 commit 55e06e2

1 file changed

Lines changed: 99 additions & 0 deletions

File tree

Lines changed: 99 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,99 @@
1+
name: Build Android APK
2+
3+
on:
4+
push:
5+
branches: [main]
6+
workflow_dispatch:
7+
8+
jobs:
9+
build-android:
10+
runs-on: ubuntu-latest
11+
steps:
12+
- name: Checkout repository
13+
uses: actions/checkout@v4
14+
15+
- name: Extract source code
16+
run: |
17+
mkdir -p source
18+
tar xzf readest-build-ready.tar.gz -C source
19+
cp -r source/.github .github 2>/dev/null || true
20+
for item in source/*; do
21+
if [ "$(basename "$item")" != ".github" ]; then
22+
cp -r "$item" ./
23+
fi
24+
done
25+
rm -rf source readest-build-ready.tar.gz
26+
27+
- name: Setup Java
28+
uses: actions/setup-java@v4
29+
with:
30+
distribution: 'temurin'
31+
java-version: '17'
32+
33+
- name: Setup Node.js
34+
uses: actions/setup-node@v4
35+
with:
36+
node-version: '22'
37+
38+
- name: Setup pnpm
39+
uses: pnpm/action-setup@v4
40+
with:
41+
version: 10
42+
43+
- name: Setup Rust
44+
uses: dtolnay/rust-toolchain@stable
45+
46+
- name: Rust cache
47+
uses: swatinem/rust-cache@v2
48+
with:
49+
workspaces: apps/readest-app/src-tauri -> target
50+
51+
- name: Install Android SDK
52+
uses: android-actions/setup-android@v3
53+
54+
- name: Install Android NDK
55+
run: sdkmanager --install "ndk;28.0.13004108"
56+
57+
- name: Install pnpm dependencies
58+
run: pnpm install --no-frozen-lockfile
59+
60+
- name: Setup vendor assets
61+
working-directory: apps/readest-app
62+
run: |
63+
mkdir -p packages/foliate-js/node_modules
64+
cd packages/foliate-js/node_modules
65+
npm pack pdfjs-dist@4.9.155
66+
tar xzf pdfjs-dist-4.9.155.tgz
67+
mv package pdfjs-dist
68+
rm pdfjs-dist-4.9.155.tgz
69+
mkdir -p ../../../../packages/foliate-js/vendor/pdfjs
70+
touch ../../../../packages/foliate-js/vendor/pdfjs/annotation_layer_builder.css
71+
touch ../../../../packages/foliate-js/vendor/pdfjs/text_layer_builder.css
72+
73+
- name: Setup vendors
74+
working-directory: apps/readest-app
75+
run: pnpm setup-vendors
76+
77+
- name: Build Next.js frontend
78+
working-directory: apps/readest-app
79+
run: pnpm build
80+
env:
81+
NODE_OPTIONS: '--max-old-space-size=4096'
82+
83+
- name: Build Android APK
84+
uses: tauri-apps/tauri-action@v0
85+
env:
86+
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
87+
ANDROID_HOME: ${{ env.ANDROID_HOME }}
88+
NDK_HOME: ${{ env.ANDROID_HOME }}/ndk/28.0.13004108
89+
with:
90+
projectPath: apps/readest-app
91+
tauriScript: pnpm tauri
92+
args: --target aarch64
93+
94+
- name: Upload APK artifact
95+
uses: actions/upload-artifact@v4
96+
with:
97+
name: readest-android-apk
98+
path: apps/readest-app/src-tauri/gen/android/app/build/outputs/apk/universal/release/*.apk
99+
if-no-files-found: error

0 commit comments

Comments
 (0)