我正在尝试设置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
答案 0 :(得分:9)
注意:模拟器版本26.1.4+版本可以引入或修复错误。如果需要可重现的ci构建,最好的选择是通过android组件下载所需的sdk-tools版本。
注意:模拟器版本26.1.3为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
我们需要向Google或其他人询问为何缺少这些API的ARM ABI。
更新: A related bug已经向Google报告并讨论了here,请注明:
出于某种原因,它被标记为仅在Windows上可用。我 不确定这是ADRT本身或配置的问题 对于这个包,但从快速看看似乎它可能是一个 adrt本身的问题。
我不确定api-25问题是否相关,但我希望它可以结合多种解决方案:
google_apis
系统映像来简化构建矩阵并避免错过ABI。sdkmanager
和avdmanager
。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:
使用sdkmanager
和avdmanager
的另外两个样本:
<强>参考强>
与Auto-download missing packages with Gradle
相关的官方文档 中解释了Start the Emulator from the Command Line选项 avdmanager
explained here替换android avd
以来SDK tools version 25.3.0
sdkmanager
explained here也已增强,可以从命令行查看和接受所有许可