Swipe for Facebook App 的开发人员,在更新 App 时偶然发现 Android 8 Oreo 系统内一个简单 Bug,足以让装置 Bootloop,需要 Factory Reset。
Circular Reference 引致 System UI Crash
这个 Bug 是涉及 Android Oreo Adaptive Icons 部份。若果 App 开发时,在设定 foreground asset 跟 xml 档案同一名字时,例如:ic_launcher_main.xml 而内里
<foreground android:drawable=”@mipmap/ic_launcher_main”/> 亦同样是 ic_launcher_main.png 档案名称。这样就会造成 Circular Reference 自我循环参照。
若果这个有问题的 App 安装在手机内,SystemUI 就会因为这个 Circular Reference 而出现 Crashing,不能进入 Launcher,跟着就会重新启动装置,造成 Bootloop 情况。
the infinite bootloop does not even require you open the app, but simply have the app INSTALLED.
用家不需启动问题 App,只要安装有问题的 App 就会造成 Bootloop。虽然只要将问题 App Uninstall 就可以解决 Bootloop 情况,但由于不断 Bootloop 无法进入手机界面,所以难以 Uninstall。唯一方法是在装置 Reboot 前一瞬间,以 adb 方法连接进行 Uninstall,但 Adb 先决条件是手机装置已启动 USB Debug Mode,若装置未有启动 USB Debug Mode 就没有办法。用家只可以透过 Factory Reset 将装置重设才可解决 Bootloop。
Swipe for Facebook App 最近推出更新,放上 Play Store 让用家更新,但不少用家出现 Bootloops 情况,因而找出这个 Circular Reference Bug。他们已经在 Issue Tracker 向 Google 方面汇报这个系统错误。Google 方面已知悉情况,并已经准备修正这问题。
this can happen to ANY app, and simply having the app on your phone (via an install or even an update) can brick your phone, requiring a factory reset – unless you have USB debugging on so that you can run ADB.
这个问题,用家可以说是避无可避。因为只要安装又或更新 App,而 App 内又有这个 Circular Reference 情况就会导致 System UI Crashing。用家唯一可以做,就是出事时靠 adb uninstall。
Source: Reddit