Android安装失败(应用未安装,该软件包似乎已损坏)

一、描述

最近调试一个第三方SDK,代码改动也挺大,这两天准备发个版本的时候,打包出来的APK想覆盖线上版本的试试,覆盖安装的时候居然提示下图所示,该软件包似乎已损坏,这让我看的一脸懵逼,什么原因也没说。

《Android安装失败(应用未安装,该软件包似乎已损坏)》

二、解决

原因:

因为接入第三方SDK的时候,因需求调整了build.gradle文件下的targetSdkVersion版本,线上版本的targetSdkVersion是24,如今被我改成22了,所以低版本的targetSdkVersion是无法覆盖安装高版本的targetSdkVersion的。

解决方法:

把当前项目的targetSdkVersion版本调整成跟线上版本一样,或者高于线上的,不然覆盖安装是会报错的。

targetSdkVersion 24

三、解决流程

上面已经公布问题的原因和解决方案,具体的解决问题流程有兴趣的往下面看

(1)刚发现问题的时候,怀疑网络不好的原因导致QQ传输到手机上的APK不完整,所以损坏了,但是测试后排除了这个问题

(2)之后就根据提示的关键字搜百度,谷歌了,大部分的答案都需要我在打包的时候勾选以下的V1 和 V2,但是我的这两个选项是灰色的,我的gradle版本比较低是2.2.3的,百度上说要在2.3.3以上才可以勾选,因为项目库的原因,调整gradle后影响太大,这个方案也不采纳了。

《Android安装失败(应用未安装,该软件包似乎已损坏)》

(3) 之后想七想八的方法都试了一遍,都没什么效果,只能乖乖的还是拿着关键字去查百度,后面看到一篇文章里有用到命令去安装Apk,一下子就想起来了,可以用命令安装啊,它是会报错误信息的,果断就用命令去重装了一下apk,报了以下的错误

>>adb install -r 231.apk 

Failed to install 231.apk: Failure [-26: Package com.example.test new target SDK 22 doesn't support runtime permissions but the old target SDK 24 does.]

一看命令就想到了,target版本的问题了,之前修改过这个版本,再去master分支上看下线上的版本是多少,果然当前版本比线上版本低了,八成是这个原因了,所以马上把targetSdkVersion改成跟线上的版本一样后,打包覆盖安装就成功了,这么简单的问题找了那么久也是醉了。

也顺便找到一个跟我这个一样问题的小伙伴发的文章targetSdkVersion 更改的问题,这文章标题起的,能起的明显点吗,我查找问题根本不会找到这种文章。。

四、总结

平时有遇到的Bug问题,希望大家都能一起分享出来.

《Android安装失败(应用未安装,该软件包似乎已损坏)》

    原文作者:卜俊文
    原文地址: https://www.jianshu.com/p/f8bf29393cfa
    本文转自网络文章,转载此文章仅为分享知识,如有侵权,请联系博主进行删除。
点赞