-
Notifications
You must be signed in to change notification settings - Fork 12
129 lines (124 loc) · 5.17 KB
/
x86_64-linux-android.yml
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
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
# based on https://github.com/xaynetwork/cargo_tai
name: x86_64-linux-android
on: pull_request
env:
ANDROID_COMMANDLINE_TOOLS_VERSION: 9477386
ANDROID_API: 33
ANDROID_NDK_VERSION: 25.2.9519653
ANDROID_SYSTEM_IMAGE_PACKAGE: system-images;android-33;google_apis_playstore;x86_64
OPENSSL_VERSION: 1.1.1s
TOOLCHAIN: nightly
CARGO_TERM_COLOR: always
CARGO_NDK_REV: "8478e58"
CARGO_TAI_REV: "90f487f"
jobs:
integration_tests:
# rust cross-compilation
runs-on: macos-12
steps:
- uses: actions/checkout@v4
- name: Install Rust Nightly
uses: actions-rs/toolchain@v1
with:
toolchain: ${{ env.TOOLCHAIN }}
target: x86_64-linux-android
default: true
- name: Cache Cargo
uses: actions/cache@v3
with:
path: |
~/.cargo/bin
~/.cargo/git
~/.cargo/registry
target
key: ${{ github.workflow }}-${{ github.job }}-toolchain-${{ env.TOOLCHAIN }}-cargo-${{ env.CARGO_NDK_REV }}-${{ env.CARGO_TAI_REV }}-${{ hashFiles('**/Cargo.lock') }}
- name: Install cargo-ndk
run: |
if ! command -v cargo-ndk &> /dev/null; then
cargo install --git https://github.com/bbqsrc/cargo-ndk --rev ${CARGO_NDK_REV}
fi
- name: Install cargo-tai
run: |
if ! command -v cargo-tai &> /dev/null; then
cargo install --git https://github.com/liveview-native/cargo_tai --branch liveviewnative --rev ${CARGO_TAI_REV}
fi
- name: Build
uses: actions-rs/cargo@v1
with:
command: build
args: --package liveview-native-core
- name: Set up JDK 17
uses: actions/setup-java@v3
with:
java-version: 17
distribution: 'temurin'
- name: Cache android
id: cache-android
uses: actions/cache@v3
env:
cache-name: cache-android
with:
path: ~/android
key: ${{ runner.os }}-android-${{ env.cache-name }}-${{ env.ANDROID_COMMANDLINE_TOOLS_VERSION }}
restore-keys: |
${{ runner.os }}-android-${{ env.cache-name }}-${{ env.ANDROID_COMMANDLINE_TOOLS_VERSION }}
${{ runner.os }}-mix-
- name: Download Android Command Line Tools
run: |
if [ ! -d "$HOME/android/cmdline-tools/${ANDROID_COMMANDLINE_TOOLS_VERSION}" ]; then
cd $HOME
# clear old version if it exists
rm -rf android
mkdir -p android/cmdline-tools
cd android/cmdline-tools
PACKAGE=commandlinetools-mac-${ANDROID_COMMANDLINE_TOOLS_VERSION}_latest
wget https://dl.google.com/android/repository/${PACKAGE}.zip
unzip ${PACKAGE}.zip
rm ${PACKAGE}.zip
mv cmdline-tools ${ANDROID_COMMANDLINE_TOOLS_VERSION}
ln -sf ${ANDROID_COMMANDLINE_TOOLS_VERSION} latest
fi
- name: Add Android home and subdirectories to environment
run: |
export ANDROID_HOME="$HOME/android"
echo "ANDROID_HOME=$ANDROID_HOME" >> $GITHUB_ENV
echo "${ANDROID_HOME}/cmdline-tools/latest/bin" >> $GITHUB_PATH
echo "${ANDROID_HOME}/emulator" >> $GITHUB_PATH
echo "${ANDROID_HOME}/platform-tools" >> $GITHUB_PATH
- name: sdkmanager setup
run: |
yes | sdkmanager --licenses
sdkmanager --install "platform-tools" \
"platforms;android-${ANDROID_API}" \
"build-tools;${ANDROID_API}.0.2" \
"emulator" \
"ndk;${ANDROID_NDK_VERSION}" \
"${ANDROID_SYSTEM_IMAGE_PACKAGE}"
# https://github.com/sfackler/rust-openssl/issues/1402
- name: Add NDK clang to PATH
run: |
echo "${ANDROID_NDK_HOME}/toolchains/llvm/prebuilt/darwin-x86_64/bin" >> $GITHUB_PATH
- name: Create Android Virtual Device
run: |
echo no | \
avdmanager create avd --force \
--name AVD \
--abi google_apis_playstore/x86_64 \
--package "${ANDROID_SYSTEM_IMAGE_PACKAGE}"
- name: Start Android Emulator
timeout-minutes: 20
run: |
echo "Starting ADB server"
${ANDROID_HOME}/platform-tools/adb start-server
echo "Starting Emulator"
${ANDROID_HOME}/emulator/emulator -avd AVD -netdelay none -netspeed full -no-boot-anim -no-window -noaudio -accel auto -verbose &
${ANDROID_HOME}/platform-tools/adb wait-for-device shell 'while [[ -z $(getprop sys.boot_completed | tr -d '\r') ]]; do sleep 1; done; input keyevent 82'
${ANDROID_HOME}/platform-tools/adb devices
- name: Test phoenix_channel_clients with cargo-tai
run: |
export RUSTFLAGS="--cfg tokio_unstable"
cargo-tai tests --target x86_64-linux-android \
--android-api-lvl ${ANDROID_API} \
--android-ndk ${ANDROID_NDK_HOME} \
--android-sdk ${ANDROID_HOME} \
--envs LD_LIBRARY_PATH=lib