转-android-5.0 安装应用失败

自 从google开放了Android L的下载后,很多人为了尝鲜,刷入了这个并不完善的新系统.毕竟是预览版,难免存在各种各样的问题,如保留数据刷入导致通知栏无法下拉,按home键不能 回到桌面,sdcard无法读取等等.但是相比程序安装来说这都不是问题,因为前面的可以通过wipe解决,一劳永逸,而后者却会一直存在.
c.tieba.baidu.com/p/3237226241

刷 了Android L之后,有一部分软件无法正常安装,多表现为 同一家公司开发的软件只能安装一个或者一部分,并且基本上安装的时候都可以在底部看到了非android自带的权限, 于是有人猜测是不是它们相互唤醒的原因,其实仔细一想好像也不对,看看谷歌的一堆app就知道了.

通过实验,发现这些apk有一个或多个相同的自定义权限,但是签名不一致,因而无法正常安装,
并不是什么防止相互唤醒之类的,这应该是Android L的新规则,

碰到这类无法安装问题的解决办法有两个
1 (无需root)将所有冲突的apk用相同的签名文件重新签名即可正常安装.
2 (需要root,这应该是目前大多数人在用的办法)用rootexplorer或es文件管理器等将apk文件复制到/data/app/目录下,然后重启

顺便提一下,如果Android L单纯恢复efs电信3g无法正常使用的话,可以尝试讲efs和cache一起恢复.

=================================过程=====================================

下面以百度贴吧和百度输入法为例说明(这是推测的过程,不是什么严谨的证明,不用过分纠结,有些地方省略),看不懂也没关系,知道上面的解决办法就好了

1. 在手机端安装什么也看不到,只会显示安装失败,为了查找原因,我使用adb通过命令行安装,这样能知道问题出在哪.
首先安装贴吧,没什么问题, 然后安装输入法,问题来了,看绿色框, 提示安装失败因为权限重复(INSTALL_FAILED_DUPLICATE_PERMISSION), 具体的权限是”com.baidu.permission.SHARE”,包名是”com.baidu.tieba”,也就是已经安装的贴吧.

是不是安装顺序的问题呢,把贴吧卸载,先安装输入法,这次轮到贴吧装不上了,

2. 看看输入法里定义了什么权限,在底下的绿色框可以看到,输入法的确存在”com.baidu.permission.SHARE”这样的permission

再看贴吧,说明一下,因为贴吧要求的权限太多,没法一次完整截屏,只截取了开始和结束的部分,
这里同样存在”com.baidu.permission.SHARE”

3. 到底是不是因为permission相同的原因导致只能安装一个呢,还是弄两个程序验证下吧. 用android studio新建两个项目,在两个项目里都定义了相同的permission,神奇的事情来了,居然两个都安装成功了,难道不是permission相同 造成的?

这两者的区别在哪,还有一个地方没注意到,看每个app的最后一行信息,那一长串字符代表的是证书指纹,这里用的是md5, 可以看到 贴吧和输入法的的证书指纹是不一样的,而我创建的两个app使用的是相同的签名文件,所以md5是一样的,在这里又可以推测: 证书指纹相同的情况下,定义了相同permission的程序可以共存

4. 最后来验证一下上面的猜测,给贴吧和输入法用同一个文件重新签名试试,这样两者就有了相同的签名.
用 rar 打开 apk文件, 删掉META-INF文件夹,通过命令行重新签名,两个都安装成功. 这也证实了前面的推测:如果两个apk定义了相同的permission,正常安装的条件之一是两者的签名相同