welcome all current and prospective Layers themers!
Recently our team's efforts have been announced on XDA Portal regarding the official deprecation of Layers, in progress to be overridden by our new project, Substratum.
Read more here: http://www.xda-developers.com/layers-manager-is-being-deprecated-in-favor-of-substratum/
Today, I have started this thread to get our project organized and officially recorded down on a publicly visible location, with all our changes and feature set to clarify what our project is about.
What is Substratum?
Substratum is an application, downloadable from the Play Store, that utilizes all of Sony's Overlay Manager Service (OMS), found on the official AOSP code review. This is similar to Layers in terms of stability and customization as it runs off an upgraded version of the Resource Runtime Overlay system, with the added benefit of running up-to-date Sony code on a customized ROM.
What is Interfacer?
Theme Interfacer is, simply, a helper app, that gets prebuilt by Substratum supported ROMs, allowing Substratum to alleviate OMS tasks in the background without refreshing any assets. In technical terms, Interfacer is a service that loads OMS commands into the system directly, and while OMS itself refreshes resources and assets on runtime, it will refresh the caller's window, asking it to refresh resources and assets each time an overlay is loaded/unloaded from the system.
What about CMTE?
I would like to say here, that we aren't trying to compete with the CyanogenMod Theme Engine at all. Think of the Substratum project as a community-driven project where a chunk of the open-source community coming together to create something we wanted in the start.
We want to start from ground zero, without basing any code off of a huge chunk of code made by a corporation, but creating what we call "tweaks" as a built-in within our system (such as prebuilt accent choosing, theme customization based on user selection, infinite possibilities based on themers, etc.).
Substratum was built by and with themers in mind. OMS was created by Sony and is planned to be merged into the source, meaning that we are running what Android should be running, rather than completely modifying a framework from the base with many changes that can't be understood by the average ROM developer.
CMTE runs on the RRO2 system, which is the base of what Layers was running on. RRO2 is deprecated, and superseded by the OverlayManagerService (OMS) within Sony's code in the AOSP code review.
Final thing, instead of competing against CMTE, we sincerely thank them for providing CMTE as an open sourced project. We were able to filter out everything needed by understanding the Theme Engine completely from a low level standpoint.
Why is this better than Layers?
- No longer require soft or hard reboots when applying themes
- We can apply fonts without rebooting
- We can apply System sounds from a theme, such as lock/unlock/effect_tick sounds, to make your unlock sounds match your theme
- Does not use the vendor/overlays partition/folder anymore, to limit down possible security vulnerabilities and reflashing vendors constantly
- Active and consistent development based on upstream Sony code, as well as team code. Relying on the old system meant bringing up legacy code to newer versions of Android, even when we know the RRO2 system is being superseded already.
How is this different from Layers?
- Overlays are loaded at runtime (truly) when you launch an application. You may briefly see an original resources screen flicker when you open an app, and that is being worked on by the team. However, due to the nature of how OMS works, it truly brings runtime theming when you start applications, rather that bloating the system down trying to extend resources of applications you aren't currently using.
Would you like to contribute to the project?
If you would like to contribute to the project, you are free to do so by pushing commits directly to our Gerrit Code Server. Please do not push to our GitHub organizations directly as a pull request, as those will be ignored due to having all code run through a code reviewing system. For more info regarding contributions, please check out our contributing page from our documentation.
Source code: https://github.com/substratum/substratum
Team Substratum Developers:
@nicholaschum: Lead Substratum Developer
@sykopompos: Team Architect
@iskandar1023: Theme/App/Backend Engine Developer
@KreAch3R: Lead Experimental Developer
@Surge1223: Binary and Algorithm Developer
@MSF Jarvis: Platform and Feature Developer
@The Flash: Documentation, community and developer relations lead
@Char_G: Social media community organizer
Special thanks to:.
Mårten Kongstad (Sony Mobile)
Zoran Jovanovic (Sony Mobile)
Alan Viverette (Google)
Clark Scheff (CyanogenMod)
Andy Mast (CyanogenMod)
[projekt.] substratum, Device Specific App for the XDA Community Apps
nicholaschum, Sykopompos, iskandar1023, The Flash, KreAch3R, Surge1223, Char_G
Source Code: https://github.com/substratum
Current Stable Version: 983
Stable Release Date: 2018-04-19
Last Updated 2018-04-19