通过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.xml
里 application
指定 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