ADB安装失败,INSTALL_FAILED_TEST_ONLY

时间:2014-08-12 21:24:35

标签: android install apk adb

我在向我的设备安装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的问题吗?

24 个答案:

答案 0 :(得分:188)

您似乎需要修改AndroidManifest.xmlandroid:testOnly="true"更改为android:testOnly="false"或删除此属性。

如果您想将属性android:testOnly保留为true,可以使用pm install命令和-t选项,您可能需要首先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

答案 1 :(得分:78)

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

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

  

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

同样适用于发布版本,使用Android Studio 3您需要转到Build > Build APK(s)以获得可以提交给商店的不可测试版本。

答案 2 :(得分:54)

在我的情况下,这个错误是在不稳定的gradle版本中。只需使用稳定版本的gradle(不是alpha,甚至不是beta)。这对我来说是固定的

答案 3 :(得分:52)

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

answer is in the red box

答案 4 :(得分: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'

答案 5 :(得分:27)

整天搜索和浏览后,唯一有效的是添加

android.injected.testOnly=false

gradle.properties 文件

答案 6 :(得分:9)

在我的情况下,通过上传APK,虽然它是使用生产证书签名并且是发布变体,但是由Android工作室的运行播放按钮生成。 从Gradle或Build APK菜单选项生成APK后问题解决了。

答案 7 :(得分:9)

将此行添加到'gradle.properties'

android.injected.testOnly=false

答案 8 :(得分:8)

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

示例命令:

adb install -t .\app-debug.apk

答案 9 :(得分:5)

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

adb install -r yourapk

您将收到一条消息,指出:

失败[INSTALL_FAILED_TEST_ONLY]

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

build android apk

此APK已准备就绪,可以通过adb install命令或任何其他方法进行安装

希望这会有所帮助

大卫

答案 10 :(得分:3)

最容易解决这个问题,而不是恢复到较旧的gradle版本是在运行配置中添加'-t'选项(对于pm安装)。

testOnly ='false'没有任何效果。该错误是由gradle插件的alpha版本引起的,该版本使调试APK'仅用于测试目的'。 -t选项允许安装此类APK。在运行配置中设置它会使它像往常一样自动安装APK。

答案 11 :(得分:3)

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

添加到“ gradle.properties”文件;

android.injected.testOnly=false 

答案 12 :(得分:3)

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

  

adb install -t&#34;在您的计算机中使用apk的路径&#34;

附上截图以供参考 enter image description here

答案 13 :(得分:3)

Android 3.6.2。

构建>>构建/捆绑apk >>构建apk

工作正常。enter image description here

答案 14 :(得分:2)

我不知道它是否对任何人都有用,但是当我不小心尝试在稳定的Android中使用test gradle插件('gradle:2.4.0-alpha5')版本构建和安装我的项目时,我收到了此错误消息Studio版本(2.3,不在我之前下载和安装的2.4 preview 5版本中。)

当我意识到自己的错误时,我启动了预览Android Studio版本,它没有任何问题地构建和安装我的项目。

答案 15 :(得分:2)

这适用于我adb install -t myapk.apk

答案 16 :(得分:1)

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

PFB来自Android Studio的屏幕截图。

  1. 从右侧菜单中选择Gradle工具栏。
  2. 选择Refresh图标
  3. 这解决了我的问题。

    Screenshot from Android Studio

答案 17 :(得分: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

我能够推送到SD卡:

? 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

答案 18 :(得分:1)

从Android Studio构建您的发行版.apk,如下所示

构建 - &gt;构建Apk(s)(对于未签名的构建) 构建 - &gt;生成签名APK (用于签名版本)

这些选项使用android构建APK:testOnly =&#34; false&#34;允许您通过commond将APK明确地安装到设备中的选项。

adb install yourBuilT.apk

答案 19 :(得分:1)

我的发现如下。如果我使用Android Studio UI编译,并生成APK,我不能只是

adb install <xxx.apk>

它会生成Failure [INSTALL_FAILED_TEST_ONLY]

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

这是因为Android Studio UI Compile只为特定设备生成测试apk,而./gradlew app:assembleRelease命令是要在所有设备上安装的实际apk版本(并上传到Playstore)

答案 20 :(得分:0)

首先删除不稳定版本:

adb uninstall problematic-package-name

然后重新安装apk。

答案 21 :(得分:0)

documentation中所述:

  

单击“运行”

时,Android Studio会自动添加此属性

因此,为了能够使用adb install <path to apk file>安装apk,您需要从终端组装构建:./gradlew assembleDebug并使用adb进行安装。或者只需运行./gradlew installDebug即可在设备上同时构建和安装。

答案 22 :(得分:0)

我尝试了多个apk的外部项目。

来自Studio的命令,看起来像

+

解决方案 -

  • 选择控制台
  • 使用adb install-multiple -r ....
  • 的aste命令

答案 23 :(得分:0)

如果您正在寻找一个不太持久的解决方案,然后将 android.injected.testOnly=false 添加到您的 gradle.properties 文件,并且您不介意使用命令行,那么安装前的以下两个命令将做:

rm -v **/build/**/AndroidManifest.xml
gradle build

对于 Windows 用户:从所有 build 目录中删除所有 AndroidManifest.xml。但不是来自 src 目录,所以 DEL /S 不是最好的主意。