Adaptive icons bug

A bug in the “Adaptive Icons” feature released in Android Oreo has sent thousands of phones into endless boot loops, forcing some users to rest their devices to factory settings, causing users to lose data along the way.

The bug was spotted by Jcbsera, the developer of the Swipe for Facebook Android app and does not harm Android Oreo (8.0) in its default state. The Adaptive icons feature introduced on Oreo permits icon to change size or shape according to launcher used by the other user or the device is on.

For instance, the adaptive icons will appear in shapes like square, rounded, or circle depending on the active theme or launcher o the device.

The bug first came out open when the developer unintentionally renamed the font image of his adaptive icon with the same as this XML file – (ic_launcher_main.png and ic_launcher_main.xml).

Jcbsera did not catch the bug during development because he tested his apps new version only inside the Android emulator provided by the Android Studio application. The bug did not manifest in the same way in the emulator as on a real device.

It was only after the developer pushed the update to his users that he noticed and discovered the bug after users started flooding his Play Store page with crash complaints and bad reviews.

The developer mentioned, “ [The two files with the same name] created a circular reference, which Android Studio didn’t seem to pick up on”. he added, “What happened as a result was that SystemUI kept on crashing, as well as the phone’s launcher (Pixel Launcher, as well as other launchers that support Adaptive Icons), not letting people even get to their launcher – let alone go into Settings to uninstall my app, eventually leading the phone to restart and the same thing would happen over and over again, causing a boot loop”.

He also clarified that users did not require to open the app, just having the app installed on the device is enough for triggering the boot loop. The issue also opened the bug for abuse by Android ransomware developers,“The only solution was to uninstall the app via adb (if you were lucky to get in there in time before the phone restarted AND also have USB debugging enabled), but eventually you would get prompted by Android to do a factory reset, which to the dismay several thousand users of my app – had to do,” Jcbsera said.