Travis CI运行两个android模拟器



我有一个用例,其中两个设备可以在其余设备上进行通信(对等)。

我想在Travis CI上测试这个用例。Travis CI安卓指南指向一个示例项目:

language: android
jdk: oraclejdk7
env:
  matrix:
    - ANDROID_TARGET=android-19  ANDROID_ABI=armeabi-v7a
android:
  components:
    - build-tools-19.0.0
before_script:
  # Create and start emulator
  - 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
  - adb shell input keyevent 82 &
script: ./gradlew connectedAndroidTest

从这个例子中可以看出,我应该能够创建两个AVD。

问题:Travis CI环境是否支持创建和启动两个AVD?

更新

我发现了以前的实验:

构建599:测试磨损实验(6-7分钟)

Build 600:在没有引导动画的情况下同时测试两个模拟器(6-7分钟)

构建601:使用引导动画(10-15分钟)同时测试两个模拟器

以前的响应:基于构建605

一年前我尝试过这种可能性(android+wear),但我不记得结果了。这取决于机器(使用sudo: false和容器基础结构,更新的机器)和脚本(避免在创建一个模拟器时同时运行繁重的任务,如下载依赖项)。

我在谷歌上搜索了我的实验,发现了这个承诺:

https://travis-ci.org/ardock/iosched/jobs/44038271https://github.com/ardock/iosched/commit/88838ef1694b034f12b6ae4dc78615e8302689bd

将compileSdkVersion和targetSdkVersion更新为21。

更新wait_for_emulator.sh以支持多个模拟器同时添加ANDROID_SERIAL env变量以支持多个使用adb/gradle的模拟器。使用android-wear-20创建第二个AVD默认情况下作为目标。启动第二个android穿戴模拟器装置添加before_script逻辑以在使用时在模拟器之间切换adb/gradle命令。添加可选的${WEAR_PKGS:-}变量以支持具体的21岁以下的男性更新。添加新的构建矩阵作业,允许失败和使用安卓21。

如果定义了ANDROID_SERIAL,则会为特定设备运行命令。这个如果ANDROID_SERIAL未定义或为空。将引发异常如果找不到目标DSN。看见https://android-review.googlesource.com/#/c/108985/

目前,我们不需要第二个模拟器,但在将来结合ANDROID_SERIAL和项目名称,我们可以选择使用Gradle为特定项目执行特定任务。

我认为有限制是可能的。例如,您需要删除等待模拟器脚本中的adb -e标志,如下所示,并使用ANDROID_SERIAL变量:

before_install:
  - export ANDROID_SERIAL='emulator-5554'
  - echo y | android update sdk -u -t platform-tool,tool,extra-android-m2repository,extra-google-m2repository
  - echo y | android update sdk -a -u -t ${BUILD_TOOLS},${MOBI_PKGS:-},${WEAR_PKGS:-}
install:
  - echo n | android create avd -f -n "${MOBI_NAME:-mobi}" -t "${MOBI_TARGET:-android-21}" -b
      "${MOBI_ABI:-armeabi-v7a}" -g "${MOBI_TAG:-default}"
  - echo n | android create avd -f -n "${WEAR_NAME:-wear}" -t "${WEAR_TARGET:-android-20}" -b
      "${WEAR_ABI:-armeabi-v7a}" -g "${WEAR_TAG:-android-wear}"
  - emulator -avd "${MOBI_NAME:-mobi}" -no-skin -no-audio -no-window &
  - emulator -avd "${WEAR_NAME:-wear}" -no-skin -no-audio -no-window &
  - adb wait-for-device get-serialno
  - ./gradlew --version
  - ./gradlew clean
  - ./gradlew compileDebugSources compileDebugTestSources compileReleaseSources
before_script:
  - ./scripts/wait_for_emulator.sh
  - adb shell input keyevent 82 &
  - adb logcat *:W | tee logcat.log>/dev/null 2>&1 &
  - ANDROID_SERIAL='emulator-5556'
  - adb wait-for-device get-serialno
  - ./scripts/wait_for_emulator.sh
  - adb shell input keyevent 82 &
  - ANDROID_SERIAL=''
  - adb devices -l
script:
  - ./gradlew build connectedCheck

最新更新