Repository navigation
69 lines (59 loc) · 1.98 KB
/
Copy pathandroid.yml
File metadata and controls
69 lines (59 loc) · 1.98 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
name: Android APK
on:
push:
branches: [v1.0, master]
paths:
- "apps/android/**"
- "crates/**"
- "Cargo.lock"
- ".github/workflows/android.yml"
workflow_dispatch:
jobs:
apk:
runs-on: ubuntu-latest
env:
NDK_VERSION: "27.2.12479018"
steps:
- 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
uses: android-actions/setup-android@v3
- name: Install NDK
run: yes | sdkmanager --install "ndk;${NDK_VERSION}" > /dev/null
- name: Set up Rust
uses: dtolnay/rust-toolchain@stable
with:
targets: aarch64-linux-android
- name: Rust cache
uses: Swatinem/rust-cache@v2
with:
workspaces: |
.
apps/android
- name: Build Rust core (arm64)
env:
NDK_HOME: ${{ env.ANDROID_HOME }}/ndk/${{ env.NDK_VERSION }}
run: |
export NDK_BIN="$NDK_HOME/toolchains/llvm/prebuilt/linux-x86_64/bin"
export CARGO_TARGET_AARCH64_LINUX_ANDROID_LINKER="$NDK_BIN/aarch64-linux-android26-clang"
export CC_aarch64_linux_android="$NDK_BIN/aarch64-linux-android26-clang"
export AR_aarch64_linux_android="$NDK_BIN/llvm-ar"
cargo build --release -p echo-bindings --target aarch64-linux-android
mkdir -p apps/android/app/src/main/jniLibs/arm64-v8a
cp target/aarch64-linux-android/release/libecho_bindings.so \
apps/android/app/src/main/jniLibs/arm64-v8a/
- name: Build APK
working-directory: apps/android
run: |
chmod +x gradlew
./gradlew :app:assembleDebug --no-daemon
- name: Upload APK
uses: actions/upload-artifact@v4
with:
name: echo-android-debug
path: apps/android/app/build/outputs/apk/debug/app-debug.apk
if-no-files-found: error