Осколки эспрессо Android случайным образом сбиваются с INSTALL_FAILED_INVALID_APK - PullRequest
0 голосов
/ 11 декабря 2018

РЕДАКТИРОВАТЬ: ниже оригинальный пост.Это была первая проблема, с которой я столкнулся, но повторяя мои шаги снова и снова, я получаю разные результаты.В первый раз, когда я попытался запустить свои осколки после публикации этого сообщения, я получил:

FAILURE: Build failed with an exception.
* What went wrong:
Execution failed for task ':ProgressiveApp:packageInternalStaging'.
> invalid distance too far back

В следующий раз:

> invalid code lengths set

И следующий:

> Unexpected end of ZLIB input stream

Все три проблемы связаны с zip / сжатием.Возможно, это моя основная проблема.

Оригинальный пост ниже:


Я использую AndroidX Espresso 3.1.0 вместе с ANDROIDX_TEST_ORCHESTRATOR.Единственная проблема, с которой я сталкиваюсь, заключается в том, что когда я запускаю осколки (для ускорения тестовых запусков), он иногда решает потерпеть неудачу без веской причины.

Например, я открываю три терминала и три эмулятора.Я запускаю один из них в каждом терминале, чтобы запустить три отдельных шарда:

ANDROID_SERIAL=emulator-5554 ./gradlew connectedAndroidTest -Pandroid.testInstrumentationRunnerArguments.numShards=3 -Pandroid.testInstrumentationRunnerArguments.shardIndex=0
ANDROID_SERIAL=emulator-5556 ./gradlew connectedAndroidTest -Pandroid.testInstrumentationRunnerArguments.numShards=3 -Pandroid.testInstrumentationRunnerArguments.shardIndex=1
ANDROID_SERIAL=emulator-5558 ./gradlew connectedAndroidTest -Pandroid.testInstrumentationRunnerArguments.numShards=3 -Pandroid.testInstrumentationRunnerArguments.shardIndex=2

Затем выполняется треть моих тестов на каждом эмуляторе.Так хорошо до сих пор.Через долгое время все они сделаны, и у меня есть хороший HTML-отчет, в котором говорится, что нулевые тесты не пройдены.Я не коснулся своего кода, я не коснулся эмуляторов.Я иду, чтобы коснуться каждого из терминалов.В каждом из них я нажимаю стрелку вверх, чтобы получить последнюю команду, запущенную в этом терминале, а затем ввод, чтобы повторить то, что я только что выполнил.Два эмулятора в порядке и проходят все свои тесты.Третий нет, и дает мне это сообщение об ошибке ниже:

> Task :<snip>:connectedInternalStagingAndroidTest FAILED
[no message defined]
java.lang.RuntimeException: com.android.builder.testing.api.DeviceException: 
com.android.ddmlib.InstallException: INSTALL_FAILED_INVALID_APK
    at java.util.concurrent.ForkJoinTask$AdaptedCallable.exec(ForkJoinTask.java:1431)
    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)
Caused by: com.android.builder.testing.api.DeviceException: com.android.ddmlib.InstallException: INSTALL_FAILED_INVALID_APK
    at com.android.builder.testing.ConnectedDevice.installPackage(ConnectedDevice.java:132)
    at com.android.builder.internal.testing.SimpleTestCallable.call(SimpleTestCallable.java:147)
    at com.android.builder.internal.testing.SimpleTestCallable.call(SimpleTestCallable.java:59)
    at java.util.concurrent.ForkJoinTask$AdaptedCallable.exec(ForkJoinTask.java:1424)
    ... 4 more
Caused by: com.android.ddmlib.InstallException: INSTALL_FAILED_INVALID_APK
    at com.android.ddmlib.Device.installRemotePackage(Device.java:1031)
    at com.android.ddmlib.Device.installPackage(Device.java:902)
    at com.android.ddmlib.Device.installPackage(Device.java:880)
    at com.android.ddmlib.Device.installPackage(Device.java:869)
    at com.android.builder.testing.ConnectedDevice.installPackage(ConnectedDevice.java:126)
    ... 7 more

Почему?Как?Это не имеет никакого смысла.Я нажимаю и снова захожу, а затем он успешно проходит все тесты без проблем.

Моя проблема в том, что этот случайный сбой происходит достаточно, я не могу настроить свои машины для использования шардинга, и, следовательно, не могу ускоритьтестовый процесс для моей команды.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...