5757 # EMULATOR_ARCH_TRIPLE: 'aarch64'
5858
5959 runs-on : ${{ matrix.os }}
60- env :
61- ANDROID_API : ${{ matrix.ANDROID_API }}
62- ANDROID_EMULATOR_ARCH : ${{ matrix.EMULATOR_ARCH }}
63- ANDROID_EMULATOR_ARCH_TRIPLE : ${{ matrix.EMULATOR_ARCH_TRIPLE }}
64- ANDROID_TARGET : ' default'
65- # ANDROID_BUILD_TOOLS_VERSION: 36.0.0
66- ANDROID_BUILD_TOOLS_VERSION : ' latest'
67- BUILD_TOOLS_VERSION : " 35.0.0"
68- ANDROID_PROFILE : " Nexus 10"
69- ANDROID_CHANNEL : " 3"
70- ANDROID_NDK_VERSION : " ${{ matrix.NDK_VERSION }}"
7160 steps :
7261 - name : Free Disk Space
7362 if : runner.os == 'Linux'
@@ -79,14 +68,32 @@ jobs:
7968
8069 - name : Setup Android Environment
8170 run : |
82- echo "$ANDROID_HOME/cmdline-tools/latest/bin:$ANDROID_HOME/emulator:$ANDROID_HOME/tools:$ANDROID_HOME/platform-tools:$ANDROID_HOME/build-tools/${{ env.ANDROID_BUILD_TOOLS_VERSION }}" >> $GITHUB_PATH
83- # needed for Linux or else the emulator will be created in
84- # ~/.android/avd but it will be sought in ~/.config/.android/avd
71+ echo "$ANDROID_HOME/cmdline-tools/latest/bin" >> $GITHUB_PATH
72+ echo "$ANDROID_HOME/emulator" >> $GITHUB_PATH
73+ echo "$ANDROID_HOME/tools" >> $GITHUB_PATH
74+ echo "$ANDROID_HOME/platform-tools" >> $GITHUB_PATH
75+ echo "$ANDROID_HOME/build-tools/latest" >> $GITHUB_PATH
76+
77+ echo "ANDROID_API=${{ matrix.ANDROID_API }}" >> $GITHUB_ENV
78+ echo "ANDROID_EMULATOR_ARCH=${{ matrix.EMULATOR_ARCH }}" >> $GITHUB_ENV
79+ echo "ANDROID_EMULATOR_ARCH_TRIPLE=${{ matrix.EMULATOR_ARCH_TRIPLE }}" >> $GITHUB_ENV
80+ echo "ANDROID_TARGET=default" >> $GITHUB_ENV
81+ echo "ANDROID_PROFILE="Nexus 10"" >> $GITHUB_ENV
82+ echo "ANDROID_CHANNEL=3" >> $GITHUB_ENV
83+ echo "ANDROID_NDK_VERSION=${{ matrix.NDK_VERSION }}" >> $GITHUB_ENV
84+
8585 if [[ "${RUNNER_OS}" == "Linux" ]]; then
86+ # needed for Linux or else the emulator will be created in
87+ # ~/.android/avd but it will be sought in ~/.config/.android/avd
8688 echo "ANDROID_AVD_HOME=${XDG_CONFIG_HOME:-$HOME}/.android/avd" >> $GITHUB_ENV
89+
90+ # enable KVM on Linux for emulator performance
91+ echo 'KERNEL=="kvm", GROUP="kvm", MODE="0666", OPTIONS+="static_node=kvm"' | sudo tee /etc/udev/rules.d/99-kvm4all.rules
92+ sudo udevadm control --reload-rules
93+ sudo udevadm trigger --name-match=kvm
8794 fi
8895
89- - name : Android Emulator - Create
96+ - name : Create and Launch Android Emulator
9097 run : |
9198 sdkmanager --list_installed
9299 yes | sdkmanager --licenses > /dev/null
@@ -95,17 +102,9 @@ jobs:
95102 sdkmanager --install "${EMULATOR_SPEC}" "emulator"
96103 avdmanager create avd -n "${EMULATOR_NAME}" -k "${EMULATOR_SPEC}" --device "${ANDROID_PROFILE}"
97104 emulator -list-avds
105+ # launch the emulator in the background; we will cat the log at the end
98106 nohup emulator -memory 4096 -avd "${EMULATOR_NAME}" -wipe-data -no-window -no-snapshot -noaudio -no-boot-anim 2>&1 > emulator.log &
99107
100- # - name: Android - Find AVDs
101- # run: find ~/ -type d -name '*.avd'
102-
103- # - name: Android - List AVDs
104- # run: emulator -list-avds
105-
106- # - name: Android - Boot
107- # run: nohup emulator -memory 4096 -avd "${ANDROID_EMULATOR_NAME}" -wipe-data -no-window -no-snapshot -noaudio -no-boot-anim 2>&1 > emulator.log &
108-
109108 - name : Install Prerequisites
110109 run : |
111110 if [[ "${RUNNER_OS}" == "Linux" ]]; then
@@ -186,22 +185,12 @@ jobs:
186185 swiftly run swift build --swift-sdk "${ANDROID_EMULATOR_ARCH_TRIPLE}-unknown-linux-android${ANDROID_API}" --static-swift-stdlib
187186 file .build/debug/hello
188187
189- - name : Enable KVM
190- if : runner.os == 'Linux'
191- run : |
192- if [[ "${RUNNER_ARCH}" == "X64" ]]; then
193- echo 'KERNEL=="kvm", GROUP="kvm", MODE="0666", OPTIONS+="static_node=kvm"' | sudo tee /etc/udev/rules.d/99-kvm4all.rules
194- sudo udevadm control --reload-rules
195- sudo udevadm trigger --name-match=kvm
196- fi
197-
198- - name : ADB Wait For Device
188+ - name : Wait for Android Emulator
199189 run : adb wait-for-any-device
200190 timeout-minutes : 5
201191
202192 - name : Check Android Emulator
203- run : |
204- adb shell 'echo Hello Android!'
193+ run : adb shell 'echo Hello Android!'
205194
206195 - name : Run Swift Executable on Android Emulator
207196 run : |
0 commit comments