前情提要:
上一版本测试过可以自动下载 APK,然后打开安装界面。
现在却能检查到更新(log有显示),但是却不能打开安装界面,莫名其妙……
E/CrashReport: install failed, contentUri is null!
E/CrashReport: upgrade failed:(2080)安装失败,请检查您的App是否兼容7.0设备
官网看了下,没发现这个错误码……
度娘搜了一遍,看到些文章,如是说:
问题是: 7.0 以上 Bugly 使用了
android.support.v4.content.FileProvider
来做升级,但是它是以反射的方式使用的:Bugly 对
FileProvider
的使用参见,他们开发的博客: http://blog.csdn.net/wwj_748/article/details/52664647 解决办法: 避免对FileProvider
的混淆:-keep public class android.support.v4.content.FileProvider {*;}
真是混淆问题?
混淆配置是从官网来的,理论上不应该是这个问题,但还是检查了一遍:
-dontwarn com.tencent.bugly.**
-keep public class com.tencent.bugly.**{*;}
-keep class android.support.**{*;}
可以看到,实际已经保留了 support
下的所有内容,因此不可能是混淆问题。
再者,上个版本也是这个配置,却能升级,这也能说明不是混淆问题!
没有导入v4包?
Bugly 官网在 SDK 导入部分,如是说:
FileProvider
类是在support-v4
包中的,检查你的工程是否引入该类库。
检查了,确实没导入 support-v4
包,那么是这个问题吗?
当然不是!理由同上——上个版本正常!
路径问题
Bugly 官网对 FileProvider
的说明中有这么一段:
看到这里的时候,我就知道问题出在哪了——这版刚改了下载路径……
PS:为什么改下载路径? 我们自己定义了一个 APP 的目录,想把 APP 的各种文件归总起来,而且之前另一个项目也改过,没出问题(当时是自己处理的安装流程),所以根本没多想就改了。
知道问题在哪了,就好办了。把安装路径改回去之后,测试OK了。