2017-10-12 76 views
1

我想爲我的項目之一使用travis CI,但我無法使其工作。我設法使.travis.yml配置文件和構建傳遞。但是令人驚訝的是,當我在幾個小時之後推出提交時,構建開始失敗。另外,當我重新啓動之前傳遞的構建時,構建失敗。我不明白爲什麼這是隨機發生的。Travis CI錯誤:無法訪問軟件包管理器。系統正在運行嗎?

這裏是特拉維斯日誌: Travis Log

和.travis.yml文件看起來像這樣:

language: android 
jdk: oraclejdk8 
sudo: required 
env: 
    matrix: 
    - ANDROID_TARGET=android-21 ANDROID_ABI=armeabi-v7a 

android: 
    components: 
    - tools 
    - platform-tools 
    - tools 
    - build-tools-26.0.2 
    - $ANDROID_TARGET 
    - android-26 
    - sys-img-armeabi-v7a-$ANDROID_TARGET 
    licenses: 
    - android-sdk-preview-license-.+ 
    - android-sdk-license-.+ 
    - google-gdk-license-.+ 
before_install: 
    - mkdir "$ANDROID_HOME/licenses" || true 
    - echo -e "\n8933bad161af4178b1185d1a37fbf41ea5269c55" > "$ANDROID_HOME/licenses/android-sdk-license" 
    - echo -e "\n84831b9409646a918e30573bab4c9c91346d8abd" > "$ANDROID_HOME/licenses/android-sdk-preview-license" 
    - chmod +x gradlew 
    - ./gradlew dependencies || true 
before_cache: 
    - rm -f $HOME/.gradle/caches/modules-2/modules-2.lock 
    - rm -fr $HOME/.gradle/caches/*/plugin-resolution/ 
cache: 
    directories: 
    - $HOME/.gradle/caches/ 
    - $HOME/.gradle/wrapper/ 
    - $HOME/.android/build-cache 
before_script: 
    # Create and start emulator 
    - 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 
    - adb shell input keyevent 82 & 

script: ./gradlew connectedAndroidTest 

而且gradle這個文件的相關片段:

android { 
    compileSdkVersion 26 
    buildToolsVersion "26.0.2" 
    defaultConfig { 
     applicationId "com.amit.realmmvp" 
     minSdkVersion 15 
     targetSdkVersion 26 
     versionCode 1 
     versionName "1.0" 
     testInstrumentationRunner "android.support.test.runner.AndroidJUnitRunner" 
    } 
    buildTypes { 
     release { 
      minifyEnabled false 
      proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro' 
     } 
    } 
    lintOptions { 
     abortOnError false 
    } 
} 

有類似的問題堆棧溢出關於同樣的問題,但他們都涉及到android studio和模擬器​​沒有入門。但是,在travis配置文件中,我已經要求它等到仿真器上線使用- adb wait-for-device

任何人都可以請幫我弄清楚這一點嗎?謝謝。

編輯

構建過程失敗的位置:

:app:connectedDebugAndroidTestUnable to install /home/travis/build/AmitBarjatya/RealmMvp/app/build/outputs/apk/debug/app-debug.apk 
com.android.ddmlib.InstallException: Unknown failure (Error: Could not access the Package Manager. Is the system running?) 
    at com.android.ddmlib.Device.installRemotePackage(Device.java:1004) 
    at com.android.ddmlib.Device.installPackage(Device.java:911) 
    at com.android.builder.testing.ConnectedDevice.installPackage(ConnectedDevice.java:122) 
    at com.android.builder.internal.testing.SimpleTestCallable.call(SimpleTestCallable.java:126) 
    at com.android.builder.internal.testing.SimpleTestCallable.call(SimpleTestCallable.java:52) 
    at java.util.concurrent.ForkJoinTask$AdaptedCallable.exec(ForkJoinTask.java:1424) 
    at java.util.concurrent.ForkJoinTask.doExec(ForkJoinTask.java:289) 
    at java.util.concurrent.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1056) 
    at java.util.concurrent.ForkJoinPool.runWorker(ForkJoinPool.java:1692) 
    at java.util.concurrent.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:157) 
+0

你能在這裏發佈Travis日誌的問題部分嗎? –

+0

它實際上在這裏失敗:app:connectedDebugAndroidTestUnable安裝/home/travis/build/AmitBarjatya/RealmMvp/app/build/outputs/apk/debug/app-debug.apk com.android.ddmlib.InstallException:Unknown failure(Error :無法訪問軟件包管理器系統是否正在運行?) –

+0

我要求將它發佈在評論中,但作爲您的問題的一部分。那麼你的問題看起來會非常好。 –

回答

1

而不是

- adb wait-for-device 

使用

- android-wait-for-emulator 

android-wait-for-emulator腳本不僅會等待設備,而且還會導致啓動動畫太完整。

+0

它的工作!非常感謝。你知道爲什麼當我重試它們時已經通過的構建失敗了嗎? –

+0

巧合......或者他們用容器改變了一些東西導致了這些問題。 – tynn