android 5.0 的设备安装过程中会产生错误码“INSTALL_FAILED_DUPLICATE_PERMISSION ”
分类:软件问题| 发布:佚名| 查看: | 发表时间:2015/8/24
android 5.0 的设备安装过程中会产生错误码“INSTALL_FAILED_DUPLICATE_PERMISSION ”
出错原因:测试应用自定义权限与手机上已有应用自定义权限有相同记录,同时两个应用具有不同的签名信息导致安装失败。
解决方法参考:
1 (无需root)将所有冲突的apk用相同的签名文件重新签名即可正常安装.
2 (需要root,这应该是目前大多数人在用的办法)用rootexplorer或es文件管理器等将apk文件复制到/data/app/目录下,然后重启
顺便提一下,如果Android L单纯恢复efs电信3g无法正常使用的话,可以尝试讲efs和cache一起恢复.
=================================过程=====================================
下面以百度贴吧和百度输入法为例说明(这是推测的过程,不是什么严谨的证明,不用过分纠结,有些地方省略),看不懂也没关系,知道上面的解决办法就好了
- 在手机端安装什么也看不到,只会显示安装失败,为了查找原因,我使用adb通过命令行安装,这样能知道问题出在哪.
首先安装贴吧,没什么问题, 然后安装输入法,问题来了,看绿色框, 提示安装失败因为权限重复(INSTALL_FAILED_DUPLICATE_PERMISSION), 具体的权限是"com.baidu.permission.SHARE",包名是"com.baidu.tieba",也就是已经安装的贴吧.
是不是安装顺序的问题呢,把贴吧卸载,先安装输入法,这次轮到贴吧装不上了,
- 看看输入法里定义了什么权限,在底下的绿色框可以看到,输入法的确存在"com.baidu.permission.SHARE"这样的permission
再看贴吧,说明一下,因为贴吧要求的权限太多,没法一次完整截屏,只截取了开始和结束的部分,
这里同样存在"com.baidu.permission.SHARE"
- 到底是不是因为permission相同的原因导致只能安装一个呢,还是弄两个程序验证下吧. 用android studio新建两个项目,在两个项目里都定义了相同的permission,神奇的事情来了,居然两个都安装成功了,难道不是permission相同造成的?
这两者的区别在哪,还有一个地方没注意到,看每个app的最后一行信息,那一长串字符代表的是证书指纹,这里用的是md5, 可以看到 贴吧和输入法的的证书指纹是不一样的,而我创建的两个app使用的是相同的签名文件,所以md5是一样的,在这里又可以推测: 证书指纹相同的情况下,定义了相同permission的程序可以共存
- 最后来验证一下上面的猜测,给贴吧和输入法用同一个文件重新签名试试,这样两者就有了相同的签名.
用 rar 打开 apk文件, 删掉META-INF文件夹,通过命令行重新签名,两个都安装成功. 这也证实了前面的推测:如果两个apk定义了相同的permission,正常安装的条件之一是两者的签名相同