安装失败


在使用Android Studio进行apk调试时,某些机器(例如vivo)会出现安装失败的问题。

错误提示:

原因分析


Android Studio 3.0之后,在打包生成debug apk时,在apk的manifest文件的application标签里自动添加 android:testOnly="true"属性。

testOnly属性

android:testOnly=“true” 这个标记原本是用来标记测试用的,所以带这个标记的包一般情况下是不能安装上的,需要使用特殊的方式安装(添加-t标志)。

反编译后的apk的manifest文件

我们反编译apk文件,查看AS是否自动添加了android:testOnly="true"属性。

从截图中我们看到,确实是添加了该属性。

解决方法


好了,问题既然找到了,下面就来看如何进行解决。

既然是标志位的问题,那就有2种解决思路:第一种,把标记位去掉;第二种,使用特殊方式安装;第三种,修改标记位,将true改为false。

去掉标记位

通常,我们使用AS调试,直接点击绿色三角形运行程序,这样打出来的apk包是含有标记位的。

现在我们要去掉它。

  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即可。

ps:其实这几种方法中,感觉最后一种最简单,使用方便。

更多相关文章

  1. Android开发环境搭建-eclipse篇(真机测试)
  2. Android(安卓)studio 一直卡在Gradle:Build Running
  3. Firebase Crashlytics Sdk接入流程(Android)
  4. Intellij Idea gradle Android(安卓)depends Setting
  5. 安卓入门 之 开发环境搭建
  6. Android(安卓)Studio常见问题——模拟器中关于VT-x is disabled
  7. android一键退出
  8. Android(安卓)Studio 引用jar和so 文件
  9. android标题栏添加延时加载标志

随机推荐

  1. android 录像
  2. 监听Home键和返回键
  3. Android(安卓)GPS工具 (暂存)
  4. 一个旋转layout布局文件
  5. android改变按下和放开组件时字体的颜色
  6. Android(安卓)RecyclerView实现viewpager
  7. Android(安卓)7.1 Google issue (一)
  8. 如何创建一个安卓项目
  9. viewpager+fragment+radiogroup横向滑动
  10. pagertab 自定义控件碎片滑动