使用INSTALL_FAILED_TEST_ONLY安装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出了问题?

171064 次浏览
看起来你需要修改你的AndroidManifest.xml
android:testOnly="true"更改为android:testOnly="false"或删除此属性

如果你想保留属性android:testOnly作为true,你可以使用带有-t选项的pm install命令,你可能需要先将apk push到设备。

$ 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

虽然我相信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

在我的情况下,这个错误是在不稳定的gradle版本。只需使用稳定版本的gradle(不是alpha,甚至不是beta)。它为我修好了

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

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

我同意Elisey的观点。在2.4预览中打开我的项目,然后在android studio 2.3中打开相同的项目后,我得到了同样的错误

修正了在构建中更改这一行的问题。它从

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

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

解决这个问题最简单的方法是在运行配置中添加'-t'选项(用于pm install),而不需要恢复到旧的gradle版本。

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

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

answer is in the red box .

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

来自工作室的命令,看起来像

adb install-multiple -r ....

解决方案-

  • 选择控制台
  • 使用-t命令
在我的例子中是通过上传APK,虽然它是用生产证书签名的,并且是一个发布变体,但它是由Android工作室的运行播放按钮生成的。 从Gradle或Build APK菜单选项生成APK后问题解决

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

示例命令:

adb install -t .\app-debug.apk

我有类似的问题与Android Studio 3.0.0 Beta 7,不能再发布到播放商店。

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

注意:运行按钮构建一个APK, testOnly="true",这意味着 APK只能通过adb (Android Studio使用)安装。如果 你想要一个可调试的APK,人们可以在没有adb的情况下安装,选择 你的调试变量,然后点击Build > Build APK(s).

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

adb install -t myapk.apk

我看到了接受的答案,但你不必真正地推动apk,然后在adb shell上运行命令直接adb install with -t flag实际上是有效的

Adb install -t“apk在你电脑上的路径”

附加截图供参考 enter image description here < / p >

Android studio 3.0只生成测试APK。

我已经通过添加“android:testOnly”属性到android manifest的标签解决了这个问题。

 <application
.....
android:testOnly="false"
android:theme="@style/AppTheme">

然后通过Android studio3.0菜单:Build—>Build APK(s)生成APK。

< >强更多信息: https://commonsware.com/blog/2017/10/31/android-studio-3p0-flag-test-only.html < / p >

我的发现如下。如果我使用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)

正如在文档中提到的:

Android Studio在单击Run时自动添加此属性

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

对我来说,它已经工作了,执行gradle任务“清洁”(在:app下,在gradle窗格,通常位于右侧),并再次运行项目。

首先删除不稳定版本:

adb uninstall problematic-package-name

; 然后重新安装apk。

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

构建Apk(s)(用于无符号构建) 生成签名APK(用于签名构建)

这些选项使用android:testOnly="false"选项构建APK,允许您通过命令显式地将APK安装到设备中。

adb安装你的apk

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

android.injected.testOnly=false

gradle.properties文件

将这一行添加到你的gradle.properties中

android.injected.testOnly=false

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

PFB来自Android Studio的截图。

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

这为我解决了问题。

截图from Android Studio

之前的帖子都没有解决我的问题。这是发生在我身上的事情:
我通常通过点击“运行”来从android studio加载应用程序。按钮。当你这样做时,android会创建一个适合调试但不适合安装的应用程序。如果你试图安装使用:

Adb install -r yourapk

你会收到一条信息,上面写着:

失败(INSTALL_FAILED_TEST_ONLY)

当这种情况发生时,你需要通过清理构建来重新构建apk,然后选择build -> build apk。请看下图:

build android apk

这个APK可以通过adb install命令或任何其他方法安装

希望这能有所帮助

大卫

Android 3.6.2及以上版本

建立在比;构建/捆绑apk >>构建的apk

enter image description here

它工作得很好。

以我为例,使用Android Studio 4.0解决了这个问题;

添加到gradle。属性的文件;

android.injected.testOnly=false

如果你正在寻找一个不那么永久的解决方案,那么将android.injected.testOnly=false添加到你的gradle.properties文件中,并且你不介意使用命令行,那么在安装之前执行以下两个命令就可以了:

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

Windows用户:删除所有构建目录下的所有AndroidManifest.xml。但不是从src目录,所以DEL /S不是最好的主意。

我也有同样的问题,没有答案。 最后,我发现在我的安全文件夹(或安全文件夹取决于手机品牌)中仍然有一个安装,它没有在Android卸载普通安装时被删除。删除它,这个问题就解决了。 希望这能帮助到其他人!< / p >