前情提要:

上一版本测试过可以自动下载 APK,然后打开安装界面。
现在却能检查到更新(log有显示),但是却不能打开安装界面,莫名其妙……

  1. E/CrashReport: install failed, contentUri is null!
  2. E/CrashReport: upgrade failed:(2080)安装失败,请检查您的App是否兼容7.0设备

官网看了下,没发现这个错误码……

度娘搜了一遍,看到些文章,如是说:

问题是: 7.0 以上 Bugly 使用了 android.support.v4.content.FileProvider 来做升级,但是它是以反射的方式使用的: [app][Bugly](2080)安装失败,请检查您的App是否兼容7.0设备 - 图1 Bugly 对 FileProvider 的使用参见,他们开发的博客: http://blog.csdn.net/wwj_748/article/details/52664647 解决办法: 避免对 FileProvider 的混淆: -keep public class android.support.v4.content.FileProvider {*;}

真是混淆问题?

混淆配置是从官网来的,理论上不应该是这个问题,但还是检查了一遍:

  1. -dontwarn com.tencent.bugly.**
  2. -keep public class com.tencent.bugly.**{*;}
  3. -keep class android.support.**{*;}

可以看到,实际已经保留了 support 下的所有内容,因此不可能是混淆问题。
再者,上个版本也是这个配置,却能升级,这也能说明不是混淆问题!

没有导入v4包?

Bugly 官网在 SDK 导入部分,如是说:

FileProvider 类是在 support-v4 包中的,检查你的工程是否引入该类库。

检查了,确实没导入 support-v4 包,那么是这个问题吗?
当然不是!理由同上——上个版本正常!

路径问题

Bugly 官网对 FileProvider 的说明中有这么一段:[app][Bugly](2080)安装失败,请检查您的App是否兼容7.0设备 - 图2
看到这里的时候,我就知道问题出在哪了——这版刚改了下载路径……

PS:为什么改下载路径? 我们自己定义了一个 APP 的目录,想把 APP 的各种文件归总起来,而且之前另一个项目也改过,没出问题(当时是自己处理的安装流程),所以根本没多想就改了。

知道问题在哪了,就好办了。把安装路径改回去之后,测试OK了。