We can use third-party launchers to theme our home screens. We can theme our most-used apps to get rid of that searing white and spice things up with some color. We can do so many things to customize Android and make it our own, but theming the Android system itself requires one of two things: a phone with a robust theming engine like the Samsung Galaxy S8 or root.
Theming Android at the system level is intoxicating, but most people don't have the patience, practice, or prowess to invest in root theming. Even I don't bother with the hassle of root theming, and I'm a girl who will spend hours dialing in custom icons and widget colors on her home screen. System theming isn't worth root tinkering, but soon, root might not be required to theme Android.
Here's why we think there's a light at the end of this long, custom-skinned tunnel.
The RRO Framework: Thanks, Sony
The groundwork for native theming on Android began years ago. Sony contributed the Runtime Resource Overlay framework to AOSP back in 2014 and implemented it on many of its devices to allow users to theme the Android system and apps on its Sony phones via Xperia Themes. RRO allows you to skin Android apps without modifying their source code, enabling users to change the way all apps on their phones looked without going to much trouble or breaking apps on their phones.
RRO was first discovered as developers dug through the Android M Developer Preview. You may remember Android M as the first year that Google taunted us with a dark theme during the Developer Preview, then pulled it before the stable release, and that had to do with Android testing out the RRO Theme Engine it had incorporated. The next year, the dark theme returned with the Android N Developer Preview, and again, it was pulled before Android Nougat pushed to stable in the fall.
This year, we got the Android O Developer Preview, but we did not get our experimental dark theme back. Instead, as developers went digging for easter eggs and other hidden goodies, they stumbled on the first instances of RRO themes being used by the Android system.
So what changed this year?
In the earlier Android O Developer Previews, there was a setting under Display called Device Theme, where you could choose between Pixel and Inverted themes, with Inverted being the default. The problem was, as with previous years' theme settings, this was very limited in scope, only changing the Quick Settings shade from Inverted's brain matter gray back to a darker tone. And, as with previous years, the Device Theme setting was pulled from the Android O Developer Preview 4.
Googlers have been testing and pulling these dark themes based on the RRO Theme Engine for years via the Developer Previews and Beta program, but this May, developers, bloggers, and theming nerds all started getting their hopes up again. That's because, this year, enterprising code-diggers found that those two themes were indeed RRO themes, proving that Google hasn't given up the ghost on system-wide themes on its version of Android. The now-pulled Device Theme setting was the interface that allowed users to tap into the RRO Theme Engine and select a (mostly useless) theme, and it was a means to use an RRO theme without root, and it was the last major technical piece of the puzzle.
Substratum and Android Oreo
Substratum is the theming engine built on Sony's successor to RRO themes, OMS, and with each year, Substratum has gotten a step closer to bringing their amazing themes to unrooted phones. For instance, some Samsung devices can use Substratum themes without root right now thanks to how they implemented RRO themes for Samsung Themes. This year, Substratum saw the progress made in the Developer Preview, and now that Android Oreo is here, they're bringing system themes to unrooted phones, possibly as early as next week. Now, it's not going to be free, and it's not going to be perfect, as it still requires a desktop app to help initiate some elevated privileges shenanigans in order to apply and implement a Substratum theme.
But it is going to be unrooted theming. And that is huge.
I'm going to beg for an official dark theme until Google gives it back to me, especially in apps like Google Play Music. At the same time, I accept how hard it is to theme things consistently when Android is so customizable and diverse as it is. Google's Engineering Team outlined as much in a Reddit AMA.
Android is still missing proper APIs to ensure theming is consistent across devices and apps. Without those APIs, there's no real way to make sure that what these themes are doing isn't breaking apps left and right. Even for Google's own dark theme in Developer Previews, they ran into trouble theming Android's core apps, and Google has to achieve consistency across millions of apps on thousands of different device models.
Update August 2017: With the Oreo release and more news on Substratum.