diff --git a/.github/workflows/android-instrumented-test.yml b/.github/workflows/android-instrumented-test.yml new file mode 100644 index 00000000..da7ad19f --- /dev/null +++ b/.github/workflows/android-instrumented-test.yml @@ -0,0 +1,65 @@ +name: Android Instrumented Test + +on: + push: + + +jobs: + build: + + runs-on: ubuntu-latest + + strategy: + matrix: + compile-sdk: [30] + build-tools: [30.0.0] + sdk-tools: [4333796] + + steps: + - uses: actions/checkout@v2 + - name: setup ubuntu + run: | + sudo apt-get --quiet update --yes + sudo apt-get --quiet install --yes wget tar unzip lib32stdc++6 lib32z1 + - name: setup JDK 1.8 + uses: actions/setup-java@v1 + with: + java-version: 1.8 + - name: download Android SDK + working-directory: ./Android + run: | + wget --quiet --output-document=android-sdk.zip https://dl.google.com/android/repository/sdk-tools-linux-${{ matrix.sdk-tools }}.zip + unzip -d android-sdk-linux android-sdk.zip + sudo mkdir -p /root/.android + sudo touch /root/.android/repositories.cfg + echo y | android-sdk-linux/tools/bin/sdkmanager "platforms;android-${{ matrix.compile-sdk }}" >/dev/null + echo y | android-sdk-linux/tools/bin/sdkmanager "platform-tools" >/dev/null + echo y | android-sdk-linux/tools/bin/sdkmanager "build-tools;${{ matrix.build-tools }}" >/dev/null + export ANDROID_HOME=$PWD/android-sdk-linux + export PATH=$PATH:$PWD/android-sdk-linux/platform-tools/ + chmod +x ./gradlew + set +o pipefail + yes | android-sdk-linux/tools/bin/sdkmanager --licenses + set -o pipefail + - name: install emulator + working-directory: ./Android + run: | + echo y | android-sdk-linux/tools/bin/sdkmanager --install "system-images;android-${{ matrix.compile-sdk }};google_apis;x86" + - name: create emulator device + working-directory: ./Android + run: | + echo no | android-sdk-linux/tools/bin/avdmanager create avd -n test_android_emulator -k "system-images;android-${{ matrix.compile-sdk }};google_apis;x86" --force + - name: start emulator + working-directory: ./Android + run: | + android-sdk-linux/emulator/emulator -avd test_android_emulator -no-snapshot-save -no-audio -no-boot-anim & + android-sdk-linux/platform-tools/adb shell 'while [[ -z $(getprop sys.boot_completed) ]]; do echo "Sleeping for 1s";sleep 1; done;' + android-sdk-linux/platform-tools/adb shell input keyevent 82 & + - name: execute test and report coverage + working-directory: ./Android + run: | + ./gradlew createDebugCoverageReport + - uses: actions/upload-artifact@master + with: + name: outputs + path: Android/app/build/outputs/ \ No newline at end of file diff --git a/Android/android-wait-for-emulator.sh b/Android/android-wait-for-emulator.sh new file mode 100644 index 00000000..b260568f --- /dev/null +++ b/Android/android-wait-for-emulator.sh @@ -0,0 +1,26 @@ + +#!/bin/bash + +# Originally written by Ralf Kistner , but placed in the public domain + +set +e + +bootanim="" +failcounter=0 +timeout_in_sec=360 + +until [[ "$bootanim" =~ "stopped" ]]; do + bootanim=`android-sdk-linux/platform-tools/adb -e shell getprop init.svc.bootanim 2>&1 &` + if [[ "$bootanim" =~ "device not found" || "$bootanim" =~ "device offline" + || "$bootanim" =~ "running" ]]; then + let "failcounter += 1" + echo "Waiting for emulator to start" + if [[ $failcounter -gt timeout_in_sec ]]; then + echo "Timeout ($timeout_in_sec seconds) reached; failed to start emulator" + exit 1 + fi + fi + sleep 1 +done + +echo "Emulator is ready" \ No newline at end of file