如何使用Travis CI上的构建矩阵设置运行API 25的模拟器?

时间:2017-07-14 10:08:33

标签: java android continuous-integration 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 个答案:

答案 0 :(得分:9)

注意:模拟器版本26.1.4+版本可以引入或修复错误。如果需要可重现的ci构建,最好的选择是通过android组件下载所需的sdk-tools版本。

注意:模拟器版本26.1.3为here,包括有趣的修复程序。我现在正忙着修改我的答案:

enter image description here

使用模拟器26.1.2 here的相关问题。重新启动最后一次构建like me以使用26.1.3并祈祷,绿色

  

我正在尝试设置Travis CI以便它运行检测   在运行API 25的模拟器上进行测试.Travis运行测试   在API 4/10/19上完成,但无法启动API的模拟器   25 ...

     

如何解决这个问题,以便API 25模拟器启动并运行   测试

更新:我确认Android Studio中也缺少针对API 23,25和26的ARM ABI,因此:

  • 这不是Travis-ci问题。我在本地复制了它,如下图所示。

  • 您可以将ARM ABI用于API-24。我分叉了你的项目,它在构建#6(下一个图像)中工作。

  • 您可以将API API图片用于API-25,我将在下面使用新的sdkmanager进行说明:1

  • 如果您知道img名称,则可以使用旧版工具将API API图片用于API-25:123

  • 我们需要向Google或其他人询问为何缺少这些API的ARM ABI。

更新: A related bug已经向Google报告并讨论了here,请注明:

  

出于某种原因,它被标记为仅在Windows上可用。我   不确定这是ADRT本身或配置的问题   对于这个包,但从快速看看似乎它可能是一个   adrt本身的问题。

enter image description here

enter image description here

我不确定api-25问题是否相关,但我希望它可以结合多种解决方案:

  • 使用google_apis系统映像来简化构建矩阵并避免错过ABI。
  • 使用最近的Sdk工具所需的新sdkmanageravdmanager
  • 使用包含这些工具的新Trusty图像来简化Travis-ci配置,或者使用dist: precise解释here

使用包含Api-25仿真器的构建矩阵,查看下面的链接以获取工作样本。

我通过Android Studio在macbook上更新了api 23系统映像一次,并且我的计算机不支持关于新版本的消息,因此我使用了google_apis。

我为Ashish Pathak评论的issue提供了一个可能的解决方案(我也是ardock)here

我需要更新我的回复以支持新SDK工具附带的新Travis-ci图像。

新预装的Sdk Tools将简化解决方案并减小YAML文件的大小。

由Carmen Andoh和Dominic Jodoin于2017年6月19日宣布in this blog post

  

所有Ubuntu Trusty 14.04图像都有更新

     

新一代Trusty图像已经可用   生产,可以通过在.travis.yml中添加group:edge来使用   文件:

sudo: required
dist: trusty

group: edge  # Add this

正如here所述:

  

作为更多信息,这个新的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来使用之前的图片。

以下行是图片更新前my answer on a related question:的一部分:

Full working sample using constraint-layout codelab repository for Android API level 22 to 25:

使用sdkmanageravdmanager的另外两个样本:

<强>参考

Auto-download missing packages with Gradle

相关的官方文档

new Emulator

中解释了Start the Emulator from the Command Line选项

avdmanager explained here替换android avd以来SDK tools version 25.3.0

sdkmanager explained here也已增强,可以从命令行查看和接受所有许可