彻底解决 INSTALL_FAILED_TEST_ONLY安装失败的问题

安装失败


在使用Android Studio进行apk调试时,某些机器(例如vivo)会出现安装失败的问题。

错误提示:

彻底解决 INSTALL_FAILED_TEST_ONLY安装失败的问题_第1张图片

原因分析


Android Studio 3.0之后,在打包生成debug apk时,在apk的manifest文件的application标签里自动添加 android:testOnly="true"属性。

testOnly属性

android:testOnly=“true” 这个标记原本是用来标记测试用的,所以带这个标记的包一般情况下是不能安装上的,需要使用特殊的方式安装(添加-t标志)。

反编译后的apk的manifest文件

我们反编译apk文件,查看AS是否自动添加了android:testOnly="true"属性。
彻底解决 INSTALL_FAILED_TEST_ONLY安装失败的问题_第2张图片

从截图中我们看到,确实是添加了该属性。

解决方法


好了,问题既然找到了,下面就来看如何进行解决。

既然是标志位的问题,那就有2种解决思路:第一种,把标记位去掉;第二种,使用特殊方式安装;第三种,修改标记位,将true改为false。

去掉标记位

通常,我们使用AS调试,直接点击绿色三角形运行程序,这样打出来的apk包是含有标记位的。
在这里插入图片描述

现在我们要去掉它。

  1. 方法一:使用AS菜单Build->Make Project来编译项目,生成的apk是无该标记位的。
  2. 方法二:使用菜单Build里面的Build APK(s),生成的apk也是无该标记位的。

使用特殊方式安装

我们可以使用adb命令进行安装,添加-t标记:

adb install -t simpledemo-debug.apk 

其实直接在AS中,点击绿色三角形,也是会添加-t标记的。

但是,该方法不是所有机型都有效,我在vivo的某个机型中,还是会报INSTALL_FAILED_TEST_ONLY的错误。

修改标记位的值

在项目根目录下,找到gradle.properties文件,并打开。

添加如下代码:

android.injected.testOnly=false

它会全局设置项目中的所有关于testOnly的标记值,这里改为false即可。

ps:其实这几种方法中,感觉最后一种最简单,使用方便。

你可能感兴趣的:(IDE)