Невозможно настроить travis для работы над проектом Android

Я обнаружил несколько проблем с Трэвисом CI, и я решал их, но последний из них я не могу.

Я получаю общую ошибку com.android.ddmlib.InstallException: Failed to establish session

Это мой файл travis:

 language: android before_install: - chmod +x gradlew 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 - tools - build-tools-23.0.3 # Additional components - extra-google-m2repository - extra-android-m2repository # The SDK version used to compile your project - android-23 # Specify at least one system image, # if you need to run emulator(s) during your tests - sys-img-armeabi-v7a-android-23 #- sys-img-x86-android-17 env: global: # install timeout in minutes (2 minutes by default) - ADB_INSTALL_TIMEOUT=8 # Emulator Management: Create, Start and Wait before_script: - echo no | android create avd --force --name test --target android-23 --abi armeabi-v7a - emulator -avd test -no-skin -no-audio -no-window -gpu off -no-boot-anim & - android-wait-for-emulator - adb devices - adb shell input keyevent 82 & script: - echo $ADB_INSTALL_TIMEOUT - android list target - ./gradlew connectedAndroidTest after_failure: # Customize this line, 'android' is the specific app module name of this project. Shows log. - export MY_MOD="SimpleLock" - export MY_LOG_DIR="$(pwd)/app/build/reports/androidTests/connected/" - pwd && cd "${MY_LOG_DIR:-.}" && pwd && ls -al - sudo apt-get install -qq lynx && lynx --dump index.html > myIndex.log - lynx --dump com.android.builder.testing.ConnectedDevice.html > myConnectedDevice.log - lynx --dump com.android.builder.testing.html > myTesting.log - for file in *.log; do echo "$file"; echo "====================="; cat "$file"; done || true 

И это мой выход travis: https://travis-ci.org/GarceGon/SimpleLock/builds/139367600

 :app:connectedDebugAndroidTestUnable to install /home/travis/build/GarceGon/SimpleLock/app/build/outputs/apk/app-debug.apk com.android.ddmlib.InstallException: Failed to establish session at com.android.ddmlib.SplitApkInstaller.install(SplitApkInstaller.java:66) at com.android.ddmlib.Device.installPackages(Device.java:901) at com.android.builder.testing.ConnectedDevice.installPackages(ConnectedDevice.java:119) at com.android.builder.internal.testing.SimpleTestCallable.call(SimpleTestCallable.java:121) at com.android.builder.internal.testing.SimpleTestCallable.call(SimpleTestCallable.java:48) at java.util.concurrent.FutureTask.run(FutureTask.java:262) at java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:471) at java.util.concurrent.FutureTask.run(FutureTask.java:262) at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1145) at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:615) at java.lang.Thread.run(Thread.java:745) com.android.builder.testing.ConnectedDevice > runTests[test(AVD) - 6.0] FAILED com.android.builder.testing.api.DeviceException: com.android.ddmlib.InstallException: Failed to establish session at com.android.builder.testing.ConnectedDevice.installPackages(ConnectedDevice.java:129) null com.android.builder.testing.api.DeviceException: com.android.ddmlib.InstallException: Failed to establish session at com.android.builder.testing.ConnectedDevice.installPackages(ConnectedDevice.java:129) at com.android.builder.internal.testing.SimpleTestCallable.call(SimpleTestCallable.java:121) at com.android.builder.internal.testing.SimpleTestCallable.call(SimpleTestCallable.java:48) at java.util.concurrent.FutureTask.run(FutureTask.java:262) at java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:471) at java.util.concurrent.FutureTask.run(FutureTask.java:262) at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1145) at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:615) at java.lang.Thread.run(Thread.java:745) Caused by: com.android.ddmlib.InstallException: Failed to establish session at com.android.ddmlib.SplitApkInstaller.install(SplitApkInstaller.java:66) at com.android.ddmlib.Device.installPackages(Device.java:901) at com.android.builder.testing.ConnectedDevice.installPackages(ConnectedDevice.java:119) ... 8 more :app:connectedDebugAndroidTest FAILED FAILURE: Build failed with an exception. * What went wrong: Execution failed for task ':app:connectedDebugAndroidTest'. > There were failing tests. See the report at: file:///home/travis/build/GarceGon/SimpleLock/app/build/reports/androidTests/connected/index.html * Try: Run with --stacktrace option to get the stack trace. Run with --info or --debug option to get more log output. BUILD FAILED Total time: 2 mins 20.531 secs The command "./gradlew connectedAndroidTest" exited with 1. 

Благодаря!

Решение:

Удалить параметр -no-boot-anim для ожидания готовности эмулятора и увеличения тайм-аута до 10 минут.


Первая проблема:

замещать

  - emulator -avd test -no-skin -no-audio -no-window -gpu off -no-boot-anim & 

От

  - emulator -avd test -no-skin -no-audio -no-window -gpu off & 

Удаление – опция no-boot-anim анимации, скрипт android-wait-for-emulator зависит от загрузочной анимации, чтобы определить, когда эмулятор готов, как я объясню здесь .

Я разветвил ваш проект, чтобы подтвердить это в ветке разработки, и была построена конструкция Travis-CI, но …


Второй вопрос:

Позже я воссоздал изменения, используя мастер-ветку, и сборка завершилась неудачно …

 Caused by: com.android.ddmlib.ShellCommandUnresponsiveException 

Вы уже исправили эту версию проблемы, хорошо объясненную Шон Барбо:

 # install timeout in minutes (2 minutes by default) - ADB_INSTALL_TIMEOUT=8 

И вы также исправили еще одну проблему с тайм-аутом, объясненную здесь и здесь, для которой требуется больше времени, см .

Android Gradle плагин имеет жестко закодированное значение тайм-аута, которое было слишком низким.

Google исправил его (версия 2.0.0-beta3):

https://code.google.com/p/android/issues/detail?id=189764

Итак, что мы установили в build.gradle для установки этого значения таймаута?

В настоящее время все подключено к android.adbOptions.timeOutInMs.

Пример: проект Google Увеличение времени ожидания АБР и добавление поддержки Travis-ci . Это работает !

 // This enables long timeouts required on slow environments, eg Travis adbOptions { timeOutInMs 10 * 60 * 1000 // Set the timeout to 10 minutes installOptions "-d","-t" } 

Я увеличил таймаут от 1 до 10 минут, как Марк Макдональд, и сборка прошла :

Введите описание изображения здесь

Попробуйте несколько вещей

  • Убедитесь, что запущен эмулятор / подключено устройство.
  • Перезапустить adb с помощью $ adb kill-server
  • Убедитесь, что включена настройка эмулятора «Использовать главный GPU»
Intereting Posts
Android: Можно ли обновить только один элемент в списке? Как издеваться над методом до создания активности? Сделать телефонные звонки в Adobe AIR на Android Android AVD не запускается Как повысить производительность с помощью обработки для Android? Как определить, присутствует ли микрофон в андроиде? Мы можем использовать уже подготовленную базу данных SQLITE для приложения для телефонных разговоров? Android: хотите установить пользовательские шрифты для всего приложения, а не для исполнения Как открыть общедоступный чат Viber из приложения Android Проект Android жалуется «Тип болтов. Задача не может быть решена. Это косвенно ссылается на требуемые .class-файлы " Android Studio 2.3 Beta 1 + Поддержка 25.1.0 = Предварительный просмотр сломанной Скопировать каталог из Активы в локальный каталог Есть ли способ интегрировать Eclipse с Gradle в проект Android? Определить силу сигнала данных SetOnItemClickListener () не работает на пользовательском ListView @ Android