华为手机提示更新包与已安装应用的签名不一致

华为手机提示更新包与已安装应用的签名不一致

最近使用华为手机(HUAWEI Mate 20)调试程序,发现一个问题。直接使用AndroidStudio安装的时候很顺利,没有出现错误。后来我需要看一下release版的效果,就把之前安装的程序卸载了,手动安装release版的程序,发现安装失败。提示更新包与已安装应用的签名不一致,可是我已经把之前安装的版本卸载了,根本没有已安装的应用啊,而且之前用其他品牌的手机也没遇到过这样的问题啊。
《华为手机提示更新包与已安装应用的签名不一致》

自己尝试解决

首先我先按照手机给出的处理建议来看一下能不能解决。第一条:卸载当前已安装版本再重装不可行,因为我已经卸载了,没有已安装版本;第二条:说针对Android6.0以上的版本,要到”设置”>“应用管理”里面去卸载。我的手机是华为Mate20,在”应用管理”里面根本找不到我这个应用,所以也就没法点击”为所有用户卸载”。两个方法都行不通,我怀疑是不是卸载之后还有缓存,导致安装不上。因此我就试着重启手机试一下,结果还是安装失败。

网上寻找解决方案

无奈之下只有上网百度。看能不能找到解决方案。后来果真让我找到一个可行的办法,附上原文链接。原因是应用卸载不彻底,给出的解决方法是利用adb工具进行彻底卸载,删除和原应用相关的东西。

1、配置adb

adb是Android SDK自带的一个工具,目录一般为:sdk安装目录>platform-tools>adb.exe.直接在dos下运行adb命令可能会提示’adb’ 不是内部或外部命令,也不是可运行的程序或批处理文件。那是因为我们没有把运行目录设置到adb.exe所在的文件夹,这也是我们为什么一般将adb.exe的路径加到系统的环境变量当中的原因。
《华为手机提示更新包与已安装应用的签名不一致》
添加之后在任何目录下都能访问adb.exe。配置好adb之后,在cmd下运行输入adb,回车之后如果出现如下的adb的版本信息,则说明环境变量已经配置好了,可以正常使用。
《华为手机提示更新包与已安装应用的签名不一致》

2、查看APK的包名

可以从AndroidStudio下你的项目的模块级的build.gradle下查看,

apply plugin: 'com.android.application'

android { 
    compileSdkVersion 28

    defaultConfig { 
        applicationId "com.markton.spacertk"
        minSdkVersion 19
        targetSdkVersion 28
        versionCode 10
        versionName "1.3.3"
        multiDexEnabled true
    }
}

这里的applicationId就是你的应用包名。
当然,如果你只有一个安装包,怎么知道查看你的包名呢?可以直接在手机上使用腾讯GT调试工具查看。下载地址
《华为手机提示更新包与已安装应用的签名不一致》
另外还有一种稍微麻烦一点的办法,那就是使用aapt工具。aapt工具也是Android SDK自带的工具,目录位于:sdk安装目录>build-tools>29.0.1(平台版本号,一般为数字)>aapt.exe.同样可以和adb一样添加环境变量。
运行如下命令可以查看应用包名:

aapt dump badging <file_path.apk>

例如,我的安装包放在F盘的data目录下,那么就是:

aapt dump badging F:\data\SpaceRTK.apk

《华为手机提示更新包与已安装应用的签名不一致》
使用aapt工具不仅可以查看应用包名,而且可以查看应用的其他一些信息,比如版本号,版本名称、应用权限等等。

3、彻底卸载原有应用信息

首先把手机用数据线和电脑相连,同时打开开发人员选项按钮,运行USB调试,然后在cmd下执行卸载命令:

adb uninstall apk的包名

这里apk的包名就是你的应用的APK的包名。出现提示Success即说明卸载成功。
《华为手机提示更新包与已安装应用的签名不一致》
此时再次运行安装包就可以成功。
《华为手机提示更新包与已安装应用的签名不一致》

新的思考

安装成功之后,我又卸载了,然后重新安装release版本,此时也可以安装成功。说明只要签名对的上,就是上次没有卸载干净也没有关系。
然后我又试着用AndroidStudio直接安装,这时候安装的是debug版本的,当然,由于debug版和release版的签名不同,AS会提示你要卸载已安装的版本。卸载之后发现竟然直接安装成功,都不需要像之前一样用adb清除卸载残余。
《华为手机提示更新包与已安装应用的签名不一致》
所以我猜测华为手机可能对于debug版本的安装包不会检查你的签名信息,而对于release版的安装包,则会检查,如果发现和之前安装的不一致,则禁止安装,除非将之前的安装包信息彻底删除。
我还发现一个问题,那就是并不是所有的华为手机都会遇到文章开头提到的安装失败问题。我自己是华为mate20,有这个问题,我拿别人的华为mate9测试,则不会有这个问题,卸载之后直接就安装成功了,很奇怪。

第一次写博客,花了挺长时间,希望能够给遇到类似问题的朋友一点帮助。

参考博客:
安卓APP应用签名不一致无法安装的解决方案
adb与aapt获取安卓手机app的versionCode

    原文作者:爱学习的小码农
    原文地址: https://blog.csdn.net/qq_35283253/article/details/99682695
    本文转自网络文章,转载此文章仅为分享知识,如有侵权,请联系博主进行删除。
点赞