BitSyko is a group project mainly consisting of 3 Apps. Layers, Showcase and RomMate with a view to simplify things that are complicated and give an average user more control over his/her rooted lollipop and Marshmallow device.
Let's get the to the main app and straight to the point.
What is Layers?
What is Layers?
Layers is a extension of runtime resource overlay.
RRO is a framework created by sony for use as a way for them to create xperia themes but also for internal quick prototyping.
Why is root needed?
We use root to do this to provide a way for the android community can use regardless if they are on aosp or touchwiz or any other skin to provide versatility.
RRO was created for OEM use by making changes for them to create theme ecosystem that they could control, by using a location intended for pre-themed by OEMS, we are able to tap into the use of this system.
Why were changes needed on lollipop?
Our ability to theme resources were quite limited in lollipop since a lot of android linked back to the frameworks which we could not overlay with RRO so we had to make changes in AOSP source to provide a way to theme more.
Thankfully Google saw this inability also and has made changes in M so there will need to be less that needs to be modified for theming and better support natively.
By the nature of how RRO works, most resources are actually protected from malicious changes by RRO
Why does the community say Layers or RRO or RRO/Layers?
When we started the project, we didn't have a name for this system and we just called it how we were using it and it stuck.
RRO is the basic overlaying of resources
Layers is what can't be done with just RRO without resource changes
So what is a Layer?
A layer is what we call our themes. A Layers theme is a collection of overlays
Where are layers stored to be loaded?
Since RRO was developed for OEM use, we use a location of system/vendor/overlay to place our theme apks.
The package manager sees these apk at boots and verifies them and then uses a tool called idmap to link it into the system resource table
Is layers a theme engine
No, there is no engine in place with Layers, it uses native android code to work while theme engine was just naming by T-Mobile to market their theming system back on gingerbread phones.
Cyanogenmod has stuck with that naming and are way closer to it then what Layers is
So how does it work?
What a overlay does is that it looks for a string in the the resources and replaces it during loading into the system.
For a way better and more in depth explanation see sony's blog post about how rro works
Why is a reboot needed?
Since RRO hooks into the resource look up framework of android, the system only looks at these resources upon intial start of a process, service or app so a restart of it is needed which is why a reboot of something that changes the framework or system ui needs to be retarted to remove or load a new resource.
Is RRO insecure
When sony says this in their blog, it is greatly exaggerated.
Just like how Layers had to make changes in the source just to move the resources to locations that can be overlaid with RRO, the actual limits of overlaying a running system come into play. Not that many files can actually be overlaid because they make calls back to other resources that are not present in a overlay.
Trying to overlay these files will end up in a bootloop upon booting because it will not be able to link the resource.
Rumours of this insecurity have been greatly exaggerated by others yet never showed any actual proof of this happening in the actual OS or apps out there.
In Sony's case, their example app was coded in exactly a way to show off how it could work but not how it does in existing apps out there in practice
So reading sony's blog says that it is more then theming?
It absolutely is just for more then theming and the usage of just for theming means that it has been left untapped for other uses.
Theming is just the large market demand in the android community so that is what the primary focus has been.
I was planning to use it for different purpose before it was realized for it's use for theming.
There were also limits everywhere that I tried to change with RRO that would require lot of changes in the source code to do much beyond theming.
Why can't cmte and Layers co-exist?
While they both use RRO as the base of how they theme, CM takes the code of RRO and repurposes it for the cmte for system apps creating a conflict of use.
Cmte works towards providing a whole complete package with everything running through the asset manager.
Layers sticks as close to the stock RRO and only changes what needs to be changed to provide a function yet still be used in stock android or other skins with minimal modifications to just resources
How long as RRO existed?
RRO has been in android* and open source since the gingerbread days.
It was a fancy symlinking system back in those days and evolved over the next few years to what we use today for better performance.
The ability of being able to overlay* apps outside of the framework and multiple apps has existed since 2012 in unmerged commits on the aosp gerrit.
So why did nobody think of using this before for theming?
Cm realized it and rebased to it (did not realize this before because of giant squashed commits) but beyond sony and recently a few other oems, nobody even noticed it before or saw potential in it.
Why is there no boot animations, ringtones, wallpapers, fonts with rro like cmte?
These are going to be in a separate app called RomMate that is in current development because they do not use RRO as their method of use.
Why is there no icon packs for layers?
This is in current development
What is the future for layers?
We are currently at the beginning of overhauling our system to provide maximum capapbility with all oem roms for marshmallow.
We are also working on providing a new way to provide large modularity in themes to provide a plethora of options for the user while making it easier on the themer/designer.
Why are you writing this now?
Tired of a outdated post with inaccurate info by me because I did not dive deep enough into cmte's code being posted everywhere when someone asks what layers is plus so people can link to it.
How do i get started with Layers?
First you need to be sure if your ROM supports Layers, It does? Okay.
1) You can join the BitSyko Development Community.
3) Download the https://play.google.com/store/apps/d...dlayersmanager Layers app on to your device.
4) Open the Layers app so it can initialize and create the required folders.
5) Check out and find a layer you want on the community or use the Showcase app to find new themes
Fixing bootloops caused by a incompatible/bad layer from TWRP.
Step 1: Go to Advanced.
Step 2: Go to file manager.
Step 3: Go to /system/vendor/overlay/ and remove the bad overlay apk.
GitHub :- https://github.com/BitSyko
BitSyko, App for all devices (see above for details)
sykopompos, bitstra, CallMeAldy, @bgill55
Beta Release Date: 2015-01-24
Last Updated 2015-08-22