最近在华为手机上发现一个奇葩的问题,现象描述:
点击头像选择拍照,动态授予拍照、存储权限后进行拍照,结束后点击✔️,应用崩溃重启。
然后麻溜的打开日志查看崩溃然而找了半天,啥问题都找不到,这就尴尬了。最近需求修改也就是裁剪这一块内容,于是还原代码重新重新跑,还是一样的问题,那就意味着线上老版本应该就有这个问题了,并不是我这一期需求的bug,为了确认老版本bug,于是拉个老版本分支跑,果然有问题,那就排除了这一期代码的问题了,然后就拉着同事一块找问题啊,毕竟这个bug每次都要清空app数据才能复现,而且复现完一次之后就一切恢复正常了,这么奇葩的问题,为了赶着上线,不得不拉着同事一起查问题。
在一番番尝试后,无果,大家都觉得太奇葩了,没有任何的异常日志,而且bug只在第一次安装才会出现,然后就正常了。实在没辙了,于是我尝试打断点方式一步一步跟进,当我打开断点点击拍照进入到华为系统拍照页面的一刹那,android studio中进程丢失了,什么?进程没了,那不就是app被杀了吗,谁杀的?调用系统拍照页面,怎么就杀我app,于是打开手机中其他app,同样清空数据,点击拍照,正常,那是我程序出的问题吗,突然同事提示会不会是系统权限的更改,导致app的重启,因为一般在设置页禁止一些权限后,app会重启,但是我们动态申请的权限都允许了,不应该给我重启应用吧,于是清掉数据,进入app之后,打开系统设置页,打开拍照权限,然后重新回到app,完蛋,重启了,这么一看,这就是华为系统的bug啊,但是为啥其他应用没这个问题呢,发现该应用在启动页就已经申请了拍照和存储权限,而我们是拍照时候才第一次动态申请,就这点差别,于是猜想,该手机上app,只要申请过一次,不管接受还是拒绝,都不会导致应用的重启,测试了一下,果然是这样,哎,华为系统真的是太坑了。
解决方案:
启动页增加拍照、存储权限的获取