Skip to content

Instantly share code, notes, and snippets.

Embed
What would you like to do?
Config for gitlab ci android with unit tests and instrumented tests
image: openjdk:8-jdk
variables:
ANDROID_COMPILE_SDK: "29"
ANDROID_BUILD_TOOLS: "29.0.3"
SDK_TOOLS: "6200805" # from https://developer.android.com/studio/#command-tools
EMULATOR_VERSION: "24"
before_script:
- wget --quiet --output-document=android-sdk.zip https://dl.google.com/android/repository/commandlinetools-linux-${SDK_TOOLS}_latest.zip
- unzip -q android-sdk.zip -d android-sdk-linux
- rm android-sdk.zip
- export ANDROID_HOME=$PWD/android-sdk-linux
- export PATH=$PATH:$PWD/android-sdk-linux/platform-tools/
- mkdir android-sdk-linux/licenses
- printf "8933bad161af4178b1185d1a37fbf41ea5269c55\nd56f5187479451eabf01fb78af6dfcb131a6481e" > android-sdk-linux/licenses/android-sdk-license
- printf "84831b9409646a918e30573bab4c9c91346d8abd" > android-sdk-linux/licenses/android-sdk-preview-license
- android-sdk-linux/tools/bin/sdkmanager --sdk_root=${ANDROID_HOME} --update > update.log
- echo y | android-sdk-linux/tools/bin/sdkmanager --sdk_root=${ANDROID_HOME} "platforms;android-${ANDROID_COMPILE_SDK}" "build-tools;${ANDROID_BUILD_TOOLS}" "extras;google;m2repository" "extras;android;m2repository" > installPlatform.log
- chmod +x ./gradlew
stages:
- test
unitTests:
stage: test
script:
- ./gradlew test
instrumentedTests:
stage: test
script:
- apt-get --quiet update --yes
- apt-get --quiet install --yes libx11-dev libpulse0 libgl1 libnss3 libxcomposite-dev libxcursor1 libasound2
- wget --quiet --output-document=android-wait-for-emulator https://raw.githubusercontent.com/travis-ci/travis-cookbooks/0f497eb71291b52a703143c5cd63a217c8766dc9/community-cookbooks/android-sdk/files/default/android-wait-for-emulator
- chmod +x android-wait-for-emulator
- android-sdk-linux/tools/bin/sdkmanager --update > update.log
- android-sdk-linux/tools/bin/sdkmanager "platform-tools" "emulator" "system-images;android-${EMULATOR_VERSION};default;armeabi-v7a" > installEmulator.log
- echo no | android-sdk-linux/tools/bin/avdmanager create avd -n test -k "system-images;android-${EMULATOR_VERSION};default;armeabi-v7a"
- android-sdk-linux/emulator/emulator -avd test -no-window -no-audio &
- ./android-wait-for-emulator
- adb shell input keyevent 82
- ./gradlew connectedCheck
@HerHde

This comment has been minimized.

Copy link

@HerHde HerHde commented Dec 15, 2018

Thank you very much for this CI conf!
I've tested it successfully with `EMULATOR_VERSION: "24", if you wanna take a look.

@kenton1818

This comment has been minimized.

Copy link

@kenton1818 kenton1818 commented Apr 7, 2019

thank you so much , help me a lot !!

@kevincianfarini

This comment has been minimized.

Copy link

@kevincianfarini kevincianfarini commented Jun 19, 2019

I'm seeing several places where running instrumentation tests in gitlab ci has emulator version 24. Is there any reason for this? The latest version of the emulator is on 29

@illuzor

This comment has been minimized.

Copy link
Owner Author

@illuzor illuzor commented Jun 19, 2019

I'm seeing several places where running instrumentation tests in gitlab ci has emulator version 24. Is there any reason for this? The latest version of the emulator is on 29

Newer version may not start or may have problems with installing the application. But maybe something was changed on the gitlab ci.
You can try any version. Maybe it will work, maybe not.

@DmitriyYakovlev

This comment has been minimized.

Copy link

@DmitriyYakovlev DmitriyYakovlev commented Nov 1, 2019

Note:
this can help
#
- adb shell input tap 233 293

# Send keystroke Arrow Right
- sleep 3; adb shell input keyevent 22
# Send keystroke Arrow Right again
- sleep 3; adb shell input keyevent 22
# Send keystroke Enter to press a button on the dialog
- sleep 3; adb shell input keyevent 66

when happens something like this:
java.lang.RuntimeException: Waited for the root of the view hierarchy to have window focus and not request layout for 10 seconds. If you specified a non default root matcher, it may be picking a root that never takes focus

@MTersigni

This comment has been minimized.

Copy link

@MTersigni MTersigni commented Dec 10, 2019

Just tried and it is actually not working, it is blocked on this step:

$ android-sdk-linux/emulator/emulator -avd test -no-window -no-audio &
$ ./android-wait-for-emulator

@illuzor

This comment has been minimized.

Copy link
Owner Author

@illuzor illuzor commented Dec 10, 2019

@MTersigni I know about this problem. It`s caused by latest android emulator update. I am looking for a solution.

@illuzor

This comment has been minimized.

Copy link
Owner Author

@illuzor illuzor commented Feb 8, 2020

Gitlab ci is really strange. Instrumented tests may work good or not work at all depends on The Moon phase.
So my advice - use Robolectric. It s simple and much more faster than tests on an emulator or device.

@mddrill

This comment has been minimized.

Copy link

@mddrill mddrill commented Jun 25, 2020

This does not seem to work. It fails at android-sdk-linux/tools/bin/sdkmanager --update > update.log with

Warning: Could not create settings
 java.lang.IllegalArgumentException
 	at com.android.sdklib.tool.sdkmanager.SdkManagerCliSettings.<init>(SdkManagerCliSettings.java:428)
 	at com.android.sdklib.tool.sdkmanager.SdkManagerCliSettings.createSettings(SdkManagerCliSettings.java:152)
 	at com.android.sdklib.tool.sdkmanager.SdkManagerCliSettings.createSettings(SdkManagerCliSettings.java:134)
 	at com.android.sdklib.tool.sdkmanager.SdkManagerCli.main(SdkManagerCli.java:57)
 	at com.android.sdklib.tool.sdkmanager.SdkManagerCli.main(SdkManagerCli.java:48)
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
You can’t perform that action at this time.