最近维护一个老项目,项目的 targetSdkVersion 为 26,实在是太老了,应用市场都快不能发布了,所以不得不进行升级。最后将 targetSdkVersion 升级为 30 了,经过测试一切都没问题就上线了。
上线后,突然收到客服反馈,有零星用户反馈自己的 APP 在升级之后,在桌面打不开 APP 了,然后报告手机型号是华为手机,系统版本号是 8.0.0,经过调查发现这是17年前后的手机了,算是比较老旧的手机了,我们手上也没这样的测试机了,当时认定是手机太老了,内存不足打开应用太缓慢的缘故。后来陆续有人反馈同样的问题,统计后发现都是华为 8.0.0 系统的手机,于是通过云测平台找了若干华为 8.0.0 系统的手机,发现确实是打不开,因为即便手机卡顿,也不可能点了没任何反应。
就在毫无头绪的时候,突然想起有一次 sdk 升级之后,有一个配置了 windowIsTranslucent =true
属性的 Dialog 频繁报闪退信息,于是查看了一下项目 application 的 theme 配置,果不其然,有下面这个配置:
<item name="android:windowIsTranslucent">true</item>
去掉这个属性或者设置成 false 之后,再在同样的手机上测试,发现没问题了。后来经过云测,发现只有华为 8.0.0 系统上会出现问题,我们对 application 的 theme 配置了这个属性,所以 app 连首页都进不去,同样的如果某个 Dialog 配置了这个属性,那么该弹窗同样打不开。
不知道为什么华为 8.0.0 系统上会有这个问题,也许可能是系统 bug,找了下资料华为当初好像很快就发布了 8.0.1 新版本修复了这个问题。但是对于极少数存量手机,如果用户不升级手机系统,该问题依旧会存在。