有没有办法在Travis CI构建中启动Android模拟器?

Vik*_*lyi 5 python android unit-testing adb travis-ci

我有adb的python包装器库,我有单元测试,它依赖于模拟器或真实设备(因为它们执行adb命令).

我还想使用Travis CI作为构建环境,同时为每个构建执行这些单元测试.

有没有办法在Travis CI中安装android模拟器,以便单元测试可以执行adb命令?

提前致谢!

Bru*_*ier 7

根据Travis CI文档,您可以使用以下脚本启动模拟器.travis.yml:

# Emulator Management: Create, Start and Wait
before_script:
  - echo no | android create avd --force -n test -t android-19 --abi armeabi-v7a
  - emulator -avd test -no-skin -no-audio -no-window &
  - android-wait-for-emulator
  - adb shell input keyevent 82 &
Run Code Online (Sandbox Code Playgroud)

只需指定所需的系统映像即可components.


Han*_*ner 5

Bruno Parmentier 的回答包括 Travis-CI 当前推荐的内容,但我遇到了 VM 内存不足的问题。因此,我没有在构建运行时运行模拟器,而是更改了配置以运​​行构建,然后启动模拟器,然后运行测试。

sudo: false

language: android

env:
  global:
    # switch glibc to a memory conserving mode
    - MALLOC_ARENA_MAX=2
    # wait up to 10 minutes for adb to connect to emulator
    - ADB_INSTALL_TIMEOUT=10

android:
  components:
    - platform-tools
    - extra-android-m2repository
    - build-tools-22.0.1
    - android-22
    - sys-img-armeabi-v7a-android-22

script:
  - ./gradlew assemble lint

after_script:
  # Emulator Management: Create, Start and Wait
  - echo no | android create avd --force -n test -t android-22 --abi armeabi-v7a
  - emulator -avd test -no-skin -no-audio -no-window &
  - android-wait-for-emulator
  - adb shell input keyevent 82 &
  # now run the tests
  - ./gradlew connectedCheck
Run Code Online (Sandbox Code Playgroud)

  • 实际上,我在让模拟器在 travis-ci 上可靠地启动和运行时遇到了很多问题。为了以有用的方式实际运行模拟器,我必须这样做。如果基本版本适合您的工作,那么您很幸运:) (2认同)