禁用 Android Studio 3.x 系列自带的 testOnly 属性,解决 debug 包安装失败的问题

Posted 亦枫Blog

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了禁用 Android Studio 3.x 系列自带的 testOnly 属性,解决 debug 包安装失败的问题相关的知识,希望对你有一定的参考价值。

不知道有没有人遇到过,android Studio 3.0 开始自带一个隐藏的功能,那就是编译打包 debug 包时,会自动在 apk 包的清单文件中加这么一句话:

android:testOnly="true"

该属性位于 AndroidManifest.xml 文件的 application 标签下,可以直接在 Android Studio 开发工具中打开 app/build/outputs/apk/debug/app-debug.apk 文件查看。

这带来的一个问题是,当你使用真机调试时,通过 run 操作安装 app-debug.apk 文件时失败了,错误提示信息如下:

Installation did not succeed. 
The application could not be installed: INSTALL_FAILED_TEST_ONLY
Installation failed due to: 'null'
Retry

这是因为国内一些安卓手机制作商定制的 Android 系统不允许安装含带这个属性的测试包。哪怕你使用 -t 参数通过 adb 安装也是不行的:

adb install -t app-debug.apk
Failure [INSTALL_FAILED_TEST_ONLY]

唯一方式就是禁止 Android Studio 生成 debug 类型的 apk 文件时自动添加这个属性。

打开项目根目录下的 gradle.properties 文件,添加一行:

android.injected.testOnly=false

就这么简单。

当然,也可以修改本地用户目录下全局 gradle 配置的 gradle.properties 文件,针对所有项目生效,不至于每一个项目都需要改变 gradle.properties 文件,一是麻烦,二是 git 版本控制下还需要提交到远程仓库中(毕竟不是每一个人都会遇到这样的问题,取决于 Android Studio 版本和调试的机器)。

查看本地全局 gradle 目录

默认情况下,用户目录 ~/.gradle 中是没有 gradle.properties 文件的,可以自行添加一个,再将该属性添加其中。

长按识别二维码,关注我,一名爱叨叨的程序员

以上是关于禁用 Android Studio 3.x 系列自带的 testOnly 属性,解决 debug 包安装失败的问题的主要内容,如果未能解决你的问题,请参考以下文章

Android Studio:禁用装订线

Flutter:在 Android Studio 中打开 android 模块被禁用

Android Studio系列教程与技巧--下载安装

Android Studio系列教程与技巧--下载安装

Android Studio系列教程与技巧--下载安装

Android Studio系列教程与技巧--下载安装