Although we would love for everyone (users and themers) to read the whole non-TLDR edition of this post, we had to write a TLDR for this to summarize everything.
- Layers manager being deprecated after dev/themer beta of substratum.
- Layers themes will shift to compile-on-device format or will not work with substratum (Layers deprecation means no further updates will be pushed to the app such as bug fixes/ROM updates).
(This is because people try to use themes not updated in 2 years on the newest Android and cry about their device not being stable)
From the former Layers team and the newly formed Substratum team, written with love by +Syko Pompos
and +Nicholas Chum
Been getting a lot of questions about substratum and layers lately so figured make a post answering them.
What is OMS? OMS stands for Overlay Manager Service and was developed by Sony, just like RRO - so overlays could be downloaded and managed through a client.
However, with the introduction of OMS, it uses the concept of a client to interact with the services and providers directly to dynamically control priorities and enabling/disabling overlays (of which only themers had full control in Layers)
With the introduction of Substratum, overlays are downloaded, compiled, signed and installed just like third party apps installed to data/app. Once installed, they create a idmap file that creates the linkage, and if enabled, tells the system to refresh its resources and load the new ones in. A notification will notify the user that a new theme is able to be used, and that the package has been installed (“Beltz has been installed”)
Substratum is a client for OMS (a client doesn't need root if it has system permissions so substratum app built inline would not need root, however we want to make this app available to the majority as an OPTION, rather than requirement), that goes beyond just OMS and adds some improvements.
With Substratum we are going on a full compile on device system like CMTE, but to provide us with more abilities to make things easier for theme designers and users both.Benefits of compile on device:
- Instead of a ton of different overlays needed to be created and layering overlays on top of each other, we can inject the change that the user wants with options that the designer gave to only have one overlay being created.
- We can maintain backwards compatibility across Android releases so a theme made for Marshmallow would still work for N and vice versa because it would convert the resources to what is needed by version the user is on. (e.g. dashboard_category_background -> N’s version of dashboard_category_background, as we WILL set v23 as the base API to build themes on)
- Will warn the user when a theme is outdated and horribly outdated which might cause it to be unstable but will try to convert it up to the latest. If the theme is outdated, a warning will be shown to the user that they are about to apply a theme built for an old Substratum build, and if they would like to continue, they do so at their own discretion without dragging the system’s name down. This is also an attention to ROM developers to keep up with commits posted under the Layers Development community (OMS commit review, or a universal OMS GitHub repository with up to date commits) so we hope the community would collaborate with us to make the system more advanced instead of having several forks of the same thing.
- The structure of the themes will be more similar to cmte making it more comfortable for themers to exist on both systems.
- During compilation, as this may take some time, you may suspend the app and switch to your other apps and continue your work. A notification will pop up at the end of the compilation informing you that the overlays have been successfully compiled, so that you may enable them either one by one or a batch enable.
- Anti-piracy features can be implemented for themes (seriously, people pirate $1 themes, wtf), however to put it simply (before the official release), it takes certain measures to make sure overlays created by Substratum will not be able to be used on other devices, and if it is detected, it will be removed as a “dangerous/unauthorized overlay” installed on your device (95% success at this alpha stage).
- Brand new interactive UI to make it a lot easier to use.
- We will be locking out vendor/overlay on Custom ROMs running on the OMS system, as it is unreliable and functions almost exactly the same as OMS, with more limitations.
- Profiling system that allows you to save your set up for quick changing and allowing you to create your perfect set up (as long as you have your overlays installed and verified by Substratum (checked automatically)) - WIP (Day/Night function soon?)
Layers manager will be deprecated in favor of Substratum and the compile on device system once it is out of dev/themer beta, it will not have support for premade overlays and will only work with compile on device themes
(It is very easy to convert over without any use of plugins and such, just a manifest tweak!)
The main difference between the legacy Layers system and Substratum OMS, is that the priorities system has changed, and the highest priority for non-system based apps (non vendor/overlay overlays) will be on the bottom of the list as it simulates (0-255), where 0 is the highest and 255 is the lowest, so in our Priorities section, the top item is the lowest object in the list. Check this video for a demonstration: https://plus.google.com/u/0/+NicholasChumCDT/posts/96A9sCj5HNY
Substratum is being specifically designed for Roms as a new system built on top of Layers.
Which means it will be eventually getting all the bells and whistles of an integrated theme system but also is open to rom specific features.
Substratum themes are meant specifically for Custom ROMs and for taking advantage of features brought in by it.
The OMS system with the Substratum engine makes this a full featured theming engine, based on RRO, but with the perks of no rebooting and on the fly, dynamic changes on the user interface and can completely be added to any AOSP/CAF ROM in a matter of 10-15 minutes (no squash commits needed!).
Substratum will be entering dev/themer beta soon and is subject to change based on feedback including commits for Roms.
Layers compile on device themes will be able to be used on Substratum Roms and also on stock but substratum themes will not be usable on stock/non substratum roms. However we will be considering keeping traditional Layers to their own corresponding features brought to you by Layers Manager back in the day, while Substratum will hold all the new features the team will bringup.
Themes for substratum should be for testing till out of beta so a separate play store listing won't be needed or having huge themes to support both layers and substratum.
Compiling and installing new overlays (or updating components that have changed) is rather slow (not as instant as just copying and pasting prebuilt APKs to vendor/overlay on Layers Manager) currently because of how long the signing and installing process takes (will work with rom devs for options to speed this process up) but once the themes are installed, you can swap themes or individual overlays, play with priorities in seconds