对于那些已经发现这个话题与我一样,并正在考虑从终端运行Android,可能在CI。
最近我一直在CI上使用GitLab。我想出了一个没有gennymotion的更好的方法,仅仅由avdmanager创建的android avd。新的Android工具已经过优化,可以从终端运行,例如可以在Docker镜像中使用。
更多的信息在这tutorial并更新gitlab撰写脚本如下。
image: openjdk:8-jdk
variables: # such as ..
ANDROID_SDK_TOOLS_URL: "https://dl.google.com/android/repository/sdk-tools-linux-3859397.zip" # https://dl.google.com/android/repository/sdk-tools-linux-3859397.zip
ANDROID_SDK_VERSION: "26" # 26
ANDROID_BUILD_TOOLS: "26.0.2" # 26.0.1
before_script:
- apt-get --quiet update --yes
- apt-get --quiet install --yes wget tar unzip lib32stdc++6 lib32z1
- wget --quiet --output-document=android-tools.zip ${ANDROID_SDK_TOOLS_URL}
- unzip android-tools.zip -d android-sdk-linux
- echo y | android-sdk-linux/tools/bin/sdkmanager "platform-tools" --verbose # SDK Platform-Tools
- echo y | android-sdk-linux/tools/bin/sdkmanager "platforms;android-${ANDROID_SDK_VERSION}" --verbose # SDK Platform
- echo y | android-sdk-linux/tools/bin/sdkmanager "build-tools;${ANDROID_BUILD_TOOLS}" --verbose # SDK Build-Tools
- echo y | android-sdk-linux/tools/bin/sdkmanager "extras;android;m2repository" --verbose # Support Repository
- echo y | android-sdk-linux/tools/bin/sdkmanager "extras;google;m2repository" --verbose # Google Repository
- echo y | android-sdk-linux/tools/bin/sdkmanager "extras;google;google_play_services" --verbose # Google Play services
- export ANDROID_HOME=$PWD/android-sdk-linux
- export PATH=$PATH:$PWD/android-sdk-linux/platform-tools/
- chmod +x ./gradlew
stages:
- build
- test
build:
stage: build
script:
- ./gradlew assembleDebug
artifacts:
paths:
- app/build/outputs/
unitTests:
stage: test
script:
- ./gradlew test
functionalTests:
stage: test
script:
- 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
- echo y | android-sdk-linux/tools/bin/sdkmanager --verbose --update
- echo y | android-sdk-linux/tools/bin/sdkmanager --verbose "system-images;android-${ANDROID_SDK_VERSION};google_apis;x86"
- echo no | android-sdk-linux/tools/bin/avdmanager create avd -n test -k "system-images;android-${ANDROID_SDK_VERSION};google_apis;x86" # no custom HW profile
- android-sdk-linux/tools/emulator -avd test -no-window -no-audio & # run headless "test" AVD
- ./android-wait-for-emulator # if ran fast enough it will catch cange of state on Boot Animation ~ init.svc.bootanim
- adb shell input keyevent 82 # some dummy input
- ./gradlew cAT