Как настроить эмулятор под управлением API 25 с использованием матрицы построения на Travis CI?

Я пытаюсь настроить Travis CI так, чтобы он запускал контрольно-измерительные тесты на эмуляторе, работающем на API 25. Travis запускает тесты для завершения по API 4/10/19, но не запускает эмулятор для API 25, со следующим сообщение:

$ echo no | android create avd --force -n test -t $ANDROID_TARGET --abi $ANDROID_ABI
Valid ABIs: no ABIs.
Error: Invalid --abi armeabi-v7a for the selected target.

Вывод android list targets показывает, что эмулятор API 19 имеет Tag/ABI, тогда как эмулятор API 25 не имеет значения:

id: 7 or "android-19"
     Name: Android 4.4.2
     Type: Platform
     API level: 19
     Revision: 4
     Skins: HVGA, QVGA, WQVGA400, WQVGA432, WSVGA, WVGA800 (default), WVGA854, WXGA720, WXGA800, WXGA800-7in
 Tag/ABIs : default/armeabi-v7a

id: 11 or "android-25"
     Name: Android 7.1.1
     Type: Platform
     API level: 25
     Revision: 3
     Skins: HVGA, QVGA, WQVGA400, WQVGA432, WSVGA, WVGA800 (default), WVGA854, WXGA720, WXGA800, WXGA800-7in
 Tag/ABIs : no ABIs.

Как я могу исправить это, чтобы эмулятор API 25 запускал и запускал тесты?

Полный файл .travis.yml выглядит следующим образом:

language: android

android:
  components:
    - tools
    - platform-tools
    - tools # appears twice as per Travis docs
    - build-tools-23.0.1
    - build-tools-25.0.2
    - android-4
    - android-10
    - android-19
    - android-23
    - android-25
    - extra-android-m2repository
    - sys-img-armeabi-v7a-android-25

env:
  matrix:
    - ANDROID_TARGET=android-4 ANDROID_ABI=armeabi
    - ANDROID_TARGET=android-10 ANDROID_ABI=armeabi
    - ANDROID_TARGET=android-19 ANDROID_ABI=armeabi-v7a
    - ANDROID_TARGET=android-25 ANDROID_ABI=armeabi-v7a

before_script:
  # Create and start emulator
  - android list targets
  - jdk_switcher use oraclejdk8
  - echo no | android create avd --force -n test -t $ANDROID_TARGET --abi $ANDROID_ABI
  - emulator -avd test -no-skin -no-audio -no-window &
  - adb wait-for-device
  - while [[ `adb shell pm path android` == 'Error'* ]]; do sleep 2; done
  - adb shell input keyevent 82 &

script: ./gradlew --info connectedAndroidTest

sudo: false

Ответ 1

Примечание. версия эмулятора версии 26.1.4+ может вводить или исправлять ошибки. Если требуется воспроизводимая сборка ci, лучшим вариантом является загрузка нужной версии sdk-tools без компонентов Android.

Примечание. версия эмулятора версии 26.1.3 здесь, включая интересные исправления. Я занят, чтобы пересмотреть свой ответ сейчас:

введите описание изображения здесь

Связанная проблема с использованием эмулятора 26.1.2 здесь. Перезапустите последнюю сборку как я, чтобы использовать 26.1.3 и молиться, зеленый

Я пытаюсь настроить Travis CI, чтобы он работал с инструментами тесты на эмуляторе, работающем с API 25. Travis запускает тесты для завершение по API 4/10/19, но не запускается эмулятор для API 25...

Как я могу исправить это, чтобы эмулятор API 25 запускал и запускал тесты?

Обновление: Я подтвердил, что ARM ABI для API 23, 25 и 26 также отсутствуют в Android Studio, поэтому:

  • Это не проблема Трэвиса-ци. Я воспроизвел его локально, как показано на следующем изображении.

  • Вы можете использовать ARM ABI для API-24. Я разветкил ваш проект, и он работал в сборке №6 (следующее изображение).

  • Вы можете использовать образ API Google API для API-25, как я объясняю ниже, используя новый sdkmanager: 1

  • Вы можете использовать образ API Google для API-25 с использованием устаревших инструментов, если знаете имя img: 1, 2, 3

  • Нам нужно попросить у Google или кого-то еще, почему ARM ABI для этих API отсутствуют.

Обновление: Связанная ошибка уже сообщалась в Google и обсуждалась здесь, пожалуйста, запустите его:

По какой-то причине он помечается как доступный только для окон. я не уверен, что это проблема с самой ADRT или конфигурацией для этого пакета, но из быстрого взгляда кажется, что он, вероятно, проблема с самим адртом.

введите описание изображения здесь

введите описание изображения здесь


Я не уверен, связана ли проблема с api-25, но я ожидаю, что она будет работать с несколькими решениями:

  • Используйте системные образы с помощью google_apis, чтобы упростить матрицу сборки и избежать отсутствия ABI.
  • Используйте новые sdkmanager и avdmanager, необходимые для последних инструментов Sdk.
  • Используйте новые надежные изображения, включая эти инструменты, чтобы упростить конфигурацию Travis-ci или использовать dist: precise, как описано здесь.

См. ссылки ниже на рабочие образцы с использованием матрицы построения, содержащей эмулятор Api-25.


Я обновил изображение системы api 23 один раз на macbook через Android Studio и появилось сообщение о новой версии, которое не поддерживалось моим компьютером, поэтому я использую google_apis.

Я предлагаю возможное решение issue, прокомментированное Ashish Pathak (я тоже ardock) .

Мне нужно обновить свой ответ для поддержки новых изображений Travis-ci, которые поставляются с новыми инструментами SDK.

Новые предварительно установленные инструменты Sdk упростят решение и уменьшат размер файла YAML.


Как было объявлено в этом сообщении в блоге Кармен Андо и Доминик Джодоин 19 июня 2017 года:

Обновления поступают ко всем изображениям Ubuntu Trusty 14.04

Это новое поколение изображений Trusty уже доступно в и можно использовать, добавив группу: край в вашем .travis.yml Файл:

sudo: required
dist: trusty

group: edge  # Add this

И как объяснено здесь:

Как немного больше информации, это новое изображение для Android поставляется с:

Android SDK 25.2.3 build-tools-25.0.2

Новый инструмент sdkmanager - инструмент командной строки, который позволяет вам просматривать, устанавливать, обновлять и удалять пакеты для Android SDK. Заменяет предыдущий инструмент для Android, см. https://developer.android.com/studio/tools/help/android.html

Кроме того, новый образ Android должен быть ретро-совместимым. См. Полный список компонентов Android SDK, которые могут быть указаны в .travis.yml, включая build-tools-26.0.0-preview.

Но они не используют новый avdmanager, я попытаюсь исправить это в эти выходные.

В качестве альтернативы вы можете использовать предыдущие изображения, добавив dist: precise.


Нижеприведенные строки являются частью моего ответа по соответствующему вопросу: перед обновлением изображений:

Полный рабочий пример с использованием репозитория codelab с ограничением-компоновкой для уровня API от 22 до 25 для Android:

Еще два образца с использованием sdkmanager и avdmanager:

Ссылки

Официальная документация, связанная с Автоматическая загрузка отсутствующих пакетов с помощью Gradle

Параметры нового эмулятора описаны в Запустите эмулятор с Командная строка

avdmanager объясняется здесь заменяет android avd так как SDK инструменты версии 25.3.0

sdkmanager описанный здесь, также расширен для просмотра и принятия всех лицензий из командной строки