不得不说这问题让我苦恼了好长时间,应用升级时,在6.0的手机上出现了升级失败,出现“应用未安装”问题,找了几个大神问了下都没见过这问题,都说出现这种问题的都是因为“应用的签名不一致”,可是明明签名是一致的,因为只有部分手机出现这种情况,而且这种情况出现在6.0的手机上,我也特意出对比了两个应用的签名,发现签名是一致的,查看应用签名的方法有很多,我这里说一种:
查看应用签名:
- 解压打包的apk文件(压缩软件不能直接解压的把文件改成zip等格式就行)
- 取出META-INF文件中的一个RSA文件(默认是CERT.RSA文件,经过加固软件加固之后的RSA文件文件名可能会改变,但META-INF文件夹中只有这一个RSA文件的,取出来即可)
-
使用java命令查看签名(keytool -printcert -file CERT.RSA)
对比签名之后发现前后两个应用的签名是一样的,所以可以排除不是签名问题。
既然签名是一样的,那会不会是“versionCode”比原来的小呢,检查之后发现我应用本身的Module的versionCode也没有问题,比前一个版本的versionCode大。纠结好久之后,突然想到我没有查看导入的library库中versionCode,检查之后确实是library库中的Manifest文件中有versionCode,一直是1,一直都没有更改,去掉Manifest文件中的versionCode之后打包测试升级发现应用果然能正常升级了。说白了是我自己学艺不精造的孽啊。
“应用未安装”解决方案:
<u>
- 检查签名和包名是否一致
- 检查Module中Manifest文件中的versionCode是否增大了
- 如果自身的Module中的Manifest和build.gradle文件中versionCode都没问题的话,那就检查导入的Module的versionCode是不是有问题吧</u>