fra*_*nch 11 java continuous-integration android 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.
Run Code Online (Sandbox Code Playgroud)
输出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.
Run Code Online (Sandbox Code Playgroud)
我该如何解决这个问题,以便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
Run Code Online (Sandbox Code Playgroud)
注意:模拟器版本26.1.4+版本可以引入或修复错误.如果需要可重现的ci构建,最好的选择是通过android组件下载所需的sdk-tools版本.
注:模拟器版本26.1.3是这里包括有趣的修复.我现在正忙着修改我的答案:
这里使用模拟器26.1.2的相关问题.重新启动像我这样的最后一个构建使用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.我分叉你的项目,它在build#6(下图)中工作.
您可以将API API图像用于API-25,我将在下面使用新的解释sdkmanager:1
我们需要向Google或其他人询问为何缺少这些API的ARM ABI.
更新: 已经向Google报告了相关的错误并在此进行了讨论,请注意:
出于某种原因,它被标记为仅在Windows上可用.我不确定这是ADRT本身的问题还是这个软件包的配置,但从快速看看它似乎可能是adrt本身的一个问题.
我不确定api-25问题是否相关,但我希望它可以结合多种解决方案:
google_apis来简化构建矩阵并避免丢失ABI.sdkmanager和avdmanager必需的.dist: precise作为解释在这里.请参阅以下链接,使用包含Api-25仿真器的构建矩阵来处理样本.
我通过Android Studio在macbook上更新了api 23系统映像一次,并且我的计算机不支持关于新版本的消息,所以我使用了google_apis.
我在这里为Ashish Pathak评论的问题提供了一个可能的解决方案(我也是ardock).
我需要更新我的响应以支持新SDK工具附带的新Travis-ci图像.
新的预安装Sdk Tools将简化解决方案并减小YAML文件的大小.
正如2017年6月19日Carmen Andoh和Dominic Jodoin撰写的博客文章所述:
所有Ubuntu Trusty 14.04映像都有更新
新一代Trusty映像已经可以在生产中使用,可以通过在.travis.yml文件中添加group:edge来使用:
sudo: required
dist: trusty
group: edge # Add this
Run Code Online (Sandbox Code Playgroud)
而作为解释在这里:
作为更多信息,这个新的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图像应该是复古兼容的.查看可在.travis.yml文件中指定的Android SDK组件的完整列表,包括build-tools-26.0.0-preview.
但他们没有使用新的avdmanager,我会在本周末尝试修复它.
或者,您可以通过添加使用以前的图像dist: precise.
以下几行是我对相关问题的回答的一部分:在图像更新之前:
使用约束布局codelab存储库的完整工作示例,适用于Android API级别22到25:
另外两个样本使用sdkmanager和avdmanager:
参考
与使用Gradle自动下载缺失软件包相关的官方文档
在新的仿真器选项进行了解释开始通过命令行模拟器
avdmanager 这里解释了android avd自SDK工具版本25.3.0以来的替换
sdkmanager 此处解释还增强了从命令行查看和接受所有许可证
| 归档时间: |
|
| 查看次数: |
1564 次 |
| 最近记录: |