缘起

把手机OTA升级到Android 5.0(Android L)以后安装某打车软件失败,尝试了几次结果一样。

探究竟

最开始想到是软件和5.0的适配兼容问题,查下Log吧。

首先通过 adb logcat 监测log,然后重新尝试安装,没有发现特别醒目的信息。

然后通过adb install xxx.apk的方式安装,得到以下错误提示:

Failure [INSTALL_FAILED_DUPLICATE_PERMISSION perm=android.permission.BAIDU_LOCATION_SERVICE pkg=com.bmcc.ms.ui]

大意:声明的权限重复,列出了包名。简单查询,得知是“中国移动的客户端”,用处不大,先卸载之,然后成功安装。

但是我们并没有解决根本的问题,这应该是Android 5.0加强权限控制导致的。继续Google,得到确切的原因:

正要安装的App的自定义权限与手机上已有App的自定义权限名字相同,但两个App具有不同的签名信息导致安装失败。

这样来看,是App开发者的问题,普通用户能做的只有2选1,甚至N选1。只能安装一个。。。

等待开发者升级应用不太现实,那接下来我们能做什么呢?

  1. 作为开发人员,可以将所有冲突的apk用相同的签名文件重新签名即可正常安装,解决燃眉之急
  2. 手机已Root的用户,用文件管理器等将apk文件复制到/data/app/目录下,重启手机即可(普通用户比较有效的方法)

额外赠送

这里暂时没有额外赠送,说说关于这个问题的理解吧。看到有些人说这是Android L的bug,其实不是这样的。问题正说明Android系统正在加强权限控制,规范开发者行为,对用户和Android生态圈来说都是好事。

参考文章

  1. Android5.0机型报错处理方法参考文档
  2. Stackoverflow