Android → Docker and UI Tests

Чтобы запустить ui тесты в контейнере:

1. Необходимо добавить в dockerfile команды загрузки необходимых нам system-images и сам эмулятор:

RUN $ANDROID_HOME/tools/bin/sdkmanager emulator
RUN $ANDROID_HOME/tools/bin/sdkmanager "system-images;android-29;google_apis;x86" # То что в кавычках меняем на своё

2. Необхоимо создать эмулятор со скаченной system-image:
RUN $ANDROID_HOME/tools/bin/avdmanager create avd -n mynexus -k "system-images;android-29;google_apis;x86" --tag "google_apis" --device "Nexus 5"

3. Нужно запустить сам эмулятор, запускать его нужно в .gitlab-ci.yml:

$ANDROID_HOME/emulator/emulator -avd mynexus -no-window &
где & обязательно иначе запустим эмулятор не параллельно
4. Запускаем прохождения наших UI тестов:

./gradlew cAT
Все радуемся тестам)))

Известные ошибки:
Если при запуска эмулятора получаем:
emulator: ERROR: x86 emulation currently requires hardware acceleration!
CPU acceleration status: /dev/kvm is not found: VT disabled in BIOS or KVM kernel module not loaded
More info on configuring VM acceleration on Linux:
https://developer.android.com/studio/run/emulator-acceleration#vm-linux
General information on acceleration: https://developer.android.com/studio/run/emulator-acceleration.

Значит сервер сборки запускает докер контейнер без флага--privileged или у сервера который собирает отключено аппаратное ускорение.

Здесь два варианта решения:
1. Попросить админов добавить флаг --privileged в команду docker run ... , чтобы стало так: docker run --privileged ... и включить в биосе Intel Virtualization Technology or AMD Virtualization
2. Второй вариант использовать нам эмулятор на arm64 архитектуре, но этот способ очень долгий и не всегда работает(
Добавил: javavirys ( 2020-09-03 14:15:47 )
Теги:
Рейтинг: + 0 -
Просмотров: 342

Специальные предложения