我试图设置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模拟器有一个标记/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发布于 2017-07-18 21:17:24
注意:仿真器版本26.1.4+版本可以引入或修复bug。如果需要可重复的ci构建,最好的选择是通过android组件下载所需的sdk-tools版本no。
注意:模拟器版本26.1.3是这里,包括有趣的修复。我现在正忙着修改我的答案:

相关问题使用模拟器26.1.2 这里。重新启动最后一次构建像我一样,使用26.1.3并祈祷,绿色
我试图设置Travis CI,以便它在运行API 25的仿真器上运行测试。Travis在API 4/10/19上运行测试,但未能启动API 25的模拟器. 如何解决这个问题,以便API 25模拟器启动并运行测试?
更新:I确认在Android中也缺少适用于API 23、25和26的ARM ABI,因此:
sdkmanager:1解释的那样。由于某种原因,它被标记为只能在窗口上使用。我不确定这是ADRT本身的问题,还是这个包的配置问题,但从快速的角度来看,它可能是adrt本身的一个问题。


我不确定api-25问题是否相关,但我希望它能够结合几种解决方案:
google_apis的系统映像来简化构建矩阵,避免缺少ABI。sdkmanager和avdmanager。dist: precise作为解释的这里。请参阅下面的链接到使用包含Api-25仿真器的构建矩阵的工作示例。
有一次,我通过Android在macbook上更新了API23System映像,我的计算机不支持新版本,所以我使用了google_apis one。
我为问题提供了一个可能的解决方案,由Ashish (我也是这里 )评论。
我需要更新我的反应,以支持新的Travis-ci图像,与新的SDK工具。
新的预装Sdk工具将简化解决方案并减少YAML文件的大小。
正如Carmen Andoh和Dominic Jodoin于2017年6月19日宣布的在这篇博客文章中:
所有Ubuntu可信任的14.04图像都有更新 这个新一代的可靠映像已经在生产中可用,可以通过在.travis.yml文件中添加group: edge来使用:
sudo: required
dist: trusty
group: edge # Add this正如所解释的,这里
作为更多的信息,这个新的Android映像附带: Android 25.2.3构建工具-25.0.2 新的sdkmanager工具--一个命令行工具,允许您查看、安装、更新和卸载Android的软件包。替换以前的android工具,请参阅https://developer.android.com/studio/tools/help/android.html。 此外,新的安卓形象应该是复古兼容的。请参阅可以在.travis.yml文件中指定的Android组件的完整列表,包括build 26.0.0-预览。
但是他们没有使用新的avdmanager,我将在这个周末尝试修复它。
或者,您可以通过添加dist: precise来使用前面的图像。
在图像更新之前,下面的行是我对一个相关问题的回答是:的一部分:
使用用于Android 22至25级的约束布局代码存储库的完整工作示例:
使用sdkmanager和avdmanager的另外两个示例
参考资料
与自动下载缺少的带Gradle的包有关的正式文件
avdmanager 在此解释取代自SDK工具25.3.0版以来的android avd
sdkmanager 在此解释还增强了以查看和接受命令行中的所有许可证。
https://stackoverflow.com/questions/45100298
复制相似问题