summaryrefslogtreecommitdiffhomepage
path: root/.github/workflows/android-app.yml
blob: 222ac752fa0710c3b9311290231ee8cbf5c9f5d5 (plain)
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
70
71
72
73
74
75
76
77
78
79
name: Android app CI
on:
    # Build whenever a file that affects Android is changed by a push
    push:
        paths:
            - .github/workflows/android-app.yml
            - android/**
            - mullvad-daemon/**
            - mullvad-jni/**
            - mullvad-paths/**
            - mullvad-problem-report/**
            - mullvad-rpc/**
            - mullvad-types/**
            - talpid-core/**
            - talpid-platform-metadata/**
            - talpid-types/**
            - talpid-types/**
            - wireguard/**
            - Cargo.toml
            - build-apk.sh
            - update-api-metadata.sh
            - update-version-metadata.sh
            - version-metadata.sh
    # Build if requested manually from the Actions tab
    workflow_dispatch:
jobs:
    build:
        runs-on: ubuntu-latest
        steps:
            # Checkout repository
            - uses: actions/checkout@v2

            # Install Rust
            - uses: ATiltedTree/setup-rust@v1.0.4
              with:
                  rust-version: stable
                  targets: aarch64-linux-android

            # Install Go
            - uses: actions/setup-go@v2.1.3
              with:
                  go-version: 1.16

            # Install Android SDK
            - uses: maxim-lobanov/setup-android-tools@v1
              with:
                  packages: |
                      platforms;android-30
                      build-tools;30.0.3
                  cache: true

            # Install Android NDK
            - id: install-android-ndk
              uses: nttld/setup-ndk@v1
              with:
                  ndk-version: r20b

            # Configure Cargo to use NDK toolchain
            - run: |
                cat >> $HOME/.cargo/config << EOF
                [target.aarch64-linux-android]
                ar = "${{ steps.install-android-ndk.outputs.ndk-path }}/toolchains/llvm/prebuilt/linux-x86_64/bin/aarch64-linux-android-ar"
                linker = "${{ steps.install-android-ndk.outputs.ndk-path }}/toolchains/llvm/prebuilt/linux-x86_64/bin/aarch64-linux-android21-clang"
                EOF

            # Build APK
            - env:
                RUSTFLAGS: --deny warnings
                NDK_TOOLCHAIN_DIR: ${{ steps.install-android-ndk.outputs.ndk-path }}/toolchains/llvm/prebuilt/linux-x86_64/bin
                AR_aarch64_linux_android: ${{ steps.install-android-ndk.outputs.ndk-path }}/toolchains/llvm/prebuilt/linux-x86_64/bin/aarch64-linux-android-ar
                CC_aarch64_linux_android: ${{ steps.install-android-ndk.outputs.ndk-path }}/toolchains/llvm/prebuilt/linux-x86_64/bin/aarch64-linux-android21-clang
                ARCHITECTURES: arm64
              run: |
                ./wireguard/build-wireguard-go.sh --android --no-docker
                source env.sh aarch64-linux-android
                cargo build --target aarch64-linux-android --verbose --package mullvad-jni
                cd android
                ./gradlew --console plain assembleDebug
                ./gradlew testDebugUnitTest