使用INSTALL_FAILED_TEST_ONLY运行失败

时间:2018-01-25 10:00:29

标签: android calabash-android

我是新手使用calabash来测试Android应用程序。

我实施了一些测试来验证用Android Studio 3.0.1和Gradle版本2.3.3实现的apk,并且工作正常。 当我尝试执行测试以验证使用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版本是否有问题?

5 个答案:

答案 0 :(得分:6)

Official docs说这个

  

注意:“运行”按钮使用testOnly =“true”构建APK,这意味着APK只能通过adb(Android Studio使用)安装。如果您想要一个可以在没有adb的情况下安装的可调试APK,请选择您的调试版本,然后单击Build>建立APK(s)。

即使我强行将以下行添加到AndroidManifest.xml中的应用程序标记

<s:property>

Android Studio Run按钮会覆盖我的设置。

我找到了一种工作方法来阻止Android Studio将testOnly属性注入应用程序标记。

添加以下行:

android:testOnly="false"

到项目中的gradle.properties gradle配置文件。

答案 1 :(得分:0)

尝试在AndroidManifest.xml中将android:testOnly="true"更改为android:testOnly="false"。你也可以删除它,应该双向工作。

答案 2 :(得分:0)

我也遇到了同样的问题,并且在清单android.injected.testOnly=false中也尝试了android:testOnly="false"。但这不起作用。

最适合我的简单解决方案是-单击“生成”选项,然后选择“生成APK”。单击出现在右下角的对话框中的apk。它将找到您未签名的调试APK。

答案 3 :(得分:0)

就这样:

  1. 构建->构建捆绑包/ APK->构建APK
  2. 导航到目录build/outputs/apk/release
  3. adb install -r your_app.apk

即使android:testOnly="false"位于您的AndroidManifest.xml文件中,看来运行仍会添加该标志。

答案 4 :(得分:0)

如果使用SDK的预览版,它将强制testOnly为TRUE。只有adb -t可以跳过此错误。这会阻止带有预览SDK的应用在最终用户上发布。