通过Android Studio编译安装App报错INSTALL_FAILED_TEST_ONLY终极解决方案

一、引入

在使用Android Studio 3.0编译安装项目时报错,如下:
这里写图片描述
OK也是安装失败。

通过adb instal命令行安装,同样失败,错误信息为:

ErrorCode:-15 略略略
INSTALL_FAILED_TEST_ONLY 略略略

二、解决方案

2.1 检查AndroidMainfest

<appliaction
...
    android:testOnly="true"
...>
....
</application>

只要有【testOnly】属性,程序就不会被运行,无论是在真机还是模拟器。

android:testOnly:应用是否是为了测试,它可能向外暴露数据,引发安全漏洞,如果为true,应用只能通过adb安装。一般来说,项目中manifest不会去设置这个属性,所以会默认为false

尝试修改为false,修改完成后重新编译运行,如果扔不行,继续往下看。

2.2 检查gralde版本

buildscript {
    repositories {
        jcenter()
    }
    dependencies {
        classpath 'com.android.tools.build:gradle:2.4.0-alpha3'  //版本为测试版
    }
}

有种说法是项目中所用的编译器和gradle版本不能为alpha版本,需要使用稳定版。亲测,这个可以作为检查项,但不是关键问题所在。

2.3 adb命令增加参数

如果单纯要使用adb install安装的话,可以增加-t的参数,如下:

adb install -r *.apk

表示允许安装AndroidManifest.xmlapplication 指定 android:testOnly=”true” 的应用

2.4 终极大招—gradle.properties

上面通过给adb命令增加-t的方式,可以达到通过命令行安装应用的目的,但还没有解决通过Android Studio编译安装的问题,接下来,终极方案来了。

在项目根目录gradle.properties中,增加配置:

android.injected.testOnly=false

编译安装运行,发现完美搞定。

三、小结

1、检查\app\src\main\AndroidMainfest.xml中是否有testOnly属性为true,如果有去掉或者改为false
2、检查\app\build\intermediates\manifests\full\debug\AndroidManifest.xml中关于生成apk的信息,是否有testOnly属性为true
3、检查gradle版本是否为alpha版本,如果是换为稳定版本 (可以尝试一下)
4、检查是否关闭Instant Run功能,关掉此功能 (未亲测)
5、检查是否使用alpha版本的依赖库,如果有则换成稳定版本(感觉关系不大)
6、使用adb install -t *.apk安装
7、在gradle.properties中添加android.injected.testOnly=false

猜你喜欢

转载自blog.csdn.net/u010358168/article/details/81286270