Travis是Android开发的新成员,由于出现错误标题,我的构建失败,我一直在阅读文档并尝试实现它,但仍然失败。
我失败的构建的链接如下 https://travis-ci.org/huxaiphaer/ConvergeLevelApp
以下是Travis上的错误。
$ java -Xmx32m -version
java version "1.8.0_144"
Java(TM) SE Runtime Environment (build 1.8.0_144-b01)
Java HotSpot(TM) 64-Bit Server VM (build 25.144-b01, mixed mode)
$ javac -J-Xmx32m -version
javac 1.8.0_144
0.46s$ echo no | android create avd --force -n test -t android-22 --abi armeabi-v7a
Error: Target id is not valid. Use 'android list targets' to get the target ids.
The command "echo no | android create avd --force -n test -t android-22 --abi armeabi-v7a" failed and exited with 1 during .
Your build has been stopped.
然后下面是我的.travis.yml文件
# Disabling sudo moves build to the Container Based Infrastructure on Travis CI
language: android
jdk: oraclejdk8
env:
global:
# wait up to 10 minutes for adb to connect to emulator
- ADB_INSTALL_TIMEOUT=10
android:
components:
# Uncomment the lines below if you want to
# use the latest revision of Android SDK Tools
- platform-tools
- tools
# The BuildTools version used by your project
- build-tools-26.0.2
# The SDK version used to compile your project
- android-26
- extra
# Additional components
- extra-google-google_play_services
- extra-google-m2repository
- extra-android-m2repository
- extra-android-support
# Specify at least one system image,
# if you need to run emulator(s) during your tests
- sys-img-armeabi-v7a-android-22
licenses:
- 'android-sdk-preview-license-52d11cd2'
- 'android-sdk-license-.+'
- 'google-gdk-license-.+'
# start Android emulator
bedfore_install:
- yes | sdkmanager "platforms;android-22"
- ./gradlew build connectedCheck
- chmod +x ./gradlew
before_script:
- echo no | android create avd --force -n test -t android-22 --abi armeabi-v7a
- emulator -avd test -no-audio -no-window &
- android-wait-for-emulator
- adb shell input keyevent 82 &
notifications:
email: true
cache:
directories:
- $HOME/.m2
- $HOME/.gradle
- $HOME/.android
- ${TRAVIS_BUILD_DIR}/gradle/caches/
- ${TRAVIS_BUILD_DIR}/gradle/wrapper/dists/
我实现的解决方案之一是在before_script
中使用以下命令列出目标ID :
- android list targets
我得到了它们的以下列表,但我不知道:
这是我的build.gradle文件
apply plugin: 'com.android.application'
apply plugin: 'jacoco'
jacoco {
toolVersion = '0.8.0'
}
tasks.withType(Test) {
jacoco.includeNoLocationClasses = true
}
task jacocoTestReport(type: JacocoReport, dependsOn: ['testDebugUnitTest', 'createDebugCoverageReport']) {
reports {
xml.enabled = true
html.enabled = true
}
def fileFilter = ['**/R.class', '**/R$*.class', '**/BuildConfig.*', '**/Manifest*.*', '**/*Test*.*', 'android/**/*.*']
def debugTree = fileTree(dir: "$project.buildDir/intermediates/classes/debug", excludes: fileFilter)
def mainSrc = "$project.projectDir/src/main/java"
sourceDirectories = files([mainSrc])
classDirectories = files([debugTree])
executionData = fileTree(dir: project.buildDir, includes: [
'jacoco/testDebugUnitTest.exec', 'outputs/code-coverage/connected/*coverage.ec'
])
}
android {
adbOptions {
timeOutInMs 60 * 1000
}
compileSdkVersion 28
defaultConfig {
applicationId "com.levelapp.converge.convergelevelapp"
minSdkVersion 15
targetSdkVersion 28
versionCode 1
versionName "1.0"
testInstrumentationRunner "android.support.test.runner.AndroidJUnitRunner"
}
buildTypes {
debug {
testCoverageEnabled true
}
release {
minifyEnabled false
proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
}
}
testOptions {
execution 'ANDROID_TEST_ORCHESTRATOR'
animationsDisabled true
unitTests {
includeAndroidResources = true
}
}
}
dependencies {
implementation fileTree(dir: 'libs', include: ['*.jar'])
implementation 'com.android.support:appcompat-v7:28.0.0'
implementation 'com.android.support:animated-vector-drawable:28.0.0'
implementation 'com.android.support:exifinterface:28.0.0'
implementation 'com.android.support.constraint:constraint-layout:1.1.3'
testImplementation 'junit:junit:4.12'
androidTestImplementation 'com.android.support.test:runner:1.0.2'
androidTestImplementation 'com.android.support.test.espresso:espresso-core:3.0.2'
implementation 'com.android.support:cardview-v7:28.0.0'
implementation 'com.android.support:recyclerview-v7:28.0.0'
androidTestUtil 'com.android.support.test:orchestrator:1.0.2-alpha1'
testImplementation 'junit:junit:4.12'
testImplementation 'org.robolectric:robolectric:3.7.1'
implementation 'com.squareup.retrofit2:retrofit:2.5.0'
implementation 'com.squareup.retrofit2:converter-gson:2.3.0'
implementation 'com.koushikdutta.ion:ion:2.+'
implementation 'com.mikhaellopez:circularimageview:3.2.0'
}
答案 0 :(得分:0)
似乎您忘记添加仿真器依赖项,这就是为什么找不到有效的ABI的原因。要运行仿真器,您需要安装android-22
平台以使仿真器能够正常工作:
android:
components:
- ...
# Specify at least one system image,
# if you need to run emulator(s) during your tests
- android-22
- sys-img-armeabi-v7a-android-22
- ...