Эмулятор: ОШИБКА: обнаружена зависшая нить 'основной цикл QEMU1'.Нет ответа в течение 105001 мс - PullRequest
1 голос
/ 11 апреля 2019

Я использую Gitlab CI для непрерывной интеграции.После каждого коммита у меня в конвейере 3 задания: отладка, юнит-тесты и инструментарий-тесты.Но сейчас инструментальные тесты провалились из-за тайм-аута.Я добавил свой файл gitlab-ci.yml ниже

Я уже пробовал понизить версию Android SDK, но не повезло вообще.Возможно, есть некоторые команды для yml-файла, которые могли бы решить проблему.

Также, возможно, кто-то знает, как сделать так, чтобы все тесты не провалились при EMULATOR_VERSION> 22. 24 или выше никогда не работали вообще.

image: openjdk:8-jdk

variables:
  ANDROID_COMPILE_SDK: "28"
  ANDROID_BUILD_TOOLS: "28.0.3"
  ANDROID_SDK_TOOLS: "4333796" # from https://developer.android.com/studio/#command-tools
  EMULATOR_VERSION: "22"

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 "build-tools;${ANDROID_BUILD_TOOLS}" >/dev/null
  - export ANDROID_HOME=$PWD/android-sdk-linux
  - export PATH=$PATH:$PWD/android-sdk-linux/platform-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

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

unitTests:
  stage: test
  script:
    - ./gradlew test

instrumentedTests:
  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
    - 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

1 Ответ

0 голосов
/ 22 мая 2019

Существуют следующие факторы:

  • похоже, что google прекратил поддержку движка qemu, и пока поддерживается только ранчо
  • SDK был частично обновлен, но в процессе обновления есть ошибки

Хотя qemu больше не поддерживается, эта конкретная ошибка с зависанием, похоже, никогда не будет исправлена.

Для переключения в среду ранчу:

  • избегайте использования платформы *default* для avd, предпочитайте *google-api* (в то время как ядро ​​ranchu отсутствует на платформах по умолчанию)
  • обновить SDK с --channel = 4

На всякий случай мне это помогло.

...