簡單 Small Bug 可導致 Android Oreo Boot Loops, 需要 Factory Reset

Android Oreo Bootloops

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

發佈留言