Сбой запуска с INSTALL_FAILED_TEST_ONLY

Я недавно использую Calabash для тестирования приложений Android.

Я реализовал несколько тестов для проверки apk, реализованного в Android Studio 3.0.1 и Gradle версии 2.3.3, и это прекрасно работает. Проблема возникает, когда я пытаюсь выполнить тесты для проверки нового приложения, созданного с помощью Gradle версии 3.0.1 и Kotlin (той же AS). Выполнение команды:

bundle exec calabash-android run app-release.apk

я получаю это:

adb: failed to install /Users/sonia/Documents/calabash-test-android/app-release.apk: Failure [INSTALL_FAILED_TEST_ONLY: installPackageLI]
  Scenario: As a valid user I can log into my app #features/my_first.feature:3
  undefined method `chomp' for nil:NilClass (NoMethodError)
  ./features/support/app_installation_hooks.rb:18:in `Before'
  Will not start test server because of previous failures. (RuntimeError)
  ./features/support/app_life_cycle_hooks.rb:5:in `Before'
    When I press "Login"                          # calabash-android-0.9.2/lib/calabash-android/steps/press_button_steps.rb:17
    Then I see "Welcome to coolest app ever"      # calabash-android-0.9.2/lib/calabash-android/steps/assert_steps.rb:5

Failing Scenarios:
cucumber features/my_first.feature:3 # Scenario: As a valid user I can log into my app

1 scenario (1 failed)
2 steps (2 skipped)
0m4.553s

Все остальные параметры, определенные в AS в новом приложении, совпадают со старым приложением.

Кто-то знает, есть ли проблема с версией Gradle?

7 ответов

Официальные документы говорят это

Примечание. Кнопка "Выполнить" создает APK с testOnly="true", что означает, что APK может быть установлен только через adb (который использует Android Studio). Если вам нужен отлаживаемый APK, который пользователи могут установить без adb, выберите вариант отладки и нажмите "Build > Build APK(s)".

Даже заставляю добавить строку ниже к тегу приложения в AndroidManifest.xml

android:testOnly="false"

Кнопка запуска Android Studio отменяет мои настройки.

Я нахожу работающий метод, чтобы остановить Android Studio от внедрения свойства testOnly в тег приложения.

Добавьте следующую строку:

android.injected.testOnly=false

в gradle.properties файл конфигурации gradle в вашем проекте.

Я также столкнулся с той же проблемой и попробовал с android.injected.testOnly=false также в манифесте android:testOnly="false", Но это не работает.

Так что простое решение, которое работает для меня, - нажмите на опцию Build и выберите Build APK(s). нажмите на кнопку найти apk в диалоговом окне, которое появляется в правом нижнем углу. Он найдет ваш неподписанный отладочный APK .

Только что сделал:

  1. Build -> Build Bundle (s) / APKs -> Создать APK
  2. Перейдите в каталог build/outputs/apk/release
  3. adb install -r your_app.apk

Похоже, что при ударе, все равно добавится флаг, даже если android:testOnly="false" находится в вашем файле AndroidManifest.xml.

Отредактируйте конфигурацию запуска, измените параметр развертывания с «АПК по умолчанию» на «АПК из комплекта приложений».

Несмотря на то, что android.injected.testOnly=false и android:testOnly="false" не установлены, он все еще работает.

При использовании предварительной версии SDK принудительно testOnlyбыть ИСТИННЫМ. Только можно пропустить эту ошибкуadb -t. Это предотвращает выпуск приложения с предварительным просмотром SDK для конечного пользователя.

Попробуйте изменить android:testOnly="true" в android:testOnly="false" в вашем AndroidManifest.xml. Вы также можете просто удалить его, должно работать в обе стороны.

Не забудьте добавить следующую строку:

      android.injected.testOnly=false

вgradle.propertiesфайл, который находится

в[ROOT_PROJECT]/app/gradle.properties(или ваш основной модуль градиента приложения), а НЕ[ROOT_PROJECT]/gradle.propertiesфайл. В противном случае это не сработает.

Другие вопросы по тегам