欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

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

程序员文章站 2024-03-25 08:43:40
...

一、引入

在使用Android Studio 3.0编译安装项目时报错,如下:
通过Android Studio编译安装App报错INSTALL_FAILED_TEST_ONLY终极解决方案
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