ADB安装因INSTALL_FAILED_TEST_ONLY而失败


200

我在将apk安装到我的设备时遇到问题。

adb install <.apk>

使用以上命令将返回以下内容:

5413 KB/s (99747 bytes in 0.017s)
        pkg: /data/local/tmp/AppClient.TestOnly.App3.apk
Failure [INSTALL_FAILED_TEST_ONLY]

关于什么可能导致此问题的任何想法?

它肯定可以识别设备。apk可能有问题吗?

Answers:


272

看来您需要修改“ AndroidManifest.xml
更改android:testOnly="true"为” android:testOnly="false"或删除此属性。

如果您想保留该属性android:testOnly,则true可以将pm installcommand与-toption 一起使用,可能需要push先将apk传递到设备。

$ adb push bin/hello.apk /tmp/
5210 KB/s (825660 bytes in 0.154s)

$ adb shell pm install /tmp/hello.apk 
    pkg: /tmp/hello.apk
Failure [INSTALL_FAILED_TEST_ONLY]

$ adb shell pm install -t /tmp/hello.apk 
    pkg: /tmp/hello.apk
Success

我能够重现相同的问题,上面的问题解决了。

如果您的APK在设备外部(在桌面上),则可以使用以下命令进行操作:

$ adb install -t hello.apk

63
您不需要adb push和pm install,可以在adb install命令之后指定-t开关:adb install -t -r package.apk
marioc64 '17

无需再推送apk了-在adb install中可以使用-t正常工作,对于完整的命令,请在下面查看我的答案。
amIT '18

adb push bin/hello.apk /tmp/对我不起作用,adb push ./debug.apk /sdcard/temp/debug.apk起作用了
HendraWD

adb install -t app/build/outputs/apk/usUnitedStates/debug/app-usUnited-debug.apk为我工作。
Sulav Timsina '19

谢谢。那解决了我的问题。我的应用是系统应用。因此,需要-f。-f: Install package on the internal system memory.
朱利安

95

我也遇到类似的问题,Android Studio 3.0.0 Beta 7无法再发布到Play商店。

如此处所述:https : //developer.android.com/studio/run/index.html

注意:“运行”按钮会使用testOnly =“ true”构建一个APK,这意味着该APK仅可通过adb(Android Studio使用的adb)安装。如果您想要人们无需adb即可安装的可调试APK,请选择您的调试版本,然后点击构建>构建APK。

发布版本也是如此,Android Studio 3您需要Build > Build APK(s)拥有一个不可测试的发布apk并提交给商店。


6
我怀疑目前(2017年10月/ 11日)这是大多数来到这里的人的正确答案。在AS 3之前,即使在AS外部也可以安装“ Run”生成的APK,不是的。
noamtm '17

有更新,还有更多调整。.花了我一段时间才弄清楚:/
ruben

61

添加-t安装标志,如下面的屏幕截图所示:

答案在红色框中


我编译的示例项目使用'com.android.tools.build:gradle:2.4.0-alpha7',并且未使用稳定版本进行编译,仅添加-t即可为我解决问题。
BubbaGum

7
请解释一下-t
rmtheis

3
在adb帮助中,您将看到使用-t进行安装意味着允许测试软件包
xiaoyee

通过单击模块下拉菜单上的“编辑配置”启动屏幕-在IDE顶部的“创建并运行”和“调试”按钮之间:developer.android.com/studio/run/rundebugconfig.html
Gene Bo,

56

就我而言,此错误是在不稳定的gradle版本中。只需使用gradle的稳定版本(不是alpha,甚至不是beta)。这对我来说是固定的


1
保存了一天!将gradle版本从2.4.0-alpha3更改为2.3.0
Reaz Murshed

1
坚持前沿的价格...谢谢!
瑞安R

任何人都可以确认设置android:testOnly =“ true”也会针对不稳定的gradle版本进行修复吗?
GPS

43

经过一整天的搜索和浏览,唯一的作品是添加

android.injected.testOnly=false

gradle.properties文件


28

我同意Elisey。在2.4预览中打开我的项目,然后在android studio 2.3中打开同一项目后,出现了同样的错误

通过更改build.gradle中的这一行来解决此问题

classpath 'com.android.tools.build:gradle:2.4.0-alpha5'

classpath 'com.android.tools.build:gradle:2.3.1'


12

将此行添加到您的“ gradle.properties”

android.injected.testOnly=false

谢谢!这也将解决勺子问题!
Basim Sherif

11

以前的帖子都没有解决我的问题。这是我正在发生的事情:
通常,我通过单击“运行”按钮从android studio加载应用程序。当您执行此操作时,Android会创建一个适用于调试但不适用于安装的应用程序。如果尝试使用以下方法安装:

亚行安装-r yourapk

您将收到一条消息,内容为:

失败[INSTALL_FAILED_TEST_ONLY]

发生这种情况时,您需要先清理构建,然后选择构建->构建APK,以重建apk。看下面的图片:

建立android apk

此APK已准备好通过adb install命令或任何其他方法进行安装

希望这可以帮助

大卫


你是救星。我在发行版本(错误的密钥库)上遇到麻烦,想将调试版本分发给我的测试人员。
drulabs

如果您使用的是appium,则需要指定端到端"allowTestPackages": "true"方案的功能。
约书亚·品特

9

以我为例,是上传一个APK,尽管它已通过生产证书签名,并且是发行版本,但还是由Android Studio的运行播放按钮生成的。从Gradle或从“生成APK”菜单选项生成APK后,问题已解决。


1
这始于Android Studio 3.0,您的建议已为我修复。
Sky Kelsey

9

如果您要测试apk,只需添加 -t命令行选项。

示例命令:

adb install -t .\app-debug.apk

4

我看到了可接受的答案,但您不必实际推送apk,然后在adb shell上运行命令,直接使用-t标志进行adb install确实有效

adb install -t“您的计算机中apk的路径”

附上截图以供参考 在此处输入图片说明


3

解决此问题最简单的方法,而无需恢复到较早的gradle版本,是在运行配置中添加“ -t”选项(对于pm install)。

testOnly ='false'无效。该错误是由gradle插件的Alpha版本引起的,该版本使调试APK“仅用于测试”。-t选项允许安装这样的APK。将其设置为运行配置可使其像往常一样自动安装APK。



2

我不知道它是否对任何人都有用,但是当我意外地尝试'gradle:2.4.0-alpha5'在稳定的Android Studio版本(2.3而不是2.4 preview 5版本I )中使用测试gradle plugin()版本构建和安装我的项目时,我收到了此错误消息已下载并安装)。

当我意识到自己的错误时,我启动了Android Studio预览版,它可以毫无问题地构建并安装我的项目。


1

尽管我确定Saurabh的答案对大多数其他人都适用,但我确实想确定我为安装apk必须采取的额外步骤。

我尝试将设备推送到以下结果:

? adb push AppClient.TestOnly.App3.apk \tmp\
failed to copy 'AppClient.TestOnly.App3.apk' to '\tmp\': Read-only file system

环顾四周以更改文件系统RW权限后,我最终执行了以下命令:

? adb shell
255|shell@android:/ $ su
shell@android:/ # mount -o remount,rw /
mount -o remount,rw /

当我尝试再次推送时得到了这个:

? adb push AppClient.TestOnly.App3.apk /tmp
failed to copy 'AppClient.TestOnly.App3.apk' to '/tmp': Permission denied

我能够推送到sdcard:

? adb push AppClient.TestOnly.App3.apk /sdcard/
3178 KB/s (99747 bytes in 0.030s)

在这一点上,我能够执行Saurabh的命令:

shell@android:/ # pm install -t /sdcard/AppClient.TestOnly.App3.apk
pm install -t /sdcard/AppClient.TestOnly.App3.apk
        pkg: /sdcard/AppClient.TestOnly.App3.apk
Success

1
我应该补充一点,其中一些可能对其他人而言是不必要的。
2014年

感谢额外的努力!
2014年

1

我的发现如下。如果我使用Android Studio用户界面进行编译,并且生成了APK,我不能只是

adb install <xxx.apk>

它将产生 Failure [INSTALL_FAILED_TEST_ONLY]

我需要使用gradle编译它./gradlew app:assembleRelease。然后只有生成的apk,然后才可以安装。

这是因为Android Studio UI编译仅针对特定设备生成测试apk,而./gradlew app:assembleRelease命令是要在所有设备上安装的实际apk生成(并上传到playstore)


参阅medium.com/@elye.project/…以更好地了解该问题。
Elye

1

文档中所述

单击运行时,Android Studio会自动添加此属性。

因此,要能够与adb install <path to apk file>您一起安装apk,您需要从terminal:组装版本:./gradlew assembleDebug并与adb一起安装。或者只是运行./gradlew installDebug以同时在设备上构建和安装。


1

对我来说,它已经执行了gradle任务“ clean”(在Gradle窗格的:app下,通常位于右侧),然后再次运行该项目。


1

按照以下步骤从Android Studio构建发行版.apk

构建->构建Apk( 用于未签名的构建) 构建->生成已签名的APK (用于已签名的构建)

这些选项使用android:testOnly =“ false”选项构建APK,使您可以通过通用将APK明确安装到设备中。

亚行安装yourBuilT.apk


1

对我有用的是从右侧菜单Refresh all Gradle projectsGradle工具栏中执行的操作。

PFB来自Android Studio的屏幕截图。

  1. Gradle从右侧菜单中选择工具栏。
  2. 选择Refresh图标

这为我解决了这个问题。

Android Studio的屏幕截图


谢了哥们。它在将android gradle升级到4之后开始。直接从android studio部署应用程序可以正常工作,但是如果使用终端(adb安装等)则不能。
user3193413'8

@ user3193413很高兴听到该帖子对您有所帮助
sunil


0

首先删除不稳定版本:

adb uninstall 问题包装名称

; 然后重新安装apk。


0

Android 3.6.2。

生成>>生成/捆绑apk >>生成apk

它的工作正常。在此处输入图片说明


0

就我而言,使用Android Studio 4.0,以下解决了该问题;

添加到“ gradle.properties”文件;

android.injected.testOnly=false 
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.