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

安装失败 在使用Android Studio进行apk调试时,某些机器(例如vivo)会出现安装失败的问题。
错误提示:
彻底解决 INSTALL_FAILED_TEST_ONLY安装失败的问题
文章图片

原因分析 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种解决思路:第一种,把标记位去掉;第二种,使用特殊方式安装;第三种,修改标记位,将true改为false。
去掉标记位
通常,我们使用AS调试,直接点击绿色三角形运行程序,这样打出来的apk包是含有标记位的。
彻底解决 INSTALL_FAILED_TEST_ONLY安装失败的问题
文章图片

现在我们要去掉它。

  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即可。
【彻底解决 INSTALL_FAILED_TEST_ONLY安装失败的问题】ps:其实这几种方法中,感觉最后一种最简单,使用方便。

    推荐阅读