无法在gitlab-ci中启动Android模拟器

问题描述 投票:0回答:2

我正在尝试在gitlab-ci中设置检测测试。但是,作业停留在以下消息的位置:

PANIC:缺少'x86'CPU的模拟器引擎程序。

这是我正在使用的ci配置。管道构建成功运行到测试阶段(debugTests),但最终在instrumentation_tests处失败。

image: openjdk:8-jdk

variables:
  ANDROID_COMPILE_SDK: "28"
  ANDROID_BUILD_TOOLS: "28.0.3"
  ANDROID_SDK_TOOLS:   "4333796"

before_script:
- apt-get --quiet update --yes
- apt-get --quiet install --yes wget tar unzip lib32stdc++6 lib32z1
- wget --quiet --output-document=android-sdk.zip https://dl.google.com/android/repository/sdk-tools-linux-${ANDROID_SDK_TOOLS}.zip
- unzip -d android-sdk-linux android-sdk.zip
- echo y | android-sdk-linux/tools/bin/sdkmanager "platforms;android-${ANDROID_COMPILE_SDK}" >/dev/null
- echo y | android-sdk-linux/tools/bin/sdkmanager "platform-tools" >/dev/null
- echo y | android-sdk-linux/tools/bin/sdkmanager "tools" >/dev/null
- echo y | android-sdk-linux/tools/bin/sdkmanager "build-tools;${ANDROID_BUILD_TOOLS}" >/dev/null
- export ANDROID_HOME=$PWD/android-sdk-linux
- export ANDROID_AVD_HOME=$HOME/.android/avd
- export ANDROID_SDK_HOME=$PWD/android-sdk-linux
- export PATH=$PATH:$PWD/android-sdk-linux/platform-tools/
- export PATH=$PATH:$PWD/android-sdk-linux/tools/
- chmod +x ./gradlew
# temporarily disable checking for EPIPE error and use yes to accept all licenses
- set +o pipefail
- yes | android-sdk-linux/tools/bin/sdkmanager --licenses
- set -o pipefail

stages:
- build
- test
- quality_assurance
- deploy

build_job:
  stage: build
  script:
  - ./gradlew clean assembleRelease
  artifacts:
    paths:
    - app/build/outputs/

lintDebug:
  stage: build
  script:
  - ./gradlew -Pci --console=plain :app:lintDebug -PbuildDir=lint

assembleDebug:
  stage: build
  script:
  - ./gradlew assembleDebug
  artifacts:
    paths:
    - app/build/outputs/

debugTests:
  stage: test
  script:
  - ./gradlew -Pci --console=plain :app:testDebug

instrumentation_tests:
  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_HOME}/tools/bin/sdkmanager "system-images;android-${ANDROID_COMPILE_SDK};google_apis_playstore;x86"
  - echo y | ${ANDROID_HOME}/tools/bin/sdkmanager --update
  - echo no | ${ANDROID_HOME}/tools/bin/avdmanager create avd -k "system-images;android-${ANDROID_COMPILE_SDK};google_apis_playstore;x86" -n test
  - emulator -list-avds
  - emulator -avd test -no-window -no-audio &
#  - emulator -avd testAVD -no-audio -no-window &
#  - adb wait-for-device
  - ./android-wait-for-emulator
  - adb devices
  - adb shell settings put global window_animation_scale 0 &
  - adb shell settings put global transition_animation_scale 0 &
  - adb shell settings put global animator_duration_scale 0 &
  - adb shell input keyevent 82 &
  - ./gradlew connectedAndroidTest
  - ./ci/stop-emulators.sh
  artifacts:
    name: "reports_${CI_PROJECT_NAME}_${CI_BUILD_REF_NAME}"
    when: on_failure
    expire_in: 4 days
    paths:
    - app/build/reports/androidTests/connected/

static_analysis:
  stage: quality_assurance
  script:
  - ./gradlew lint
  - ./gradlew checkstyle
  - ./gradlew pmd
  - ./gradlew findbugs
  artifacts:
    name: "reports_${CI_PROJECT_NAME}_${CI_BUILD_REF_NAME}"
    when: on_failure
    expire_in: 4 days
    paths:
    - app/build/reports/

deploy_internal:
  stage: deploy
  script:
  - bundle exec fastlane android deploy_lane
  when: manual

以下是作业失败并出现超时错误之前的几行日志。

$ echo no | ${ANDROID_HOME}/tools/bin/avdmanager create avd -k "system-

images;android-${ANDROID_COMPILE_SDK};google_apis_playstore;x86" -n test
Loading local repository...                                                     
[=========                              ] 25% Loading local repository...       
[=========                              ] 25% Fetch remote repository...        
[=========                              ] 25% Fetch remote repository...        
[=========                              ] 25% Fetch remote repository...        
[=======================================] 100% Fetch remote repository...       
Auto-selecting single ABI x86
Do you wish to create a custom hardware profile? [no] $ emulator -list-avds
test
$ emulator -avd test -no-window -no-audio &
$ ./android-wait-for-emulator
PANIC: Missing emulator engine program for 'x86' CPU.
Waiting for emulator to start
Pulling docker image gitlab/gitlab-runner-helper:x86_64-4745a6f3 ...
ERROR: Job failed: execution took longer than 1h0m0s seconds
android android-emulator gitlab-ci android-instrumentation
2个回答
1
投票

您正在使用工具文件夹中错误的“遗留”模拟器二进制文件。而是从模拟器sdk文件夹安装和使用emulator

sdkmanager "emulator"
$ANDROID_HOME/emulator/emulator -avd test ...

0
投票

请将android SDK放在您的自定义docker镜像上,它可能很有用。

© www.soinside.com 2019 - 2024. All rights reserved.