Сбой запуска с 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 .
Только что сделал:
- Build -> Build Bundle (s) / APKs -> Создать APK
- Перейдите в каталог
build/outputs/apk/release
- 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
файл. В противном случае это не сработает.