I ported the latest GB Cronos from Feeyo to the 32a Magic 6.35 radio. This rom uses carz's 2.6.34 kernel.
***Feeyo and carz have put in a lot of work for us....please let them know by donating here and here.***
How to install ROM:
1. Nand backup
2. Wipe cache and dalvik (try wiping dalvik only if coming from an earlier version of GB Cronos)
3. Flash GB rom (rapidshare, multiupload)
4. Flash gapps (rapidshare, multiupload)
5. Flash carz's oc kernel (if desired - see below)
6. Flash GPS fix (if needed for your location - see below)
7. Reboot
Kernels and GPS fixes:
You can flash these files from carz from recovery with no wipe
576 MHz oc kernel: (rapidshare, multiupload)
614 MHz oc kernel: (rapidshare, multiupload)
710 MHz oc kernel: (rapidshare, multiupload) (thanks to rps13)
Fix for GPS in Asia: GPS_AS.zip (rapidshare, multiupload)
Fix for GPS in Europe: GPS_EU.zip (rapidshare, multiupload)
Update Details:
-See 2nd post
Bugs:
-Youtube HQ buggy
-Lights/leds buggy
Working:
-USB tethering (with stock setting -> tethering works with Market apps)
-Games (you may have to move some of them to internal phone memory from SD card download optimized Angry Birds here)
-Camera
-Camcorder / video recording
-Gmail
-BT
-Wifi
-GPS
-USB connect
-3G/2G
-Phone calls
-Youtube
-Facebook sync
-Ap2sd
-Google voice search
-Smooth UI
-No FCs
-Root
-Most everything
-GB screen on/off animation
..To enable On/Off animations in this build:
..1. SpareParts: Enable both and put on Normal.
..2. Menu -> Settings -> Display -> Animation = Show All.
..3. CM Extra -> Display -> Rotate 180 = enable.
..4. CM Extra -> Display -> Rotate Screen On and Off = enable.
..This should work. If not reboot.
I've included Astro File Manager and Titanium Backup to make restoring apps easier.
CREDITS:
....Feeyo for this AOSP 2.3 GB rom with CM parts Link: HTC Hero Cronos Ginger
....carz12 for his work on the kernel Link:2.6.34-6355 kernel and 2.6.35-6355 kernel
....dsixda for his kitchen Link: [KITCHEN] Basic ROM kitchen for aspiring Magic cooks by dsixda
....ezterry, Firerat, and the CM Team
This rom is for the 32A Magic / Sapphire.
You need the new radio 6.35.10.18 or 6.35.16.19, SPL 1.76.2007 and recovery-RA-Magic32A-6.35-v1.6.2 or recovery-RA-hero-v1.6.2.img or recovery-RA-sapphire-v1.7.0H.img or recovery-RA-magic+-v2.0.0.1-seo.img.
It might work on with other recovery images, but I have not tested them.
If you do not know how to change your radio, SPL and recovery, click here at Cursor's post.
*NOTE*
I am not sure how much support I will provide for this rom.
I will try to update at a minimum whenever Feeyo release updates that will port over to our phones.
If you don't know what you're doing and have a question that is not specifically related to this rom, please search google, XDA, etc. first before you ask.
I am not responsible if you brick your phone. Nand backups are your friend
Optimized Angry Birds:
optimized Angry Birds link
Kernels and GPS fixes:
You can flash these files from carz from recovery with no wipe
576 MHz oc kernel: (rapidshare, multiupload)
614 MHz oc kernel: (rapidshare, multiupload)
710 MHz oc kernel: (rapidshare, multiupload) (thanks to rps13)
Fix for GPS in Asia: GPS_AS.zip (rapidshare, multiupload)
Fix for GPS in Europe: GPS_EU.zip (rapidshare, multiupload)
Updates (v2.3.0 - July 12, 2011):
-Download link for v2.3.0
MD5sum: 0bd33de6f0f6fcb59f58c09713f729f5
Updated to Feeyo's 2.3.0 Cronos build from July 12
For detailed change log see Feeyo's Cronos Forum
Updates (v2.2.4 - June 10, 2011):
-Download link for v2.2.4
MD5sum: cc02f88e7e998c134909ffd588ac5592
Updated to Feeyo's 2.2.4 Cronos build from June 8
Added CM Parts back
For detailed change log see Feeyo's Cronos Forum
Updates (v2.2.3 - June 4, 2011):
-Download link for v2.2.3
MD5sum: c131230e8be97c7ae82c3d3aa80179c7
Updated to Feeyo's 2.2.3 Cronos build from June 3
Removed CM Parts
For detailed change log see Feeyo's Cronos Forum
Updates (v2.1.0 - Apr 28, 2011):
-Download link for v2.1.0
MD5sum: 4d6623d2ea8796eb5f93114a1edbd9ef
Fixed/Updated (from original Hero Cronos rom, some of these items are only applicable to the kernel for the Hero and not the Sapphire...I am too lazy to figure out which are irrelevant to the Sapphire using carz's kernel so I included them here):
Updated to latest AOSP/CM sources
Reverted toolchain back to 4.4.3
3G/WiFi priority fixed
Added Cronos Wallpaper collections to default Launcher
Added more DalvikVM Heap jumps in CM Extra
Changed WiFi Policy to not disconnect while in sleep mode
Tweaked lowmemorykiller configurations in init.rc and hero.init.rc
Enabled android powertop support
Added VM dirty_writeback_centisecs
Better libsensors (Sensor Sensitivity)
Re-written a lot for liblights
Changed notifications alert blinks
Included Orriginal HTC Hero Battery Calculation
Tweaked GPS
Tweaked Brightness Stability
RGB Reverted
Included latest "Leaked" Music Player
Removed MIUI Camera
Added Default Camera
Tweaked Cronos Governor Configuration
Tweaked Kernel lowmemorykiller.c
Changed strict init.rc lowmemorykiller configuration
Will not kill as fast anymore
Better memory utilization
Updates (v2.0.1 - Apr 10, 2011):
Fixed/Updated (from original Hero Cronos rom):
Added Default Phone App with In call menu.
Repatched EGL.
This is an update patch only! No wipes of any kind needed.
Updates (v2.0.0 - Apr 9, 2011):
MD5sum: 70bb9d5edf8e84b243fd308577f4cc97
Fixed/Updated (from original Hero Cronos rom):
Resampler optimization routines properly patch.
TextView.setText memleak fixed.
SW renderer of Stagefright move on to draw stage after the initialization.
Fixed isValid() Software EGL Rendering seg fault.
Default WiFi sleep policy added.
Added sdcard tweaks.
Removed Default Camera.
Removed Default Music Player.
Added MIUI Camera.
Added MIUI Music Player.
Changed some compile optimizations.
Faster GUI Animations.
Updated to latest CM Extra. (By CM Team)
Integrated latest CM source updates. (By CM Team)
Updates (v1.9.5 - Mar 28, 2011):
Fixed/Updated (from original Hero Cronos rom):
TextView.setText memleak fixed
OOM Error encoding images
Fixed contact data updating
Updates (v1.9.4 - Mar 21, 2011):
Fixed/Updated (from original Hero Cronos rom):
21 Mar 2011 | Cronos Ginger 1.9.4
Fixed Launcher Menu (more) Replication Bug.
Bugs: Heavy Graphics Load System Crash. (Library Exception)
Updates (v1.9.3 - Mar 20, 2011):
Fixed/Updated (from original Hero Cronos rom):
20 Mar 2011 | Cronos Ginger 1.9.3
AccessibilityManagerService death notifications proper clean up.
Removed dead store : core/java/android/os/BatteryStats.java Patch2.
Improved shutdown speed.
revert PIXEL_FORMAT_RGB_565 (By Nadlabak)
Improved Camera preview format.
Gralloc Mem Leak Fix.
17 Mar 2011 | Cronos Ginger 1.9.2
Updated to latest source updates
Included New EVO kernel.
Added cifs module.
Compiled it deodexed now.
Changed some compile optimizations.
Bug fixes of DRM framework
Removed dead code with no other effect than consuming battery life.
float values equality checks : core/java/android/webkit/WebView.java.
Updated to latest CM Extra.
Removed dead store : core/java/android/os/BatteryStats.java
frameworks/base: Fix for force close during rapid FF of cetain midi clips
Runtime inclusion of services in the SystemServer with overlays
Fixed memory leak in PreferenceScreen.
Removed strict lowmemorykiller configuration.
Should be nicer to battery life.
Updates (v1.9.0 - Mar 13, 2011):
-Ported from Ginger Cronos 1.9.0
Fixed/Updated (from original Hero Cronos rom):
-Updated to latest sources
-Fixed Volume Key handling
-Added DSPManager again
-Patched libfreetype for better rendering of fonts
-Changed animation speeds to be a bit slower (Nicer to look at)
Updates (v1.8.0 - Mar 5, 2011):
-Ported from Ginger Cronos 1.8.0
-Changed GBRider Cronos version number to correspond to original Hero Cronos
Fixed/Updated (most from original Hero Cronos rom):
-Updated build to Android 2.3.3
-Fixed Battery Icon
-Fixed WiFi/3G Bug
-Unlocked Android 2.3 Audio effects for Music Player
-Removed DSPManager
-Patched libfreetype for better rendering of fonts
-CM Extra updated to latest version
-In call touch UI added back to Phone settings
Updates (v1.5.0 - Feb 23, 2011):
-Ported from Ginger Cronos 1.5.0
-Changed GBRider Cronos version number to correspond to original Hero Cronos
Fixed/Updated (most from original Hero Cronos rom):
-Fixed USB Tethering
-Smoother GUI
-Faster GUI
-Removed memory reservation for phone app
-Left green charge led activated on 90%
-Fixed: Charge low % bug
-Fixed: In call Lockscreen bug
-Fixed: AM/PM Lockscreen Bug
-Some changes to EGL again
-Youtube HQ works sometimes
-CM Extras fixed so no FC on any options
Updates (v2 - Feb 16, 2011):
-Ported from Ginger Cronos 1.3.0
Fixed/Updated:
-Google voice search
-USB connect
-Trackball light
-More performance tweaks
-Updated CM Extra
-Fixed Webcore Library exceptions
-Improved EGL
-Included Launcher2
-Improved Camera
-Fixed Lockscreen
-Fixed home buton
-Faster animations
-Camera Rendering Changes
Not working:
-Youtube high def videos over wifi
-Some games like Angry Birds (?)
-Usb tethering may not be working (?)
-Airplane mode may drain battery (?)
Updates (v1 - Feb 13, 2011):
-Ported from Ginger Cronos 1.1.0
Not working:
-Google voice search
-USB connect buggy
-Youtube high def videos over wifi
-Some games like Angry Birds
-Trackball light
-Usb tethering may not be working
-Airplane mode may drain battery
Hopefully others can confirm, but the camera and camcorder video recording are working for me.
Facebook also seems to sync fine (but I don't use FB so my test was basic and I'm no expert on the FB apk).
The GB screen on/off animations were working for me, but right now they're not. I noticed from the Hero and other forums that this feature seems to be buggy for all. Here is a work around. Enable 180 degrees rotating by going into CM Extra -> Display -> Rotate 180 degrees (make sure screen off and screen on animation are selected). Reboot. Then enable all window animations by going into Settings -> Display -> Show All window animations. This seems to work most of the time.
This is my favourite 32a 6.35 AOSP / CM rom to date. It's snappy with no FC's (except if you try to navigate through the initial set up wizard on first boot too quickly - which seems normal) and no major bugs (from my testing anyway).
After you get your phone set up, reboot once to speed things up. Jit is enabled.
What about battery drain?
Confirmed:
camera and camcorder video recording are working for me also!!!
fb sync working
great job
Thanks
Ntadeusz said:
What about battery drain?
Click to expand...
Click to collapse
Battery drain so far seems the same to me as it is on other roms using carz's 2.6.34 v0.70 kernel.
Lately, I've been turning off auto-sync, 3G, GPS, BT, and wifi most of the time and I've been getting 2+ days with a single charge.
When I use those features heavily I start the day with 90-100% and end up having 25-40% remaining by the end of the day.
giant_rider said:
Battery drain so far seems the same to me as it is on other roms using carz's 2.6.34 v0.70 kernel.
Lately, I've been turning off auto-sync, 3G, GPS, BT, and wifi most of the time and I've been getting 2+ days with a single charge.
When I use those features heavily I start the day with 90-100% and end up having 25-40% remaining by the end of the day.
Click to expand...
Click to collapse
Thank You. I will flashing it, but first i have to change spl and radio. At the moment i have old radio.
That's quite interesting, i was staying away from new radio roms because of camera problems, but stock new radio roms were always kinda better for me. I'll try this one, thank you!
downloading
Thanks
saibot64 said:
That's quite interesting, i was staying away from new radio roms because of camera problems, but stock new radio roms were always kinda better for me. I'll try this one, thank you!
Click to expand...
Click to collapse
haha . that's what i want to say .
Is it fast and smooth?
I just flashed OR seems i need to update again...
Can i use the partitions patch with this rom or do i have to remove it?
hey
hey giant very nice update
wolfshadowkd said:
Is it fast and smooth?
I just flashed OR seems i need to update again...
Click to expand...
Click to collapse
It is fairly fast and smooth for me. I set the windows and transition animations in Spareparts to fast and I increased the scrolling speed, etc. in LauncherPro. I also set the tweak in AutoKiller, and there are the performance settings in CM Extra. Then I reboot.
The max kernel speed is set at 576, so it won't be as fast as the roms that are set to oc to higher frequencies. I can look into oc for the next release.
Update: It's not the fastest, but I just got some Linpack scores of 3.90-4.00, so it's respectable especially for no oc.
hayer said:
Can i use the partitions patch with this rom or do i have to remove it?
Click to expand...
Click to collapse
I'm not sure. I am not familiar enough with that patch to say.
Wow, this is good news. Giant, do you know what has changed that the cam is working now?
@Capy, good to see you still around here in the Magic forum . Do you think that you can take advantage of this development in order to get the cam working with your FroyoSense ROM?
Thx, and keep on the good work
ATeam-MrT said:
Wow, this is good news. Giant, do you know what has changed that the cam is working now?
@Capy, good to see you still around here in the Magic forum . Do you think that you can take advantage of this development in order to get the cam working with your FroyoSense ROM?
Thx, and keep on the good work
Click to expand...
Click to collapse
trying man trying
This is an awesome ROM. Smooth, stable... The only thing I noticed so far is that Neocore FCs every time.
As for the Voice Search, it works first time after installing it from the Market. It then stops working after reboot. Same behavior was in the ezterry's releases.
Giant, thanks a lot for compiling this ROM. It's golden!
Update: Neocore issue solved by reinstalling it.
Sent from my GBRider Cronos v1.0 using Tapatalk
How about usb tethering, does it work?
Well,
I am really impressed with this rom, too. I think it's first new 32A radio android >2.1 with so many features working (3d accel. does not - I suppose).
I noticed 1 minor inconvenience - on the first attempt to use Market - Market and Launcher did FC (now it's running fine).
And 1 a little more annoying - Sygic Mobile Maps (10) do not work ("App closed unexpectedly"...)
Logcat below:
Code:
W/FlurryAgent( 993): onStartSession called with duplicate context, use a specific Activity or Service as context instead of using a global context
I/ActivityManager( 507): Starting: Intent { act=android.intent.action.MAIN cat=[android.intent.category.LAUNCHER] flg=0x10200000 cmp=com.sygic.drive/.SygicDriveActivity bnds=[3,138][77,225] } from pid 599
I/ActivityManager( 507): Start proc com.sygic.drive for activity com.sygic.drive/.SygicDriveActivity: pid=1372 uid=10041 gids={3003, 1015}
D/dalvikvm( 1372): Cronos GC_EXTERNAL_ALLOC freed 47K, 54% free 2489K/5379K, external 0K/0K, paused 70ms
D/dalvikvm( 602): Cronos GC_CONCURRENT freed 484K, 52% free 3250K/6727K, external 0K/512K, paused 8ms+19ms
D/dalvikvm( 507): Cronos GC_CONCURRENT freed 1160K, 44% free 5488K/9671K, external 2487K/2513K, paused 18ms+25ms
D/dalvikvm( 1372): Trying to load lib /data/data/com.sygic.drive/lib/libsygic.so 0x405176d0
D/dalvikvm( 1372): Added shared lib /data/data/com.sygic.drive/lib/libsygic.so 0x405176d0
D/dalvikvm( 1372): GetFieldID: unable to find field Landroid/view/Surface;.mSurface:I
D/AndroidRuntime( 1372): Shutting down VM
W/dalvikvm( 1372): threadid=1: thread exiting with uncaught exception (group=0x40018560)
E/AndroidRuntime( 1372): FATAL EXCEPTION: main
E/AndroidRuntime( 1372): java.lang.NoSuchFieldError: mSurface
E/AndroidRuntime( 1372): at com.sygic.drive.SygicMain.InitJavaObjects(Native Method)
E/AndroidRuntime( 1372): at com.sygic.drive.SygicMain.<init>(SygicMain.java:60)
E/AndroidRuntime( 1372): at com.sygic.drive.SygicDriveActivity$4.<init>(SygicDriveActivity.java:319)
E/AndroidRuntime( 1372): at com.sygic.drive.SygicDriveActivity.onCreate(SygicDriveActivity.java:319)
E/AndroidRuntime( 1372): at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1047)
E/AndroidRuntime( 1372): at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:1706)
E/AndroidRuntime( 1372): at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:1768)
E/AndroidRuntime( 1372): at android.app.ActivityThread.access$1500(ActivityThread.java:123)
E/AndroidRuntime( 1372): at android.app.ActivityThread$H.handleMessage(ActivityThread.java:936)
E/AndroidRuntime( 1372): at android.os.Handler.dispatchMessage(Handler.java:99)
E/AndroidRuntime( 1372): at android.os.Looper.loop(Looper.java:123)
E/AndroidRuntime( 1372): at android.app.ActivityThread.main(ActivityThread.java:3812)
E/AndroidRuntime( 1372): at java.lang.reflect.Method.invokeNative(Native Method)
E/AndroidRuntime( 1372): at java.lang.reflect.Method.invoke(Method.java:507)
E/AndroidRuntime( 1372): at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:841)
E/AndroidRuntime( 1372): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:599)
E/AndroidRuntime( 1372): at dalvik.system.NativeStart.main(Native Method)
W/ActivityManager( 507): Force finishing activity com.sygic.drive/.SygicDriveActivity
W/ActivityManager( 507): Activity pause timeout for HistoryRecord{4091db18 com.sygic.drive/.SygicDriveActivity}
W/ResourceType( 507): Skipping entry 0x7f040006 in package table 0 because it is not complex!
W/ResourceType( 507): Skipping entry 0x7f040005 in package table 0 because it is not complex!
I/ActivityManager( 507): No longer want com.noshufou.android.su (pid 1017): hidden #16
I/WindowManager( 507): Setting rotation to 1, animFlags=0
I/ActivityManager( 507): Config changed: { scale=1.0 imsi=260/3 loc=pl_PL touch=3 keys=1/1/2 nav=3/1 orien=2 layout=18 uiMode=17 seq=7 themeResource=null}
D/dalvikvm( 599): Cronos GC_EXPLICIT freed 192K, 54% free 3073K/6663K, external 2738K/3419K, paused 182ms
I/PowerWidget( 561): Clearing any old widget stuffs
I/PowerWidget( 561): Setting up widget
I/PowerWidget( 561): Default buttons being loaded
I/PowerWidget( 561): Button list: toggleWifi|toggleBluetooth|toggleGPS|toggleSound
I/PowerWidget( 561): Setting up button: toggleWifi
I/PowerWidget( 561): Setting up button: toggleBluetooth
I/PowerWidget( 561): Setting up button: toggleGPS
D/dalvikvm( 599): Cronos GC_EXPLICIT freed 21K, 55% free 3052K/6663K, external 2585K/3228K, paused 157ms
I/PowerWidget( 561): Setting up button: toggleSound
D/dalvikvm( 599): Cronos GC_EXPLICIT freed 95K, 56% free 2956K/6663K, external 2432K/3037K, paused 127ms
D/dalvikvm( 599): Cronos GC_EXPLICIT freed 10K, 56% free 2949K/6663K, external 2432K/3037K, paused 102ms
D/dalvikvm( 599): Cronos GC_EXPLICIT freed 735K, 54% free 3131K/6663K, external 2521K/3037K, paused 88ms
D/dalvikvm( 599): Cronos GC_EXPLICIT freed 197K, 54% free 3083K/6663K, external 2438K/3037K, paused 139ms
I/Process ( 1372): Sending signal. PID: 1372 SIG: 9
I/ActivityManager( 507): Process com.sygic.drive (pid 1372) has died.
D/dalvikvm( 507): Cronos GC_EXPLICIT freed 268K, 44% free 5431K/9671K, external 1946K/2428K, paused 166ms
D/dalvikvm( 1075): Cronos GC_EXPLICIT freed 187K, 53% free 2781K/5831K, external 276K/512K, paused 98ms
W/ActivityManager( 507): Activity destroy timeout for HistoryRecord{4091db18 com.sygic.drive/.SygicDriveActivity}
Michal
This tutorial is not the conventional type but more like a one way discussion for those familiar with decompiling/recompiling and the basic file structure of JARs and APKs.
So recently I have decided to take steps to minimize the effort involved in setting up new mods. Call me lazy, but it just seemed to make sense. Let me explain what I mean by that. The way I like to think about creating mods is that you have three pieces of the pie.
XML Settings
This is where you set up your toggles and/or list preferences as well as your strings and other attributes needed within your XML files. Located in SecSettings.apk
Smali Settings
This is the code behind the XML that allows the toggles to function. This code determines the true/false of toggles(Bools) as well as the values given to selections when there are more then two options (List preferences). Located in SecSettings.apk
Logic Code
This is the code that checks for preset values (set by your smali settings code) and performs actions based on those preset settings. The logic code is found in what ever smali you happen to be manipulating. If you wanted to change battery options, you would be working in BatteryController.smali, clock options would be clock.smali, etc.
So my goal was to eliminate 2 out of three of those steps by creating my own custom settings tab where I could develop my own XML code as well as my own smali code that would never be changed by android updates. The only time this code would change is when I change it. So now all you need to do is deal with the third piece of the pie, piece one and two are controlled now by you!
So here are the steps to setting up a custom tab within Androids settings menu.
We will be working within SecSettings only for this tutorial.
Navigate to res/xml/settings_headers.xml
Here is where you will set up your new tab. Have a look at one of the lines of code in this XML
Code:
<header android:icon="@drawable/ic_settings_display" android:id="@id/display_settings" android:title="@string/display_settings" android:fragment="com.android.settings.DisplaySettings" />
header android:icon="@drawable/ic_settings_display = The icon you see in the tab and the location that icon is stored
android:id="@id/display_settings" = Android ID thats stored in res/values/id's
android:title="@string/display_settings" = The title the new tab is given located in res/values/strings
android:fragment="com.android.settings.DisplaySettings" = points to the smali that controls this tab
So now create your own tab code based off of the example above.
Create your own icon.png ( size 50 x 50) and drop it in res/drawable-xhdpi.
Add the newly created lines to strings and ID's respectively
Now its time to create an XML file. Your XML file should have a similar name to the smali file you just created the name of above. Dont worry yet about actually creating the smali, just the name for now is fine. So if you named your smali something like RomControl.smali you should name your XML rom_control.xml. So its easy to identify they are related.
Your XML can be as simple as one checkbox or very involved. My suggestion is you start simple and build it out as you get it functional. An XML file with one checkbox would look like this.
Code:
<?xml version="1.0" encoding="utf-8"?>
<PreferenceScreen android:title="@string/rom_settings"
xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:settings="http://schemas.android.com/apk/res/com.android.settings.didact">
<CheckBoxPreference android:title="@string/enable_lockscreen_torch" android:key="enable_lockscreen_torch" android:summary="@string/enable_lockscreen_torch_text" />
</PreferenceScreen>[/hide]
You will need to add the necassary lines to res/strings found in the XML.
You will need to add the XML reference to res/public as well. If your XML is called new_tab.xml you would need to add the following line to res/public
Code:
<public type="xml" name="new_tab" id="0x7f070082" />
The ID would be whatever number is next in the list. This ID also needs to be added to the OnCreate method of your new smali file.
Now its time to create your smali file. I am not going to take this time to explain how to make this file but I will attach what i call a "blank" smali file that will allow what ever XML file you create to be visible. It wont be funtional until the smali gets correctly coded but maybe we can attack that task some other time.
So for now you have added a new line to settings_header.xml
You have added the icon you created to res/drawable-xhdpi
Added the new submissions to strings and IDs
Created your new XML file and put it in rex/xml. We can focus on the structure and coding of an XML file in another post later.
Created your new "Blank" smali. and put it in the folder of your choice
You should now be able to open settings and see your new tab with icon (see photo attached).
It took some work to get here, but now you have secured your code on the SecSettings side and you wont have to worry about updates changing it!
Now its time to code the smali and get the new tab functional...........
No matter what device you get next, I'm coming with you...thanks!
Edit:
Are we required to use your avatar as the icon?
Edit 2:
If I understand this correctly, this guide will simply create a non-functional menu setting with a placeholder smali file.
So, the example you have shown with the lockscreen torch will not actually work, correct?
You are one of the true developers here on xda didact!! Thank you for your continued dedication!!!
Guys I appreciate the kind words. I just enjoy contributing what i can and when I can. To all those that have been PM'ing me I will try to get back with you as soon as I can. I am just a bit overwhelmed right now.
Working on some new stuff and hope to get it out to you guys by the weekend if all goes smooth.
you really are godly lol!
I think that you are now my favourite dev!
You have save me a lot of effort..
Waiting for your next tutorial man about smali coding :good:
You are a machine. I'm convinced you are not human...
[email protected]'$ [email protected]@XY
Originally Posted by My Wife
You spent the last three days on the laptop for what reasn? So you could make the clock on your phone disappear? That's Brilliant sweetie
hahaha....that´s good mate...welocme in the club..... when i show it to my wife she started to laugh an she told me...
"god... you are not the only one doing that kind of weird things on your phone"
hahahaha... that´s good one
I'm having issues with this mod. First, I made the xml with options and put with the blank smali. Then the options were showed in the settings menu. But when I add the code to the smali file, I get an FC. Here's the logcat I think related with the smali:
Code:
W/dalvikvm(7519): VFY: register1 v1 type 1109890336, wanted 17
W/dalvikvm(7519): VFY: rejecting opcode 0x6e at 0x002e
W/dalvikvm(7519): VFY: rejected Lcom/android/settings/phdsettings;.onCreate (Landroid/os/Bundle;)V
W/dalvikvm(7519): Verifier rejected class Lcom/android/settings/phdsettings;
W/dalvikvm(7519): Class init failed in newInstance call (Lcom/android/settings/phdsettings;)
D/AndroidRuntime(7519): Shutting down VM
W/dalvikvm(7519): threadid=1: thread exiting with uncaught exception (group=0x416ea2a0)
E/AndroidRuntime(7519): FATAL EXCEPTION: main
E/AndroidRuntime(7519): java.lang.VerifyError: com/android/settings/phdsettings
E/AndroidRuntime(7519): at java.lang.Class.newInstanceImpl(Native Method)
E/AndroidRuntime(7519): at java.lang.Class.newInstance(Class.java:1319)
E/AndroidRuntime(7519): at android.app.Fragment.instantiate(Fragment.java:577)
E/AndroidRuntime(7519): at android.preference.PreferenceActivity.switchToHeaderInner(PreferenceActivity.java:1229)
E/AndroidRuntime(7519): at android.preference.PreferenceActivity.switchToHeader(PreferenceActivity.java:1245)
E/AndroidRuntime(7519): at android.preference.PreferenceActivity.onCreate(PreferenceActivity.java:618)
E/AndroidRuntime(7519): at com.android.settings.Settings.onCreate(Settings.java:191)
E/AndroidRuntime(7519): at android.app.Activity.performCreate(Activity.java:5206)
E/AndroidRuntime(7519): at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1094)
E/AndroidRuntime(7519): at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2074)
E/AndroidRuntime(7519): at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2135)
E/AndroidRuntime(7519): at android.app.ActivityThread.access$700(ActivityThread.java:140)
E/AndroidRuntime(7519): at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1237)
E/AndroidRuntime(7519): at android.os.Handler.dispatchMessage(Handler.java:99)
E/AndroidRuntime(7519): at android.os.Looper.loop(Looper.java:137)
E/AndroidRuntime(7519): at android.app.ActivityThread.main(ActivityThread.java:4921)
E/AndroidRuntime(7519): at java.lang.reflect.Method.invokeNative(Native Method)
E/AndroidRuntime(7519): at java.lang.reflect.Method.invoke(Method.java:511)
E/AndroidRuntime(7519): at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:1027)
E/AndroidRuntime(7519): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:794)
E/AndroidRuntime(7519): at dalvik.system.NativeStart.main(Native Method)
Any help? Thanks!
Hi this is brilliant. .will you be adding how to get the smali working for this aswell? Would just finish it off...thanks a lot for your hard work
Sent from my GT-I9300 using xda premium
???
Where to put smali file, i get 3 folders under smali section, i.e android, com, javax
luckydogra said:
Where to put smali file, i get 3 folders under smali section, i.e android, com, javax
Click to expand...
Click to collapse
You have to put in com folder, but inside the other folders. Search, for example, DisplaySettings.smali and put your smali in this folder.
Works great,,, Thanks @Didact74 :laugh:
Here are screenshots of what I have achieved till now..
If you like, I can contribute by giving the smali part explanation about how to add checkbox switches for the RomSetings.smali if I succeed doing so.. of course, it will not be as perfect as our teacher,,
THANKS AGAIN,,
Edit:
Succeed to have full working ROM controller,, Thanks again @Didact74 :laugh:
majdinj said:
Works great,,, Thanks @Didact74 :laugh:
Here are screenshots of what I have achieved till now..
If you like, I can contribute by giving the smali part explanation about how to add checkbox switches for the RomSetings.smali if I succeed doing so.. of course, it will not be as perfect as our teacher,,
THANKS AGAIN,,
Edit:
Succeed to have full working ROM controller,, Thanks again @Didact74 :laugh:
Click to expand...
Click to collapse
Nice majdini!
While I am trying to compile I face this error:
Code:
C:\Program Files (x86)\Android\android-sdk\platform-tools\APK-Multi-Tool repacked by majdinj - Nov 2012\other\..\projects\SecSettings.apk\res\values\public.xml:1445: error: Public resource xml/rom_control has conflicting type codes for its public identifiers (0x7 vs 0x12).
Anybody can help me out please.
Thanks
kmokhtar79 said:
Nice majdini!
While I am trying to compile I face this error:
Code:
C:\Program Files (x86)\Android\android-sdk\platform-tools\APK-Multi-Tool repacked by majdinj - Nov 2012\other\..\projects\SecSettings.apk\res\values\public.xml:1445: error: Public resource xml/rom_control has conflicting type codes for its public identifiers (0x7 vs 0x12).
Anybody can help me out please.
Thanks
Click to expand...
Click to collapse
I think you use id (rom_control) in settings_header.xml same as rom_control.xml which makes conflict
majdinj said:
Works great,,, Thanks @Didact74 :laugh:
Here are screenshots of what I have achieved till now..
If you like, I can contribute by giving the smali part explanation about how to add checkbox switches for the RomSetings.smali if I succeed doing so.. of course, it will not be as perfect as our teacher,,
THANKS AGAIN,,
Edit:
Succeed to have full working ROM controller,, Thanks again @Didact74 :laugh:
Click to expand...
Click to collapse
Nice work. If you could add the smali but that would be great help for me. Thanks
Sent from my GT-I9505G using XDA Premium 4 mobile app
alvin551 said:
Nice work. If you could add the smali but that would be great help for me. Thanks
Sent from my GT-I9505G using XDA Premium 4 mobile app
Click to expand...
Click to collapse
Here is all files that I used to create my ROM controller in SecSettings.apk,, I put some details, so you should be fine of what to do
Cheers,,
majdinj said:
Here is all files that I used to create my ROM controller in SecSettings.apk,, I put some details, so you should be fine of what to do
Cheers,,
Click to expand...
Click to collapse
Thanks a lot. I'll have a look when I have time
Sent from my GT-I9505G using XDA Premium 4 mobile app
{
"lightbox_close": "Close",
"lightbox_next": "Next",
"lightbox_previous": "Previous",
"lightbox_error": "The requested content cannot be loaded. Please try again later.",
"lightbox_start_slideshow": "Start slideshow",
"lightbox_stop_slideshow": "Stop slideshow",
"lightbox_full_screen": "Full screen",
"lightbox_thumbnails": "Thumbnails",
"lightbox_download": "Download",
"lightbox_share": "Share",
"lightbox_zoom": "Zoom",
"lightbox_new_window": "New window",
"lightbox_toggle_sidebar": "Toggle sidebar"
}
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.
Download: https://play.google.com/store/apps/details?id=projekt.substratum
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)
XDA:DevDB Information
[projekt.] substratum, Device Specific App for the XDA Community Apps
Contributors
nicholaschum, Sykopompos, iskandar1023, The Flash, KreAch3R, Surge1223, Char_G
Source Code: https://github.com/substratum
Version Information
Status: Stable
Current Stable Version: 983
Stable Release Date: 2018-04-19
Created 2017-04-09
Last Updated 2018-04-19
OFFICIAL THEME TEMPLATE
https://github.com/substratum/template
There are two types of Substratum as of this date (27/7/16)
Substratum OMS
Substratum Legacy (RRO)
To get started, first of all, FORK this project on GitHub and open it up with Android Studio (I use Android Studio 2.1.2 and Android Studio 2.2 Preview Canary, although these versions don't matter, you should keep yourself up to date with the latest Google has to offer)
Step 1: Package Naming
The FIRST thing you need to change is the package identifier (the name the app identifies as) to something more meaningful to you:
https://github.com/substratum/template/blob/master/app/build.gradle
Code:
applicationId "substratum.theme.template"
Change this to:
Code:
applicationId "com.yourname.themename"
Change Package Name in the project structure: (optional)
Code:
* Look at the "project panel" in android studio (the one on the left).
* In the top right corner you will see a little "gear icon".
* Click on it.
* in the dialog which opens click on "Compact Empty Middle Packages".
* Select the "substratum folder" (in JAVA/com/ and rightclick it.
* Choose "refactor" and then "rename".
* A warning window will pop up. Just click on "Rename package".
* Enter the desired first part of your package name(should be same as that in applicationId of bild.gradle) and click refactor.
* At the bottom of the screen a refactoring preview will appear. Just click on "DO REFACTOR" at the left corner. <br/> <br/>
* Do the same with the theme and template folders, name it same as the name in applicationId of build.gradle.
Step 2: AndroidManifest Metadatas
Now you have to pick whether your theme supports OMS or RRO, or both.
Open this file: https://github.com/substratum/template/blob/master/app/src/main/AndroidManifest.xml
Now configure it to your liking:
Code:
<meta-data
android:name="Substratum_Legacy"
android:value="true"/>
<meta-data
android:name="Substratum_Theme"
android:value="@string/ThemeName"/>
<meta-data
android:name="Substratum_Author"
android:value="@string/ThemeAuthor"/>
These files link back to the strings.xml inside the res/values folder, here:
https://github.com/substratum/template/blob/master/app/src/main/res/values/strings.xml
Code:
<string name="ThemeName">My New Theme</string>
<string name="ThemeAuthor">Nicholas Chum</string>
If you want to keep the Play Store shortcut turned off (to disable the launcher icon by default), open this file: https://github.com/substratum/template/blob/master/app/src/main/AndroidManifest.xml
and delete line 15.
Code:
<category android:name="android.intent.category.LAUNCHER"/>
Step 3: Start theming!
Audio
To install system sound effects, you will need to have an audio folder, just like it's listed here: https://github.com/substratum/template/tree/master/app/src/main/assets/audio
You are allowed to add multiple bootanimations and name them differently so they show up differently on the spinner dropdown in the app.
Example:
Code:
assets/audio/StarWarsLockUnlock.zip
Audio ZIP root structure:
Code:
StarWarsLockUnlock.zip/ui/Lock.ogg(or mp3)
StarWarsLockUnlock.zip/ui/Unlock.ogg(or mp3)
StarWarsLockUnlock.zip/ui/effect_tick.ogg(or mp3)
StarWarsLockUnlock.zip/alarms/alarm.ogg(or mp3)
StarWarsLockUnlock.zip/ringtones/ringtone.ogg(or mp3)
StarWarsLockUnlock.zip/notifications/notification.ogg(or mp3)
Boot Animations
To install boot animations, you will need to have a bootanimations folder, just like it's listed here: https://github.com/substratum/template/tree/master/app/src/main/assets/bootanimation
You are allowed to add multiple bootanimations and name them differently so they show up differently on the spinner dropdown in the app.
Example:
Code:
assets/bootanimation/Sakura.zip
assets/bootanimation/MarvelDC.zip
Fonts
To install fonts, you will need to have a fonts folder, just like it's listed here: https://github.com/substratum/template/tree/master/app/src/main/assets/fonts
You are allowed to add multiple fonts and name them differently so they show up differently on the spinner dropdown in the app.
If you are looking to load up DOWNLOADED fonts from the internet, then download the ZIP from your source, extract it and navigate INTO the folder, until you find the folder "fonts" in "/system/fonts", and ZIP the whole contents of the folder up to form your new fonts pack.
This also supports fonts.xml within the font's ZIP file, so if you have any knowledge of this, you can add it in.
Example:
Code:
assets/fonts/SegoeUIWP8.zip
assets/fonts/ohds5.zip
Font ZIP root structure:
Code:
SegoeUIWP8.zip/font1.ttf
SegoeUIWP8.zip/font2.ttf
SegoeUIWP8.zip/font3.ttf
Overlays
If you had any experience with overlays on CMTE, it is rather the same format, except we added our own twists for enhanced theming capabilities for Substratum users.
If you would like to theme an application, first you need their package identifier. Let's say you wanted to theme Substratum (projekt.substratum), you will create a folder within "assets/overlays" and name it the package name and start following the app's resource structure, e.g.
Code:
assets/overlays/projekt.substratum/res/values/colors.xml
Type 1 Overlays
type1 can be a/b/c, as type1(a/b/c).xml at the ROOT of your overlay, and it does the Arcus way of moving it to res/values/type1(a/b/c).xml to replace Colors, Styles, Dimensions, Bools, Integers, Strings, etc...
An example of how to set up a Type 1 overlay:
https://github.com/substratum/templ.../main/assets/overlays/android/type1a_PINK.xml
Type 2 Overlays
type2 is a FOLDER, and they must start with /assets/overlays/overlay_name/type2_FOLDERNAME/ and this is a base extension (means it is NOT dependent on framework). You can have nav bars here, headers, special icons, etc. Type2's show up as the FOURTH SPINNER, if all type1 spinners have been used.
An example of how to set up a Type 2 overlay:
https://github.com/substratum/templ...main/assets/overlays/android/type2_Gryffindor
Type 3 Overlays
type3 is also a FOLDER, but these only show up BASED ON FRAMEWORK. So if you wanted to have a clear theme bundled in with your dark theme, just create a assets/overlays/android/type3_FOLDERNAME which houses ANYTHING a type2 can house, except you can add special files like ^attrs_private.xml. If done correctly, a base spinner will show up at the top of the overlay manager (in theme information and compiling it will cause ANY overlay with a type3_FOLDERNAME spinner inside the overlay to be built automatically.
An example of how to set up a Type 3 overlay from Framework, then another app
https://github.com/substratum/templ...sets/overlays/android/type3_Translucent Theme
https://github.com/substratum/templ...s/com.android.settings/type3_TranslucentTheme
Renaming Type Spinners
If you would like to rename the spinner names, you just need to create a file with NO EXTENSION on the root of the overlay folder:
For example, if I wanted to change the type1a spinner's name for a specific overlay, I would put it like this:
https://github.com/substratum/template/blob/master/app/src/main/assets/overlays/android/type1a
Step 4: Finalize your theme!
To get your theme to show up on Substratum, all you need to ensure that your hero image relates to your theme. The hero image DETERMINES the color of the automatic actionbar and nav bar colors based on the (0,0)'th pixel on your image.
https://github.com/substratum/template/blob/master/app/src/main/res/drawable-xxhdpi/heroimage.png
If you have a completely white image, your actionbar and nav bar will change to that color, and the text colors will determine whether the black text is more visible on that color, or a white color.
Step 5: Safeguard your theme! Don't let the pirates win!
DURING THEME DEBUGGING ON YOUR OWN PHONE
While debugging your application, you should be setting this to false so that it doesn't keep triggering antipiracy when you are working: https://github.com/substratum/templ...um/theme/template/SubstratumLauncher.java#L34
If you don't want to activate AntiPiracy
Set this value to false and the antipiracy check will report back true to Substratum every time:
https://github.com/substratum/templ...um/theme/template/SubstratumLauncher.java#L34
Getting started with AntiPiracy
If you are ready to get AntiPiracy set up, you must first compile your theme as a SIGNED production APK from Android Studio (Build -> Compile Signed APK). Then launch the signed apk on your device and your log will spit out an error log under the name "SubstratumAntiPiracyLog", and you want to copy and paste that into Line 76: https://github.com/substratum/templ...um/theme/template/SubstratumLauncher.java#L76
Then you would need to go to Play Developer Console. Then access to your app -> Services and APIs, generate a new API key for your app and then paste it in BASE_64_LICENSE_KEY on line 77: https://github.com/substratum/templ...um/theme/template/SubstratumLauncher.java#L77
Finally, if you would like to change where it checks for piracy, you should just comment out the .enable lines such as if you would not like to have Amazon App Store piracy checking, just disable it below this line: https://github.com/substratum/templ...um/theme/template/SubstratumLauncher.java#L76
DO NOT SHARE YOUR SUBSTRATUMLAUNCHER.JAVA FILE IF YOU OPEN SOURCE YOUR THEME AND WANT TO KEEP PIRACY!
For more information regarding type overlays and how to use them, please contact @setiawanjimmy and @jerbeck24 from the Substratum theme team!
All of our important info is kept in our official documentation repo! This includes info regarding:
Frequently asked questions
Adding support to your custom ROM
A list of officially supported ROMs
A guide on how to contribute
I have just finished rebasing all of our repos to 7.1.2. The primary branch has been renamed from n-mr1-rootless to n-mr2. I have updated all of our documentation to reflect this. If you were having issues picking our commits into 7.1.2, it should be much better now. I will update the LineageOMS organization when they update to 7.1.2.
Substratum Release 670
Full Android O theming enabled (RRO2): You can now theme on API level 26 resources/Android O Developer Previews. Themers will have to stress test this and users MAY need to wait for themers to update.
Full Binderfacer Support: This is what we call the Interfacer module with Binder implementations. This is still under testing but if you're interested, you can pick the open commits on Gerrit to test! The commits are stable but we may want to add a bit more functionality very soon! Full credits to +Ivan Iskandar, +Surge Raval and +George G.!
Dynamic Refresh Mode: When installing a theme, it will automatically refresh the list of themes installed without triggering a refresh by swiping down. The code has been completely rewritten to detect new theme installations! To add on to this, there are many small things that normal people won't notice, but UI tweaks, animations and bugs have been fixed too!
Theme Authorization Fix: Themers theming using the latest template 7.0.4+, you may have noticed that using the substratum filter was erroring out. Please update to 7.0.5 and to the latest Substratum release 670+ to have full fixes ahead!
Note: You may need to manually restart SystemUI when fiddling with fonts depending on the version of Interfacer you are running. We will have a hotfix up very soon but for now, this is the only bug we know of!
Full changelog
Full translation import
Public release 670
Clean up and reformat
DynamicRefresh: Do not invoke toast on uninstall theme
DynamicRefresh: Send refresh message on theme uninstall
DynamicRefresh: Add support for IA to detect uninstalls
ThemeFragment: Auto-dynamic Refresh of newly installed themes
AdvancedManagerFragment: After removing lingering overlay, update index
ThemeInterfacerService: Blame Ivan's OCD
ThemeInterfacerService: SystemUI should be restarted on priority switch
InformationActivity: Properly locate parent/root node for fab shift
Internal testing release ALL HELL BREAKS LOOSE!
References: Fix certification check on notification
Internal testing release 665
Overlays: Adjust marginTop for text to select all overlays
Dynamic Gapps > Beans Gapps
Overlays: Add a bit of margin on top of toggle
Refactor and format after fast-forward
Arrays: Update Slovak Translation Title
ThemeFragment: Launch Showcase on No Theme Installed
Register receivers on app update too
Move profile related methods to separate class
Internal testing release 663
BootCompletedDetector: IntentFilters should be launched with app context
Internal testing release 662
Add app update receiver
BootCompletedDetector: Prepare for API26 changes to BroadcastReceivers
Internal testing release 661
AdvancedManagerFragment: Binderfacer should also be able to refresh!
PriorityListFragment: Fix broken animation when showing fab
Internal testing release 660
BinderService: Make the service sticky
Overlays: When mixAndMatch enabled, don't check cached global variable
Internal testing build 659
AdvancedManagerFragment: Toast does not go here...
Internal testing release 658
SoundUtils: Optimize
Overlays: Fix connection loss to list of enabled overlays from IA
Overlays: When updating a framework overlay, restart SystemUI as well!
ThemeManager: Restart SystemUI on framework change
SoundUtils: Don't wait when binderfacer on duty
Backend: Utilize OMS library's OverlayInfo states instead of specifying
ScheduledProfileService: Optimize things a bit
ScheduledProfileService: It's supposed to run with interfacer only
ScheduledProfileService: TODO done
Internal testing build 657
AdvancedManagerFragment: Change here and there
ScheduledProfile: Make it precise down to the seconds
Internal testing build 656
Overlays: InformationActivity.class > this.getClass()
References: Suppress a few warnings by generalizing the try/catch block
References: Null check for offensive check
FloatUiTile: Guard against NPEs on tile state
Overlays: Enforce adapter not being null before running actions
InformationActivity: If the position goes beyond or under, do not crash!
ProfileFragment: Guard against NPE when list() is null
LaunchTheme: Check if launch intent is null before adding extras
InformationActivity: Null checks for odd window refreshes
InformationActivity: Fix potential errors with Palette
ShowcaseTab: Do not call getContext() so many times
AdvancedManagerFragment: Effective NPE handling!!!
Overlays: Suppress warning when type1 default XML not found
ScheduledProfileService: Expose "Day" and "Night" strings
Binder: Add comments to the AIDL interface for each void
Binder internal testing release 655
Overlays: MixAndMatch mode should not be present for disable mode
Binder internal testing release 654
Update interface stub
BroadcastReceiver can't register another receiver
Overlays: No need to wait if binderfacer on duty
Only start BinderService if binderfacer installed
ScheduledProfile: Make sure binder service is started
Merge remote-tracking branch 'refs/remotes/origin/dev'
Binder internal testing release 653
ThemeUninstallDetector: Rewrite the SharedPref after theme uninstalled
ThemeUninstallDetector: Rewrite the SharedPref after theme uninstalled
References: Revive functionality of removing uninstalled theme resources
References: Revive functionality of removing uninstalled theme resources
Internal testing release 635
Overlays: Fix MixAndMatch mode not properly activating
Overlays: Fix MixAndMatch mode not properly activating
Binder internal testing release 652
Move screen off receiver methods to References
BinderService: Clean up
BinderService: Change some static objects
Binder internal testing release 651
References: Update Binder Interfacer version to start at 60
Binder internal testing release 650
BinderService: Migrate the old binder code from Application to Service
PackageModificationDetector: When there's no metadata, reject intent
PackageModificationDetector: When there's no metadata, reject intent
ScheduledProfile: IntentService > JobService
Initial commit for binderfacer implementation
References: Check if device is on O preview, if yes, disable soft reboot
Legacy: Fix up OMS check with a null check
CommitValidator: Disable on legacy devices
CommitValidator: Fix issues where all entries opened framework
Themers, let's start getting on deck with Android O! Shall we?
PackageModificationDetector: Fix check for legacy
restartService > forceStopService
Internal testing release 633
SettingsFragment: Adjust delay of cache a bit longer
PackageModificationDetector: Completely revamp the detection module
SettingsFragment: Adjust tap times to 7 for caching mode
Merge remote-tracking branch 'origin/dev' into dev
References: Update hash passthrough
Merge pull request #92 from rbaumert/patch-1
Substratum Release 700
Overlay UI overhaul: With this new update, we have added new manifest metadatas into each overlay package. This allows us to identify the overlays with a more concise and descriptive manner, shown in the screenshots below.
This means if you have the old UI, you must recompile the overlay so it updates - Substratum will handle the rest!
Binderfacer Integration Ironing Out: With this release, we are also ready with our Binderfacer implementation! To use our release-ready commit, merge this into your TI repo while building your ROM: https://substratum.review/#/c/406/
ROM build.prop checker: We have revived our ROM build.prop checker originally written by @Mazda. To get supported, please head over to our database and PR your build prop, including applying to be on the supported list if you are not already! NOTE: You must be on our supported list to be on our BuildProp list!
BuildProp: https://github.com/substratum/database/blob/master/supported_roms.xml
Supported List: https://docs.google.com/forms/d/e/1FAIpQLSdazHsGs084963mmFOM4ceAkJv0TaYUvcySxljw9SnFE7kNfg/viewform
Migration of Telegram Groups: We have moved our ontopic Substratum group to @substratumSupport!
Full App Rewrite/Rebase: These past few weeks, we have had many consistent rebases/rewrites of the app code, including a full refactoring (thanks @MSF Jarvis) of a bunch of Java files and XML resources. If your app crashes at start, please use the Rescue Me! option or flash a recovery ZIP!
Last but not least, Android O bug fixes: I also have been stress testing a bunch of functions on legacy and Android O. The experience is more ironed out than before and substratum automatically clears out the system idmapping caches now, including a proper removal of all symlinked files and folders and an invoke of Restore Theme would leave your device fully untouched!
Full changelog:
Full translation import
Public release 700
ShowcaseEntryCard: Make some changes for high DPI devices
References: Re-disable the fonts apply/reset dialogs
FontUtils: Move FontHandlerAsync to WeakReference
RecoveryFragment: Move FontsClearer to WeakReference
Fonts: Move FontsClearer to WeakReference
Deprecate the old Telegram @substratum link, use @substratumSupport
References: Type Annotation to @Nonnull for checkOMS()
InformationActivity: Simplify resource pulling
InformationActivity: Fix Harsh's derp
PackageAnalytics: Add a low memory device checker (<=130mb RAM)
Fonts: Disable the loading dialog as a whole
FloatUI: Dynamically change color of the overlay when disabled/enabled
FloatUI: Revamp the UI based on ManagerFragment
Overlays: Modernize the list row
Merge pull request #100 from Mazda/dev
If something is not supported is......unsupported
ManagerFragment: Add a delay when loading fragment to avoid stutters
PrioritiesAdapter: Optimize onBindViewHolder and reduce as much lag
ManagerAdapter: Optimize onBindViewHolder and reduce as much lag
LauncherActivity: Bring it back out to the root substratum folder
Substratum: Rename resource files to something easier to understand
Clean up after merge
Merge branch 'MSF-Jarvis-clean-up' into dev
Merge branch 'clean-up' of https://github.com/MSF-Jarvis/substratum into MSF-Jarvis-clean-up
ManagerFragment: Modernize the layout
PrioritiesFragments: Revamp UI of Priorities with more information
SubstratumCleanup : Massive resource cleanup
SubstratumCleanup: Cleanup translations for removed strings and unused drawables
ManagerAdapter: Distinguish between old and newly compiled overlays
ManagerFragment: Introduce a more advanced UI for overlays
SettingsFragment: Clean up
SettingsFragment: Allow custom names for build prop checks
Internal testing release 699
PackageAnalytics: Move to a centralized callable location
ManagerFragment: Always delete overlays.list on legacy devices
SRS: Update Legacy archive
ThemeAdapter: Allow for more package information in logs
Wallpapers: Asciibetically sort the list of wallpapers excluding spaces
Update Russian Translators
SettingsFragment: Clean up if statement block
ROMChecker: Default String should be null to trigger false
Legacy: Delete /data/resource-cache on removal command execution
ManagerFragment: The dialog is for legacy device only
Fix a typo and adjust case sensitivity
SettingsFragment: Debug users will open commits rather than repo
RecoveryFragment: Allow Legacy devices to have a proper Restore Theme
ManagerFragment: Refreshing the list will not lose the legacy overlays
OverlaysItem: Do not always trigger enabled on non-OMS devices
ManagerFragment: Fix up default text when the title cannot be loaded
FileOperations: Always create new vendor/overlay/* folder on compile
ManagerFragment: Add References bruteforceDelete to delete symlinks
ManagerFragment: This is not where view reacting calls should be
OverlaysAdapter: Check both Pixel and Nexus Legacy folders for overlays
OverlaysAdapter: Remove Legacy exclusions from package install state
ManagerFragment: Do not reload enabled status on legacy
SettingsFragment: Add a clause for props to be shown properly
SettingsFragment: Clean up ROM supported list
SettingsFragment: Do not ever check the whole build prop
Fonts: Remove TODO
SettingsFragment: Re-enable ROM check support
Overlays: Clean up cache extraction (Phase2) method
ManagerFragment: Remember to update the enabled overlays list
ManagerFragment: Use our newest algorithm to refresh the list
ManagerFragment: Dynamically refresh the list when uninstalling
MainActivity: Completely remove dirty flash dialog
Revert "Overlays: Re-enable listener for binderfacer"
MainActivity: Formulate a git hash version on debug builds in drawer
TeamFragment: Add Turkish translators
SettingsFragment: On debug builds, issue a warning before disabling TS
OverlayCleaner: Move functionality over to MainActivity class
SubstratumRebase: Refactor and format
SubstratumRebase: Untangle the fragments folder and clean up
Refactor and clean up after cherry-pick merge conflict
Overlays: Change toast to lunchbar
MainActivity: Remove dirty flash dialog and do it automatically
References: Suppress exception to grab app icon
SubstratumRebase: Move a bit more to it's corresponding folders
ManagerFragment: This is not where a toast goes!
Overlays: Re-enable listener for binderfacer
MainActivity: Immediately ask for outdated themes rather than a delay
SubstratumRebase: Clean up
SubstratumRebase: Completely rebase all Java files in the app (~127)
Substratum Release 711 (May Update)
Migration to Manage Space Integration: What this means is that you can no longer clear data of substratum, but you will get a better view to see what to clear specifically. This place will be developed more in the upcoming updates. Huge thanks to +Ivan Iskandar again for working with me on this new implementation - one might call it a Telegram design layout!
This means that to clear your data you have two options:
- Settings -> Apps -> Substratum -> Storage -> Manage Space -> *
- Substratum -> Settings -> Manage Storage Usage -> *
Migration to Weak Referencing: This is more of a backend thing within the inner workings of how Substratum works, but when a configuration change occurs, with our WeakReference fusion of AsyncTasks, we are able to achieve fewer FCs and more stability throughout the app.
No, Icon Packs aren't coming, just yet: The security patch brings a TI62 update which contains all our necessary fixes to enable Icon Packs, however since it's still under heavy experimental testing, we are not officially endorsing the feature at all yet.
Resource Cleanup: To all Substratum OSS contributors, we have cleaned up a bunch of resources in the /res folder, ditching the idea of low-level API folders to separate specific layouts or drawables. We also cleaned out a few References to call a centralized function with different parameters rather than our previous implementation. Developers can easily workaround these new updates.
Showcase fixes: Previously on an orientation configuration change, the adapter view will not align properly after switching planes. This has been rectified by refreshing the activity (not consuming the configuration change) and the layouts are all working.
Full Changelog
Public release 711
Full translation import and add Dutch (with translators)
AOPTCheck: Properly check String Resource
Public release 710
Revert "SettingsFragment: Hide System Configuration title on Release builds"
Public release 708
FloatUI: Hide icon overlays
Public release 707
References: Reorganize the structure and calls to metadata sniffing
References: Clean up
References: We don't need to call ourselves, we are References
SubstratumUI: Call I/O complex tasks at start rather than on demand
StudioSelectorActivity: Do not allow direct activity launching
ShowcaseActivity: Remove land layout
Properly adjust manifest for configuration changes in Showcase
SubstratumRebase: Remove the low-API folder organization scheme
Strings: Adjust manage space dialog content
Reformat and optimize after fast forward
ManageSpaceActivity: Warn user for app closing before proceeding
ManageSpaceActivity: Close app on reset configuration
MainActivity: Always try to show the old themes option
References: We're resetting app configuration, not clearing data
References: Delete this particular prefs
ManageSpaceActivity: Move all operation to AsyncTask
SettingsFragment: Add a button to launch Storage Usage
ManageSpaceActivity: Finish the activity on configuration clear
ManageSpaceActivity: Add loading text
RecoveryFragment: Classify things
ManageSpaceActivity: Delete all unimportant prefs
SubstratumUI: Revamp the Storage Usage UI
References: Also reset display old themes option
Add Manage Space activity
FirebaseAnalytics: Just pull from the cloud once a day
Overlays: Show progress bar when enable and disabling
Beta release 706
Refactor and format after fast forward and pull request
SettingsFragment: Hide System Configuration title on Release builds
Merge pull request #101 from MSF-Jarvis/dev
SettingsFragment: Make sure to catch network errors properly
StudioPreviewActivity: Use WeakReference for all AsyncTasks
IconStudio: Move restore system icon option to Recovery fragment
ThemeInterfacerService: Use main looper for handler
Don't touch icon overlays for app overlays related options
ThemeUninstallDetector: Remove overlays on icon pack dashboard removal
ThemeUninstallDetector: Send refresh message if not ending with .icon
MainActivity: Properly allow OverlayCleaner to filter icon overlays
CompilerCommands: Use Substratum_IconPack for identifying icon overlays
StudioPreviewActivity: Respect the Activity Lifecycle for AsyncTasks
StudioPreviewActivity: Remove excess logging
StudioPreviewActivity: Check if intent valid before continuing
Add interfacer as blacklisted package to theme
Prevent CTS Verifier app from getting themed
Update interfacer AIDL for configuration shim
RecoveryFragment: Try to dismiss progress dialog on destroy
Overlays: Add another condition to mix and match
StudioPreviewActivity: Optimize the checks for overlays
IconStudio: Enable full support on TI61 and authorized users
IconStudio: Revive functionality to compile and install icon overlays
IconStudio: Fix up broken aopt call for application icon name pull
IconStudio: Bring it back permanently for authorized testers
Resources: Clean up
Beta release 705
SubstratumBackend: Enable 2017 Pixel devices
Refactor and format after fast forward
Beta release 704
Remove useless parents
PriorityAdapter: Change deprecated method
ManagerAdapter: Change deprecated method
MainActivity: Use WeakReference for now-static-AsyncTasks
RecoveryFragment: Use WeakReference for now-static-AsyncTasks
RecoveryFragment: Generalize restore function task
Overlays: Error report adjustments
Substratum Release 730
Auto Overlay Upgrade: Substratum will now automatically upgrade the overlays for a theme that is updated. If a theme is updated and this option is enabled, the overlays installed from this theme will also be upgraded. This means you must recompile your pre-existing overlays to update the metadata! (Optional)
Auto Target Overlay Upgrade: Substratum will now automatically upgrade the overlays for a target package that is updated. If an app like Youtube is updated and this option is enabled, the overlays installed for Youtube will also be upgraded. This means you must recompile your pre-existing overlays to update the metadata! (Optional)
Auto Overlay Found Notification: Substratum will also notify you if you installed a new application, it will notify the user if a theme has that overlay themed. (Optional)
Substratum UI Changes: To iron a few things out, we have disabled Split-screen mode on the application so that a forced configuration change will not affect compilations.
Profile Compilation: Substratum will now automatically compile the overlays for a profile. This means you must recompile your pre-existing overlays to update the metadata before creating a new profile!
8.0.0 Profile Support: The template is not fully ready yet but for daring testers, you can give it a shot!
Full Changelog
Full translation import
Merge pull request #105 from sirmordred/dev
Substratum: Some more nitpicks
Revert "Substratum: Handle ThemeInterfacerService operation failures"
Substratum: Fixup build
Substratum: Handle ThemeInterfacerService operation failures * Make more solid
Substratum: FileOperations: Reduce the chance of File operation failures
Substratum: nitpicks
OverlayUpdater: Take account for errored builds
ManagerFragment: BypassRestart boolean for disabled Android/SysUI APKs
ManagerFragment: Sort overlays and clean up detection logic on legacy
ThemeManager: Also take account for checking legacy overlays
Reformat and clean up after pull request
Merge pull request #104 from sirmordred/dev
AndroidManifest: Lock the app from splitscreen mode
Substratum: Some improvements
Internal beta release 724
MainActivity: Do not hide showcase icon in action bar by fragment
String consistency after pull request
SubstratumUI: BlurView styles should show underlying actionbar
ManagerFragment: Refreshing the list and no overlays found = blob!
ThemeEntryCard: Fix advanced information alignment
Strings: Touch up on grammar caught on last night on G+
Merge remote-tracking branch 'origin/dev' into dev
Merge pull request #103 from DumF0rGaming/patch-1
Improvement
ProfileFragment: Properly hide progressbar on complete restore
ProfileFragment: Set dialog cancellable and wakelock
ProfileFragment: Fix newly compiled overlays doesn't get enabled
FloatUITile: Only enable it if the user has clicked on the icon once
OverlayUpdater: Add theme updating overlay capabilities
ProfileFragment: Fix proper string
ProfileFragment: Move the strings for compiling overlays to /res
OverlayUpdater: Fix after overlay metadata rebase
Merge pull request #99 from beanstown106/dev
Uncapitalize the branding in preparation for pull request
OverlayUpdater: Add more descriptive titles
Automatically compile missing overlays when restoring profile
ScheduledProfileService: Use new profile state methods
PriorityAdapter: Adapt with new overlay metadata
ProfileFragment: Use new overlay state structure
ManagerAdapter: Adapt with new overlay metadata
ProfileManager: Add basic method of new profile state file structure
Use proper variant names for overlays manifest
ProfileFragment: Change backup location info
OverlayFound: Use a different icon to distinguish
Internal beta release 722
OverlayAlert: Remove unnecessary layout
Overlays: Try to cancel compile notification on destroy
Optimize and reformat everything!
OverlayAlert: Introduce a checker to see newly installed packages
OverlayUpdater: Allow user to toggle OverlayUpdater (default=false)
OverlayUpdater: Async + Notification
OverlayUpdater: Introduce functional method of automatically rebuilding
OverlayUpdater: Introduce an initial check for updated target packages
Internal beta release 721
ThemeLaunchActivity: Add missing theme extras not passed through intent
Internal beta release 720
ThemeLaunchActivity: Fix theme extras not passed through the intent
Resources: Allow Telegram Build Bot to build Icon Studio-ready builds
Internal beta release 719
SettingsFragment: All exceptions will return network error string
Internal beta release 718
ManagerAdapter: Take account for cache directory and stop FCing
ManagerFragment: Uncheck everything on action completion
Overlays: Consume an activity disconnect
Internal beta release 717
References: Just log it.
References: Do not log by boolean, just do debug builds
References: Set the default theme log to debug builds
AndroidManifest: Change the default style again
References: Call the PreferenceManager rather than calling an instance
References: Do not injectAOPT every single time, only once!
SubstratumBuilder: Don't forget the variants
References: Clean up
References: Remove unnecessary logging
Internal beta release 715
ThemeLaunchActivity: Change default theme
Substratum Release 801
Substratum Template 10.0.0 release
Samsung SeX/TW Rootless Integration: I'd like to thank a bunch of friends who helped me test this out vigorously. We added this support as a small paid addon so you can treat it as a gesture to help us At the current moment, only Nougat based Touchwiz/Substratum Experience ROMs are supported (including custom ported ROMs for older devices)
Addon download: https://play.google.com/store/apps/details?id=projekt.sungstratum (may take a few hours to show up)
- NOTE 1: Android System, SystemUI + elements and Settings overlays are disabled from being shown by default, you can enable this in the app's settings at your own discretion!
- NOTE 2: We have our own XDA thread for this: https://forum.xda-developers.com/apps/substratum/7-0-substratum-sex-tw-beta-t3620796
- NOTE 3: We also have a public Samsung Substratum chat: https://t.me/SeXstratum
Android O DP3 OMS Support (rooted): Thanks a lot to +Ivan Iskandar, we have OMS overlay support on O DP3 meaning that you don't have to reboot for overlays, but you will need root!
Substratum Template 10.0.0 Full Support with Encryption and official partnership with SlimRoms: It is with great pleasure to announce that our 10.0.0 template allows adding support for Slim Theme Engine. We are unable to provide support for their theme engine itself and the bugs it might get/have with themes, but please join their SlimRoms community here to request support: https://plus.google.com/communities/104509876514579429216 (As far as I know, they only support overlays and bootanimations). We would like to thank +Anthony King and +Griffin Millender for enabling encrypted assets on the template!
Template 10.0.0 - Themers: What does this mean for you? This means you can enable Slim support (default disabled) if you are ready to theme for Slim ROM.
Template 10.0.0 - Encrypted Assets: This is the beginning of a new theming standard where we encrypt all our assets on-the-fly during compilation. What this means is that all the files built using this template will be encrypted within the APK rather than overriding your original files in /assets, so you don't have to worry about data loss. You should however keep your theme backed up or under a GitLab/BitBucket private repo as this is good practice in version control. All the files are encrypted into .enc format with a 128bit AES algorithm security so at least we can also try to keep kanging to a minimum!
This also means that if you LOSE your original source you cannot decompile your own theme and copy your assets, as the assets are encrypted with a randomly generated key every time you compile per APK (you don't need this backed up, you don't even need to worry about it if you're not stealing your theme!) This also prevents the recompilation of themes by copying the generated .enc files into a new template.
Template 10.0.0 - Kotlin Integration: With the introduction of final APIs for Android O, we have migrated the template to Kotlin (kt-n branch) and thus deprecated our Java branch (java-n). It is HIGHLY RECOMMENDED to completely wipe your old template in favor of this new system (obviously, keeping assets folder backed up).
This also means that if you were running a third-party modified template with dialogs/dashboard apps built in, this will BREAK it.
Template 6.0.3/10.0.0 - Samsung Integration: There's a new flag to ensure that your theme is supporting the Samsung framework. Give it a go! This will toggle whether to show Android System, SystemUI, Settings and the small side elements by default!
Full changelog (chronological from 731)
Public release 801
InformationActivity: Bring out clean installed overlays for OMS
Full translation import
Public release 800
We're nearly there...796
Update dependencies
Final touches to Samsung Integration
Overlays: Allow Samsung users to batch install/uninstall
ThemeAdapter: Allow Samsung users to uninstall themes too
MainActivity: Adjust the legacy dialog for Samsung users
Internal beta release 795
Merge remote-tracking branch 'origin/dev' into dev
References: Do not show the icon pack beta to release builds
ThemeManager: Ignore pre-installed overlays
ProguardRules: Retain OverlayManager classes
Internal testing build 794
References: Consolidate complexion call and clean up
SettingsFragment: Fix FC on OMS ROMs
Internal testing build 793
InformationActivity: Speed, speed, speed!
Internal testing build 792
Refactor and format all files
SamsungIntegration: When addon is installed, always finish the activity
BootCompletedDetector: Relocate app heavy load on app start
SamsungIntegration: Allow the user to toggle hidden overlays
SamsungIntegration: Move normal telegram link to Samsung
RootRejectedLoader: Add support for Samsung detection
SamsungIntegration: Prepare for public release
AOPTCheck: remove the memory overhead caused by the unnecessary check
Adjust notification channel
Enable Proguard
Use AOSP apksig library to sign overlays
Update gitignore
Add basic sungstratung addon checker
Add calling package name extra to get keys intent
Merge pull request #111 from Thecrazyskull/dev
References: check whether activity instance has been destroyed before accessing preference manager
References: Remove package data schemes from app crash receiver
Update gradle wrapper and plugin
Overlays: Check for encrypted themes by the manifest value
Overlays: Instantiate ActivityManager on fragment thanks @Thecrazyskull
Internal testing release 791
SamsungIntegration: Only show the overlay hiding lunchbar once
SamsungIntegration: Fix the installation status checker on OverlaysTab
SamsungIntegration: When overlays are installed, auto close processes
SamsungIntegration: Try to kill background processes on receiver pickup
LeakCanary: Temporarily disable LC on Samsung builds (REVERT THIS!!!!!!)
SubstratumIntegration: Do not allow Settings Icons
SamsungIntegration: Add a null checker just in case
SamsungIntegration: Do not crash on LogChar error
SamsungIntegration: Add an overlay filter for Samsung theming
SamsungIntegration: Ensure the error message doesn't show up on OMS
SamsungIntegration: Ensure the implementation is self contained
SettingsFragment: Do not add newline by default
SamsungIntegration: Remove newline on platform summary
SamsungIntegration: Disable cache mode
SamsungIntegration: Hide switch and fab menu divider
SamsungIntegration: Disable all overlays when receiver is triggered
Private Samsung testing build 790
SamsungIntegration: When uninstalling any app, update the Overlay tab
SamsungIntegration: Hide the overlay disabling card, we can only do 1by1
SamsungIntegration: Enable manager fragment to uninstall & list overlays
SamsungIntegration: Hide root functions from overflow menu
SamsungIntegration: Hide unused entries, change toolbar name, settings..
SamsungIntegration: Root dialog should not be shown!
MainActivity: Hide Samsung unsupported options from drawer
Overlays: Show toast when overlay is installed on Samsung
SamsungIntegration: Ensure that late install flag only installs on OMS
Overlays: Automatically refresh list when a new package gets installed
OverlaysAdapter: Properly show installed Samsung overlays
SamsungIntegration: Failcases for the user when they do stupid ****
SamsungIntegration: Enable uninstalling of overlays as well
References: Add another debug key variant
SamsungIntegration: Initial commit to get overlays freshly installed
Support caching mode for new template
Substratum: Update API level checker for notification channel creation
ProfileFragment: Support new template for restoring missing overlays
ThemeManager-disableOverlay: Fix crash when overlay list is empty
References: Implement Samsung device checker based on permissions
References: Add a function to enable developers to run bash commands
SoundUtils: Dismiss dialog once applied
FontUtils: Fix mContext null crash during forced configuration change
EncryptedAssets: Handshake should not launch substratum
EncryptedAssets: Disable encryption detection for extras
FileOperations: Remove excess separator
Public beta release 782
Public beta release 781
EncryptedAssets: Properly assign encryption value as null checks
Update travis.yml with changes for Android API 26
Merge pull request #110 from MSF-Jarvis/dev
Internal housekeeping build 780
EncryptedAssets: Suppress warnings for non encrypted themes
OverlayUpdater: Staticize and Reorganize
EncryptedAssets: Perform handshake with theme package to update overlays
Internal housekeeping build 770
EncryptedAssets: Disable for BootAnimations, Fonts and Sounds
Add adaptive icon support
Break free from hardcoded checker
References: Change how we detect OMS
only use checkOreo method and update for odp3
build: Update dependencies
build: Update build tools and SDK version
Full project refactor/optimize
EncryptedAssets: Key retrieval from template initial commit
References: Adapt to the newer template action detection algorithm
EncryptedAssets: Fix application of bootanimation on decrypted devices
OverlaysItem: Fix missing icon
EncryptedAssets: Invoke fragmentalized static objects after fast forward
EncryptedAssets: Add decryption method for fonts
EncryptedAssets: Add decryption method for sounds
EncryptedAssets: Add decryption method for boot animations
EncryptedAssets: Decrypt the bootanimation too
EncryptedAssets: Copy all the types as well
EncryptedAssets: Initial parsing and compilation support
EncryptedAssets: Add initial checking for encrypted assets
Reformat after fast forward
Center all TextViews on the previously simplified layout
MainActivity: Remove Library fragment animation for now
MainActivity: Change deprecated MenuItemCompat method
MainActivity: Remove all leaky statics
MainActivity: Move interfacer authorization receiver with another receiver
MainActivity: Don't hardcode fragment classes name
build: Rename odp flavor
Simplify TextView with images
Go castaway
Remove unused imports
Remove deprecated notification methods
build: update gradle plugin
build: Fix google-services plugin not detected
Use the new complicated notification channel
Properly register receivers for packages change
Use latest preview build tools and add odp flavor
Register broadcast receivers on application class instead
Fix string concatenation in loop lint warning
SubstratumUpdateReceiver: Check for intent action
Hopefully fix the type2 persistence on cache mode
Overlays: Make JobReceiver class non-static
Fix progress indicator position
Overlays: Fix lint warnings
Overlays: Dramatically reduce scrolling lag on first launch
build: Update dependencies and adjust
Fix compile error with Android Studio Canary 2
build: Update build tools
SubstratumRescue: Do not wipe /sdcard/substratum
SettingsFragment: Fix show template version default value
PackageModificationDetector: Use theme icon for notification
Beta release 760
Full translation import
Clean up and format
Recovery -> Restore
TeamFragment: Completely revamp the UI
SettingsFragment: Hide CrashReceiver on Stock OMS
ThemeManager: Check for package when listing overlay using shell method
Gradle: Allow for bots to start building substratum on canary sources
Upgrade the Image Cropper Library
gitignore: Add release folder
build: update dependencies
build: buh-bye Jack
SettingsFragment: Do not show support status at all for stock OMS
SettingsFragment: Hide About Interfacer on Stock OMS
ThemeManager: Allow stock OMS to disable all overlays
Overlays: Revive ability to enable/disable overlays in the manager
RecoveryFragment: Hide fonts if not supported
BootAnimationManager: Clean up the bootanimation clearing function
FileOperations: Just move everything on any exception
BootAnimationUtils: Restore functionality for stock OMS
FileOperations: Root commands don't check source
AppShortcuts: Only v25+ and remove FloatUI shortcut
MainActivity: Remove unnecessary MenuItem and method output types
Clean up and reformat
BootAnimationUtil: Rewrite to be static and O DP2 aware
Upgrade to Gradle 3.5
SoundUtils: No TI, then do not try to dismiss an uninvoked dialog
Clean up and reformat after cherrypick
References: Centralize the fonts checker
SettingsFragment: Set a proper flag for support check
SettingsFragment: Certified even without Interfacer
Hello, O's OMS
Merge pull request #108 from nathanchance/access-service
AndroidManifest: Add ACCESS_SERVICE permission
Merge pull request #106 from sirmordred/dev
Substratum Release 805
Visual Transition between Floating Action Menu and Snackbar exit transition: This one was more of me nitpicking, where I kept noticing small visual bugs when a user starts to go faster than the app during a snackbar's visibility on the view. Now it will dynamically show visibility depending on its state without disrupting the APIs involved.
A Youtube Video to help demonstrate:
Type 2 Spinner Default Texts: Apologies for the previous rollout where certain users found out their themes were showing "type2 variant..." instead of the default text. This was remedied and now unencrypted, encrypted and missing type2 default files now show proper texts.
LogChar Changes: With the 805 rollout, we have committed to a less intrusive way to alert the user when they experience an erroneous compilation issue by showing a snackbar with a nice message and an option to open up the LogChar.
LogChars also save by default now on your internal SD so if a configuration change was forcing Substratum to refresh while the dialog is opened, you can now browse in /storage/emulated/0/substratum/LogChar Reports/ folder to obtain the log and send it to your themer.
Full Changelog
Strings didn't want to be cleaned up earlier
Public release 805
Full translation import
SettingsFragment: Allow the user to toggle automatic LogChar saving
ManageSpaceActivity: Allow the user to clear logs
Overlays: Autosave LogChar files; don't show LogChar by default
InformationActivity: Revamp Fab Click to Lunchbar Dismiss Transition
ThemeAdapter: Do not allow theme to be uninstalled if system app
Overlays: Adapt to no-type2, type2 decrypt and type2 encrypt
Overlays: Nick said the fix needs a fix
Overlays: Fix default type2 name not showing
Substratum Release 812
SystemUI and Android System Crash Detection: A HUGE thanks to +Harsh Shandilya for implementing this feature upstream! This means that 3 crashes of SystemUI or Android System, now causes Substratum to automatically disable the overlay, just like a normal overlay crash. Back then SystemUI and Android System will crash with the overlay enabled indefinitely. This doesn't need any new commits on platform for this to work!
Background Services Fix: We temporarily disabled one of the features where background services were killed no matter what theme service you were on (OMS/Legacy) to try and prevent a noticeable asset refresh the next time you launched an app. This will still take effect on Samsung devices, but we will look into what kind of workaround we can lock this feature down for OMS devices too, so that we can ensure apps like apps with services that keep an app open (which prevents assets redraw) will be themed without a reboot, such as Google Search! Thanks a lot to +Faiyaz Sheth for finding the section of code that was causing the background service to die and +Harsh Shandilya for ensuring the code worked!
Legacy Theme Overlay Uninstall: A bug was fixed where when you tried to uninstall an overlay from inside the theme, it would not uninstall properly. Thanks to +Ivan Iskandar for finding the source of the issue!
Full Masquerade Deprecation: Masquerade is fully EOL from this version onwards. Please move to a Theme Interfacer build to continue using substratum.
Themers: We ensure that people on Xposed N now shows up on logs. Whether you provide support is on you!
Full changelog
Public release 812
SettingsFragment: Hide Samsung Dangerous overlay option on legacy
Clean up all of the XML files
MainActivity: Fix String build after translation refresh
ProfileFragment: Fix String build after translation refresh
Clean up and reformat after fast forward
ProfileFragment: Fix missing String pointer from consolidation commit
Update Gradle dependency for Android Studio Canary 8
Full translation import
Overlays: Only kill background packages on Samsung devices
ShowcaseActivity: Change search URL to samsung themes on samsung devices.
MainActivity: Hide the button to sungstratum play store by default
Overlays: Fix overlays with type3 isn't removed properly
AppCrashReceiver: Simplify switch logic a bit more
AppCrashReceiver: Remove the SystemUI crash count pref earlier
AppCrashReceiver: Change the if-elif-else ladder to switch
AppCrashReceiver: Handle SystemUI crashes properly
TeamFragment: Add LunchBar to all exception catch branches
AppCrashReceiver: Fix Harsh's derp - variable not declared before usage
Refactor and format after cherry pick
References: Slightly tweak LogChar file names
AppCrashReciever: Only log overlays to be disabled if there are any.
References: Slightly change up how checkPackageSupport works
Substratum: Sync down blacklisted packages at boot time
ManagerFragment: Add dismiss button on reboot dialog
OverlayFunctions: Don't restart SystemUI on legacy
BootCompletedReciever: Fix lint warning for clearSubstratumCompileFolder
RescueActivity: Also disable SystemUI overlays
AppCrashReciever: Improve logging
MainActivity: Don't create CountdownTimer object
Substratum: Cleanup LunchBar classes
Long live masquerade
ThemeManager: Don't restart SystemUI on framework overlay change
SamsungIntegration: Allow for devs to toggle whether to hide overlay
MainActivity: Show a toast when LogChar reports are cleared
References: Clear the logchar auto cleanup prefs on reset
Substratum: Add preference to auto clean saved LogChar reports
OverlaysItem: Remove unused method
References: Fix logspam in isAuthorizedDebugger
SubstratumRebase: Rebase on lint from Android Studio Canary 7
Substratum: Add a few null asserts
References: Clean up lint again
References: Surround dynamic shortcuts assignation with null checks
References: It is no longer a safe, peaceful world...
SplashScreenActivity: Apply the SharedPrefs following completion
Update gradle
References: Lint cleanup
References: Clear the restore warning pref on configuration reset
ManageSpaceActivity: Remove unused Context variable
RecoveryFragment: Make sure the restore info dialog gets seen
Substratum: De-duplicate dialog okay/cancel strings
MainActivity: Change FloatUI permissions toasts to AlertDialogs
Substratum Release 818
This is a rather huge update, thanks to all the testers, and would like to welcome @MSF Jarvis to the development force!
To everyone, our Telegram chats are now consolidated to one public chat holding the links to every other chat. We found out that the links being reposted in each supergroup description was a bit too much, so we instead replaced it with a link portal. We have on-topic chats (strict, subs only) and off-topic chats (that are full of current generation spicy memes!), to join, click here! https://t.me/substratum
Substratum Overlay Signature Change: Thanks to simordred, we now use a precompiled signature, meaning that we eliminate the possibility that if someone wipes the app, the signature that was generated would not be wiped and would fail to install over a current overlay that isn't the same signature. What this means is that we have added a dialog to alert the users when a pre-815 overlay was found, so we kindly ask you to clean out your current overlays so that you can freely update to new overlays in the future.
Substratum App Cleanup: We have removed a bunch of redundant code recently relating to things that aren't released as well as done a bunch of extra null checks all around. We removed a few tweaks that weren't too popular in Settings under the theming section (Dynamic Nav/ActionBar) and we also removed the sheet that pops up asking if you would like to show outdated themes (it is still toggle-able in settings).
I would also like to thank @MSF Jarvis and @Surge1223 for checking a whole ton of the files for redundancies and cleaning out everything, you guys were awesome! Finally, we'd like to thank @maxwen for the tip on app icons and drawable casts!
Beta features now ironed out with newest Encrypted Assets: Previously our beta features of automatically recompiling installed overlays were not automatically compiling but instead, force closing Substratum. We have remedied this issue, thanks a lot to +Harsh Shandilya!
Substratum Rescue Updates: Thanks a lot to @Surge1223, we now ensure that all rescue archives are fully up to date at all times! This means that you will never be flashing an old rescue archive again!
Legacy/RRO/Samsung: We have added a new Setting for you to manually adjust overlay priority! This allows you to control how prioritized your overlay is before compiling. We have options for you to have priority counts 1-999! (255 is default)
Themers: By popular request, we have updated the LogChar share format so that it also includes the Theme Name in the file!
Full Changelog
References: Give a more descriptive log to detection of OMS
Public Release 818
References: isOMSRunning fallback to cmd overlay root check for O DP4
Strings: Change SystemUI restart button for enable/disable
Public Release 817
ShowcaseTab: Change Android O cast derp
Public Release 816: It's time!
Substratum: Add all missing casts
It's not that great to uninstall all overlays
ThemeManager: Allow bypassing SystemUI restarts
MainActivity: If user's overlays are outdated, alert them to uninstall
Reroute Telegram links to Link Portal
BootAnimationManager: Fix bootanimation application
References: Correct OMS detection logic
SplashScreenActivity: Do you even english bro
Substratum: Nuke incompatible firmware warning
Substratum: Nuke the dynamic_{actionbar,navbar} prefs
AppIntro: Don't let it to be seen again after clearing data
References: Properly initialize values on succession of AppIntro
Build.gradle: 3.0.0beta1 -> beta2
References: Default to 6.0.0+ template
MainActivity: Do not create a CountDownTimer object
MainActivity: Nuke the Pre-6.0.0 template chooser
Substratum: Fix ThemeUninstallDetector fail
AOPTCheck: Correct FileOperations#copyFromAsset call
WeakReferences: Prepare null check garbage collection per async phase
FirebaseAnalytics: Remove unused method
FileOperations: Fix Oghuzan's derp
Subs: Remove unneeded dependency
Subs: Use pre-generated keystore * And fix some nitpicks
SubstratumBuild: Update support libraries to 26.0.1
TravisCI: Update build tools to 26.0.1
Proguard: Don't warn about the new OMS jar classes and methods
ManagerFragment: Clear out icon overlay filtering logic
Refactor and format after cherry-picks
Proguard: Fix up the new OMS library for release builds
LogChar: Remove the space in the folders name. This is not Windows
Gradle: Update to 3.0.0-beta1 and build-tools 26.0.1
OMS API update test part2: Include new jar for testing next interfacer This new jar has the updated stubs and api updates for current testing
References: Change EXTERNAL_STORAGE_CACHE variable to be full path
API 26 Compatibility: Allow building for target and min api 26
Overlays: Refactoring of the overlay tabs
References: Use ActivityManager to detect OMS
SubstratumRescue: Make sure substratum dirs exist and force copy rescue zips
AOPT: update to new binaries after several commits worth of change
ManagerFragment: Correct legacy warning dialog logic.
ElevatedCommands: Remove unused methods
SettingsFragment: Test maximum value in priorities
InformationActivity: Debug the hero image
Strings: Update our homepage
Overlays: Send the theme name in LogChar attachement
Profiles: Mark it as a beta function for now
RRO: Max out priorities as default
References: Re-ensure further checks for null before comparison
ManagerFragment: Add warning for legacy users
SettingsFragment: Allow user to change the RRO priority for overlays
EncryptedAssets: If the theme target is not encrypted, do not unload LBM
References: Add getBitmapFromDrawable
PackageModificationDetector: Handle cases where app icon is not BitmapDrawable
References: Guard against possible null build date prop
References: Clean up color checker comment and upgrade gradle
Revert "References: Fix ugly method"
References: Fix ugly method
SubstratumCleanup: Icon pack support leftover cleanup
TeamFragment: I'm team now
PriorityAdapter: Address lint
SamsungIntegration: Unify fingerprints to prevent mischecks
SamsungIntegration: Clean up Firebase calls
SubstratumActivity: Supress useless lint warning
Fix future derp
Tiles: Use startActivityAndCollapse for launching intent
BootCompletedReceiver: Don't fetch packages from firebase
Substratum: Remove icon pack tooling
RIP IconStudio
gradle: update to alpha9
Move build script to its own repo
Fix gradle.build for signing configuration
makeapk: Use APK_OUT more and fix APK_NAME
makeapk: Fix fails
makeapk: Improve help text for version flag
Initial automated build script
travis: Cache ANDROID_HOME
Try to withdraw package list on every app launch
Add encrypted travis to Slack integration
There's still a little bit of freedom
InformationActivity: Dismiss dialog before running any actions
Overlays: Fix up background app killing logic
Remove System Independece Mode option
No need for this fix anymore
Update apksig to 2.5.0-alpha-preview-2
Revert "Revert "debug builds: show git HASH on filename & in Settings""
SamsungIntegration: Allow silent installs to show progress bar
SamsungIntegration: Allow for users with root to do things silently
InformationActivity: Dramatically speed up hero image loading
InformationActivity: Attempt to cancel AsyncTask onDestroy
Overlays: When encrypt mode fails, show a Lunchbar alerting the user
Provide a more descriptive error message for TI exception
Upgrade build.gradle dependencies
Substratum Release 820
Substratum Crash Handler: We now have a way to catch force closes and an easy way to send them to us! If you face a crash, please use our new UI and click stack trace, then send it to us through our JIRA!
Type4 Introduction: This allows themers to add support for assets theming, such as Telegram Emojis or SwiftKey Themes! Possibly even Gboard assets! Check out +Harsh Shandilya, +OhayouBaka!, +Sai Prasanna, +Andrew Traynham and +Bryan Owens' themes to get a taste of Type4s!
ZipAligning Overlays: All compiled overlays with newer versions of Substratum will now be ZipAligned for overall system performance, HUGE thanks to @arter97! This should solve many system performance issues if you faced any in the past! This will also set a standard for overlays compiled from now on! No new platform commits needed, all will be handled by our substratum in-app compiler!
A bunch of cleanup: Thanks a lot to @iskandar1023 and @MSF Jarvis, we have cleaned even more of the underlying code including the splash screen codes and overlay manifest code! Also thanks a lot to everyone in our CI-feedback channel on Telegram for reporting bugs immediately to us, including @Mazda, @r1l_Alex, @mosimchah, @fhem and many more! The latest build has been serving us greatly the past few days, including many of the force closes being resolved!
UI Changes: We have made the LogChar dialog more like the Crash Activity's dialog, more materialized and streamlined. We also moved the toggle all overlays button in the Overlay List fragment, out of the floating action menu, so people know it's there!
Full changelog:
SubstratumCrash: Allow the crash log to be selectable
ProfileManager: Take account for the other crasher
ProfileManager: Ensure null checks are put in place if overlay outdated
ManagerFragment: Bring out the toggle from the floating menu
Substratum: Start fixing lint warnings
AppCrashReceiver: If no overlays are enabled, bail out early
FloatUI: Update the FloatUI button
Type4: Allow FloatUI to show proper type4s
Introducing Type4 assets overlaying template
Overlays: Suppress exception print when /res is empty
Overlays: Drop the progress wheel lower
Update contributor list
InformationActivity: All toasts to lunchbars, omnomnom...
InformationActivity: Glide; do not use any cache
SubstratumBuilder: Fix late install for special overlay
CompilerCommands: Remove log printing entire manifest
SubstratumCrash: Filter out the list of exceptions to Resources.java
EncryptedAssets: Update the snackbar with proper instructions
RecoveryFragment: Safeguard the context while uninstalling overlays
Revert "GarbageCollection: Call GC on reloads of fragments/activities"
References: Null check when it detects what device is being used
OverlayFunctions: More crash fixes
MainActivity: Do not show outdated dialog when the user is too fast
Refactor and clean up
GarbageCollection: Call GC on reloads of fragments/activities
LogChar: It's no longer a figure of speech, it's a noun
LogChar: Completely materialize the UI
SubstratumCrash: When the app crashes randomly, catch it
Overlays: OnResume should refresh the fragment list
CompilerCommands: Append missing Substratum_Target metadata
Substratum: Fix tinting for Jira navdrawer icon
CompilerCommands: Completely rewrite how we generate overlay manifests
ThemeManager: Simplify the shouldRestartUi methods
gradle: Update dependencies
gradle: Add option to use D8 preview
Substratum: Change Jira link to service desk
MainActivity: Add Jira to the substratum resources section
ThemeManager: We changed the method name
ThemeManager: Only restart systemui once on overlay uninstall
OverlayFunctions: Fix various crash when switching overlays
i don't know what to say about this tbh
SplashScreenActivity: Add timeout for each wait loop
SplashScreenActivity: Always show loading spinner
Disable Firebase crash collection on debug build
OverlayFunctions: Do not hardcode sysui reboot
Merge pull request #126 from arter97/dev
ZipAlign APKs
AOPTCheck: avoid unnecessary object creation
Substratum Release 822
Substratum Crash Handler: We now have a way to catch force closes and an easy way to send them to us! If you face a crash, please use our new UI and click stack trace, then send it to us through our JIRA!
Type4 Introduction: This allows themers to add support for assets theming, such as Telegram Emojis or SwiftKey Themes! Possibly even Gboard assets! Check out +Harsh Shandilya, +OhayouBaka!, +Sai Prasanna, +Andrew Traynham and +Bryan Owens' themes to get a taste of Type4s!
ZipAligning Overlays: All compiled overlays with newer versions of Substratum will now be ZipAligned for overall system performance, HUGE thanks to @arter97! This should solve many system performance issues if you faced any in the past! This will also set a standard for overlays compiled from now on! No new platform commits needed, all will be handled by our substratum in-app compiler!
A bunch of cleanup: Thanks a lot to @iskandar1023 and @MSF Jarvis, we have cleaned even more of the underlying code including the splash screen codes and overlay manifest code! Also thanks a lot to everyone in our CI-feedback channel on Telegram for reporting bugs immediately to us, including @Mazda, @r1l_Alex, @mosimchah, @fhem and many more! The latest build has been serving us greatly the past few days, including many of the force closes being resolved!
UI Changes: We have made the LogChar dialog more like the Crash Activity's dialog, more materialized and streamlined. We also moved the toggle all overlays button in the Overlay List fragment, out of the floating action menu, so people know it's there!
Full changelog:
Public Release 822
InformationActivity: Fix wallpaper not loaded
Public Release 821
ManagerFragment: Hide the toggle when RecyclerView doesn't exist
SubstratumCrash: Allow the crash log to be selectable
ProfileManager: Take account for the other crasher
ProfileManager: Ensure null checks are put in place if overlay outdated
ManagerFragment: Bring out the toggle from the floating menu
Substratum: Start fixing lint warnings
AppCrashReceiver: If no overlays are enabled, bail out early
FloatUI: Update the FloatUI button
Type4: Allow FloatUI to show proper type4s
Introducing Type4 assets overlaying template
Overlays: Suppress exception print when /res is empty
Overlays: Drop the progress wheel lower
Update contributor list
InformationActivity: All toasts to lunchbars, omnomnom...
InformationActivity: Glide; do not use any cache
SubstratumBuilder: Fix late install for special overlay
CompilerCommands: Remove log printing entire manifest
SubstratumCrash: Filter out the list of exceptions to Resources.java
EncryptedAssets: Update the snackbar with proper instructions
RecoveryFragment: Safeguard the context while uninstalling overlays
Revert "GarbageCollection: Call GC on reloads of fragments/activities"
References: Null check when it detects what device is being used
OverlayFunctions: More crash fixes
MainActivity: Do not show outdated dialog when the user is too fast
Refactor and clean up
GarbageCollection: Call GC on reloads of fragments/activities
LogChar: It's no longer a figure of speech, it's a noun
LogChar: Completely materialize the UI
SubstratumCrash: When the app crashes randomly, catch it
Overlays: OnResume should refresh the fragment list
CompilerCommands: Append missing Substratum_Target metadata
Substratum: Fix tinting for Jira navdrawer icon
CompilerCommands: Completely rewrite how we generate overlay manifests
ThemeManager: Simplify the shouldRestartUi methods
gradle: Update dependencies
gradle: Add option to use D8 preview
Substratum: Change Jira link to service desk
MainActivity: Add Jira to the substratum resources section
ThemeManager: We changed the method name
ThemeManager: Only restart systemui once on overlay uninstall
OverlayFunctions: Fix various crash when switching overlays
i don't know what to say about this tbh
SplashScreenActivity: Add timeout for each wait loop
SplashScreenActivity: Always show loading spinner
Disable Firebase crash collection on debug build
OverlayFunctions: Do not hardcode sysui reboot
Merge pull request #126 from arter97/dev
ZipAlign APKs
AOPTCheck: avoid unnecessary object creation
Public Release 841
Following the official XDA article, we will be rolling out the Andromeda app that is current sitting on our alpha testers page for what felt like weeks! The desktop companion is available to download NOW with instructions on our thread here: https://forum.xda-developers.com/apps/substratum/andromeda-desktop-clients-release-notes-t3668682
Android Oreo Andromeda Integration: We are ready, but won't be releasing Andromeda's plugin just yet until the XDA portal goes live
Manager Fragment Changes: Thanks to +Yechiam Weiss, we have a swapping button that swaps the current state of each of the overlays. We retained the disable all button just in case you don't want to swap overlay states.
Android Oreo Rooted Tweaks: We added extra features like a silent SystemUI restart mode, so that if you don't want to restart your SystemUI in a destructive behaviour, you can disable it in Settings and it will clear all non-ongoing notifications to refresh the notification color cache.
Android Oreo Integration: We have full support for most of the new APIs for third party developers now too, meaning that our code is fully streamlined for Oreo's Adaptive Icons from external apps as well as our app fully adaptive icon'd!
Random image glitch fixes: We have migrated off Glide for both Priority Switcher and Hero Image loading. Some people may have noticed that you may get some incorrect images when you move too fast or just completely random. This remedies that issue and no longer causes sporadic incorrect images from being shown. We have tried multiple levels of caching and removal of caching as a whole with no avail. Our new implementation works for our usage case.
FloatUI Oreo Fixes: A severe crash has been found and fixed due to API-level changes. Thanks to +Ivan Iskandar!
Deprecation of Libraries and overall clean up: Thanks to +Harsh Shandilya, we have reduced a significant amount of dependencies that Substratum uses. He also fixed up many small, but destructive bugs (that happened rarely). Also fixes to the BinderService as well as cleaning up the commit validator. Not only that, but many dynamic context fixes to reduce re-calls causing null pointers.
Substratum exclusivity sandbox: If an overlay was NOT installed and created by Substratum, it will no longer remove it. Allowing users on Android Oreo to create their own overlays that they want to use with the built in Android Oreo Framework theme picker. This does not mean you can use overlays from other devices/recompiled as Substratum will no longer detect them as a whole. Thanks to +Ivan Iskandar!
Full Changelog:
Public Release 841
Overlays: Adjust when to hide/show the progress bar
Move FinishReceiver to application class
Fix compile enable special overlays on Oreo
Wait for package to properly installed before continue on andromeda
Upgrade gradle dependencies
Revert "Substratum: Change notification to IMPORTANCE_LOW for Andromeda"
InformationActivity: Do not show Restart SystemUI for Andromeda users
RecoveryFragment: Remove the poorly setView'd dialog
AndromedaBinderService: Unique notification id for bad notification
InformationActivity: Add icons to EnableDisable sheet fab entry
IA/Overlays: Replicate enable/disable button functionality from ManagerFragment.
Andromeda: Mitigate
Substratum: Change notification to IMPORTANCE_LOW for Andromeda
Beta release 840
AndromedaBinderService: Don't keep launching InfoActivity
Beta release 839
MainActivity: Do not just finish, restart the app
Beta release 838
MainActivity: Harsh forgot to update LogChar SharedPreference
Internal release 837
Substratum: Fix crash when clicking Featured content
Internal release 836
AndromedaBinderService: Introduce a simple service keep-alive mechanism
OverlayFound: If Andromeda was installed, relaunch Substratum
MainActivity: Modularize the root requester
Release 835
Clean up and reformat
Manifest: Remove unused permission
Release 832
ManagerFragment: Something went wrong crashing Samsung devices
ManagerFragment: Add back enable overlay function
Release 831
Subs: better workaround to get Current User Id
Release 830
Strings: Andromeda timed out string should be more friendly
Release 829
MainActivity: Add missing break in nav drawer
Release 828
TeamFragment: Update Nick and Syko's pics
Strings: Troubleshooting -> FAQs
MainActivity: Officially endorse our Reddit community /r/Substratum
SubstratumFloatInterface: Android System overlays will now show state
RecoveryFragment: Do not show the dialog on Samsung devices
Release 827
ManagerFragment: Repair the logic in sorting overlays
CrashActivity: Enforce textColorPrimary on buttons
SettingsFragment: Adjust the Restart SystemUI toggle
Release 826
SettingsFragment: When clicking About Samsung, launch Theme Killer
SettingsFragment: Add about sungstratum section
ManagerFragment: Pick off where Harsh started
Revert "ManagerFragment: Fix FAB glitch when switching sorting modes"
MainActivity: Initialize context earlier
Release 824
SettingsFragment: Add about andromeda section
References: Ivan, whatchu doing...
Strings: Be more descriptive with the warning
SettingsFragment (O): Warn the user when they disable auto restart sysui
Adjust adaptive icon and add back round icon
MainActivity: Get ready for Andromeda users
ManagerFragment: Clean up redundant casts after variable reassignment
ManagerFragment: Re-add some functionality for OMS
ManagerFragment: When an overlay is not selected, show toast
ThemeManager: Do not fallback on any state
Clean up after commit fast forward
build: use new dependency configuration
Upgrade Glide to version 4.1.1
Castaway Season 2
SubstratumFloatInterface: Disaster mitigation
Add andromeda fingerprint check
Upgrade gradle plugin and dependencies
Deprecate the OMS library
PriorityAdapter: Directly use drawable for icons
ThemeManager: Don't list overlay not built by substratum
MainActivity: Don't clean up overlay not built by substratum
Change adaptive icon background
Reduce bloat size a little bit
Revert "SplashScreenActivity: Do not withdraw blacklisted packages"
Refactor and format after fast forward
ManagerFragment: Fix derp on logic for OMS users in previous commit
ManagerFragment: Replaced "Enable Selected" and "Disable Selected" with "Enable/Disable Selected" which is only visible for OMS, while for RRO only "Disable Selected" is visible.
ManagerFragment: Added a simple check for non-OMS that hides the "Enable Selected" button in the FAB, can now safely remove OMS checks in that button.
Substratum: Add Yechiam to contributors
Substratum: Remove "hide disable overlays" toggle
ManagerFragment: Fix FAB glitch when switching sorting modes
Overlays: Don't always unselect everything
SubstratumFloatInterface: Simplify loading of framework overlays
InformationActivity: Clean-up variable usages
MainActivity: Reduce the getApplicationContext() calls
SplashScreenActivity: Do not withdraw blacklisted packages
Refactor and format after cherry pick
Showcase: Add Samsung Tab
Showcase: Add new section for wallpapers
Libraries: Remove numberprogressbar
Substratum: Remove the automatic LogChar cleanup toggle
SettingsFragment: Use a StringBuilder to set title
ValidatorDialog: Add some padding around the progressbar
Overlays: Always set progressBar to View.GONE when start{Enable,Disable} exit
CommitValidator: Nuke the progress bar
AndromedaBinderService: Do not fire notifications multiple times
AndromedaBinderService: If Andromeda Server not running, launch the app
AndromedaBinderService: Various changes
ThemeManager: Blacklist all SystemUI derivates for Samsung
SettingsFragment: Don't silently consume exception
ThemeManager: Don't crash out if cmd overlay list returns null
MainActivity: Remove link to thecyberfibre and fix-up XDA link
Substratum: Remove libraries we don't use any more
Revert "Overlays: Force-start BinderService when processing events"
Move andromeda notification to its own channel
Overlays: Force-start BinderService when processing events
OverlayList: Add sorting options
Substratum: Deprecate the Lemniscate library
SubstratumFloatInterface: Clean up how we populate the overlays list
AndromedaBinderService: Do not attempt bind if bind not available
BinderService: Only show notification if Oreo
BinderService: Andromeda calls shouldn't have been placed here
Substratum: Ensure andromeda checks only on API26 and Andromeda Mode
AndromedaIntegration: When the service dies, alert the user.
ThemeManager: Use hidden Andromeda folder
ThemeAdapter: Allow users to uninstall themes on Andromeda Mode
SettingsFragment: Do not show commit validator on Andromeda mode
ValidatorAdapter: Fix the missing package name
SubstratumFloatInterface: Use TYPE_APPLICATION_OVERLAY to show dialog
MainActivity: Andromeda does not support SystemUI restarts
InformationTabsAdapter: Allow for tabs to be disabled easily
WallpaperAdapter: Remove unused code
InformationActivity: Do not use Glide when loading hero images
PriorityAdapter: Do not use Glide to load priority app icons
ThemeManager: Fix checking of overlays for priorities
ThemeManager: Change how we refresh SystemUI
AndromedaIntegration: Allow for a more securely bridged connection
MainActivity: Try to fix the start of Samsung
References: Allow the grabAppIcon function to support Adaptive Icons
RecoveryFragment: Do not show sounds on Andromeda
MainActivity: Clean up root check conditions
MainActivity: Fix root check
ThemeManager: add null check before splitting
AndromedaIntegration: Priority switching is instant now
AndromedaIntegration: Introduce the stock Android O Backend "Interfacer"
SplashScreenActivity: Always show progress spinner
ThemeManager: If on Oreo, you get an option to skip restarting SysUI
References: Bring back checkOreo for SDK checks
Substratum Release 851
Completely new default grid layout UI: As of this version onwards, we will now ship the application with a completely new UI that allows you to see more theme cards at once on a single screen. This is always revertable in Settings, where you can adjust how many columns are visible at a given time. This also comes with the new animation after the theme loads.
New theme advanced information sheet UI: We have added a sheet dialog with more information when long pressing a theme in the main screen. You can now Favorite, create launcher icon, uninstall, and see theme ready status all from that screen now!
Android Oreo Interfacer Support: Slowly does it, our test bench devices with the new Interfacer on Oreo will now support Shutdown Animations. More information regarding this later.
Speed improvements: Through our testing, we have sped up loading theme packages from max 1 sec to 16ms, enjoy! This also means that I was using my Nexus 5 to be the tester, and it was flying overall!
Deprecation of Theme Caching Mode: As of this version onwards, we will no longer allow themes to be decompiled in the substratum's cache (remember those days when your app data had like a few gigabytes? people still used it for theming locally). We no longer support this function and have completely removed it from the app, clearing up a LOT of code in the process.
Hero image customizations: Thanks to @MSF Jarvis, themers now have the option to supply a new hero image type, namely heroimage_banner.png (or whatever extension) to force the hero image to change to a specific image. There is also a way to change the style of the grid hero image, by creating a file called heroimage_grid.png (or whatever extension) in the same folder of your current hero image!
Andromeda updates and Oreo changes: All the credit goes to @iskandar1023, where he created many new features to incorporate with the Android Oreo notification channel system, allowing users to adjust notifications on the fly without adverse effects. You can also now click on the Andromeda version to launch Andromeda's status screen! When your server gets disconnected, the app will NO LONGER close, as we have deemed that as bad UX, so instead, we close all opened activities except MainActivity, and showed a dialog telling the user to rerun the desktop client!
Source code changes: We have completely rebased the application once again and the structure of the References class has been split up to more suitable named classes. We also removed a bunch of redundant code in the process, where duplicate classes were found in other fragments/activities, where we could have just slimmed it down to one. A bunch of methods have been consolidated and thus allowing us to ship a cleaner, more streamlined product!
Hold on to overlay to show target application version: Thanks to @MSF Jarvis, a long awaited feature for themers is to hold on to the overlay inside the Overlay Manager, to show a snack bar or the version of the main app, able to be copied to the clipboard!
Search in Overlay List fragment: Huge thanks to @YechiamTK for implementing both the search bar commits and the sorting commits. We have found the root cause for issues that were on certain devices (no overlays found) and have remedied this issue!
Settings clean up: We have went for an approach to simplify and streamline the experience for more users. Repetitive words were eliminated and overall a more engaging experience.
Attention: We have adjusted some wording due to the sheer amount of users asking the reasoning in the theme systems section of Settings. "Rootless mode" is now called "Native mode" and "OMS7" is now "[projekt.] OMS", so we have a more specific set of systems, easily understandable.
Full Changelog
Public release 851
ThemeFragment: If Nougat style cards selected, don't touch padding
Full translation import
Public release 850
OverlaysAdapter: Convert version toast to version lunchbar
References: Add RecyclerView animation setter to a centralized zone
OverlaysAdapter: When long pressing a card, consume the touch event
ThemeFragment: Dynamically adjust RecyclerView if Grid mode selected
PreferenceFragment: Unify the texts to AOSP style
Final resource clean up
It's not 2015, we no longer need to use the caching system after DA
TroubleshootingFragment: Remove the redundant question of theme errors
Clean up and remove unused resources
ShowcaseTile: The tile icon goes too
ShowcaseTile: Deprecate the tile
Theming: WeakReference the context in SubstratumThemeUpdate
Substratum: Allow supplying custom heroimage for KenBurnsView
Substratum: Update translators array
MainActivity: Allow themers to supply a separate heroimage for gridview
Overlays: Use FileProvider to access logchar file
SettingsFragment: On Oreo, manage notifications menu should go to notification settings instead
ThemeManager: Add state for listing overlays with missing target
ManagerFragment: If the target application is not installed, ignore!
ManagerAdapter: Set the label name earlier for correct sorting
InformationActivity: Allow themers to force colors of the toolbar icons
SubstratumWallpapers: If you didn't provide a link, hide the tabs
ThemeAdapter: I missed this one to staticize
InformationActivity: If you're only shipping overlays, don't show fab
Systems: Supported ROMs downloader migration to FileDownloader
Wallpapers: Migrate to the FileDownloader class
WallpaperAdapter: Migrate to the FileDownloader class
Deprecate AutoTextResizer and use TextViewCompat with granularity
SubstratumRebase: Sort out References.java and major code cleanup
WallpaperAdapter: Rebase the whole setting wallpaper options
ThemeFragment: Your phone must be old and messed up to reach this case
ThemeFragment: Add another null check
ThemeFragment: Set to default references value instead
ThemeFragment: Enforce null check on substratum_packages
ThemeFragment: Enforce final AsyncTask to static
SettingsFragment: It's Close, not Cancel
Strings: Plurals for notification channel management
SettingsFragment: Do not show soft keyboard, there are only 4 options...
Strings: Update to auto updater to non-beta status
SettingsFragment: Allow launching Andromeda status from Settings
Clean up and reformat
ManagerFragment: Fix all the bugs with the searchView
ManagerItem: Do not privatize callable getLabelName()
ManagerFragment: Fixed search bar commit.
ManagerFragment: Added search bar. Overlays_list_menu.xml: Updated item to work properly with search bar.
Rename "Rootless mode" to "Native mode"
References: Enforce null check on checkThemeSystemModule()
WallpaperAdapter: Add a fade_in animation for wallpapers
Legacy: Speed up legacy by ignoring overlays_legacy
InformationActivity: Fix weird tab behavior
Full translation import
SubstratumRebase: Here we go again...
MainActivity: Fragment Transaction local variable instead of global
MainActivity: Slim down
Convert everything that is a PNG (except team icons) to WEBP
Revert "Make notification channel preference item open the channel list in settings"
Revert "SettingsFragment: Fix Manage Notification Channels button"
Finally fix build
Compile the support annotations
Merge remote-tracking branch 'origin/dev' into dev
ManagerFragment: Fixed sorting algorithm. ManagerItem: Added compareTo's for name and theme, in use for sorting.
InformationTabsAdapter: Use fragment name values from References
MainActivity: Add shutdown animation to drawer
BootAnimationTab: Add shutdown animation bits
BootAnimationManager: Add method to apply shutdown animation
InformationActivity: Use reflection to check theme shutdown animation support
ThemeAdapter: Included a Null check for themes that don't include themeready variable.
AndromedaBinderService: Only show binded message when verified binded
ThemeAdapter: Do a null check for packages installed by Studio/ADB
InformationActivity: Only show shutdownAnimations on Interfacer builds
Ensure the build is fixed
Clean up after cherry-picking
ManagerFragment: Got rid of Comparator ****show and implemented the quicksort algorithm myself instead.
Revert "Revert "ManagerFragment: Fix derp on logic for OMS users in previous commit""
Revert "Revert "OverlayList: Add sorting options""
Make sure to check before starting binder services
ShutdownAnimations: Initial commit to prepare for shutdownAnimations
onDestroy: Only kill Andromeda receiver on Andromeda based devices
ThemeAdapter: Set animation on each individual card
ThemeAdapter: Add simple fade animation for RecyclerView
AndromedaIntegration: When the server kills, show a dialog instead
AndromedaBinderService: Do not kill when Andromeda is not connected
SettingsFragment: Hide detailed information option when above 1
ThemeFragment: Simplify the Settings adjustment
Remove some FAQs that aren't relevant in the 21st century anymore
SettingsFragment: Move notification management up
References: Don't log package info in the logcat anymore
SettingsFragment: Hide Restart SystemUI on Andromeda devices
SettingsFragment: Fix Manage Notification Channels button
ThemeAdapter: Move Rate theme out of IA
ThemeAdapter: Use dismiss instead of hide for sheet dialog
ThemeAdapter: Show version code in sheet dialog
ThemeAdapter: Hide sheet dialog when uninstall is clicked
References: Let's just keep the default as carded layout in grid
ThemeAdapter: Redesign the About theme section
Update translator contributor array
ThemeAdapter: Show theme ready status
Resources: Clean up unused signature keys
ThemeAdapter: Adapt to AdaptiveIconDrawables and new Oreo launcher APIs
ThemeAdapter: Adapt to Oreo
SettingsFragment: Clean up
SettingsFragment: Harsh, y u no fex
ManagerAdapter: Show overlay's substratum compiled version
ThemeFragment: If detailed info enabled, hide it automagically on new UI
ThemeFragment: Completely revamp the long press on theme sheet dialog
ThemeFragment: Don't allow "Theme packs" to be selfish anymore
Clean up and reformat after cherrypick
ThemeFragment: Speed up gathering the theme packages from 1.6s to ~15ms
OverlaysAdapter: Add longpress to show package version
SubstratumUI: Set a new grid based user interface as the default UI
Deprecate the MaterialProgressBar library
PriorityLoaderFragment: Center the emoji to the center of the screen
Priorities: Remove all the instructions and move them to a dialog
I don't like the RootRequester image anymore, change it!
MainActivity: Remove unnecessary countdown timer and string changes
ManagerFragment: Remove excessive null check
Clean up external overriden classes from AOSP
Clean up Service classes from cherry picks
Revert "OverlayList: Add sorting options"
Revert "ManagerFragment: Fix derp on logic for OMS users in previous commit"
ThemeManager: On Oreo, use interfacer to get installed overlays
InterfacerBinderService: Run as foreground service on Oreo
MainActivity: Don't ask for andromeda if interfacer present
Merge pull request #132 from boswelja/dev
Only create intentAppCrashed when needed * getAndromedaPackage can be private
Only create notification builder if there isn't already a notification showing
Push "bad" notifications to andromeda status channel * Previously, if andromeda was disconnected and you launched substratum, you would get a notification in the default channel. Now, the notification is sent to the andromeda status channel * Also move notification builder creation to the method
Substratum: Reorganize
Substratum: Clean up some Binder functions
Full import for translations
Clean up unnecessary styles and make the compile dialog darker
Add missing file to be committed
Deprecate the BlurView library
Update gradle version
Clean up and optimize after fast forward
Substratum Release 912
It's been a while, eh? We've noted down a ton of bug reports from the many prior builds as well as gotten help from a bunch of new and old contributors!
This is a MAJOR upgrade, and has been tested by many people in our feedback channel, but with the sporadic nature of RRO and OMS, there can never be 100% no bugs, but we are trying our hardest!
Andromeda users: We have added specific commits to ensure smooth delivery on 8.1 devices with this new update. We will soon have some new features to Andromeda from +Surge Raval, hopefully something called "untethered mode".
Custom ROM users and devs: This new upgrade adds support for Android Oreo custom ROMs and our new "Substratum Service" by our very own +Ivan Iskandar and huge thanks to +Harsh Shandilya, which fully deprecates Interfacer (never finished and will not be updated to Oreo as-is).
To those who build ROMs, and are interested in WIP beta commits, please check our gerrit at https://substratum.review/#/q/topic:sysserv
We're now working on platform side features and have enabled something called "Shutdown animations", of which is still a WIP. Look forward for the many commits after to add more support for custom Oreo ROMs!
Themers: Thanks to @iskandar1023, we have added something called "type3-common" to the template, which allows for a dynamic base to build off the type3's when there exists no default res folder. If a 'type3-common' dir is detected inside an app overlay directory, it will be used as the base instead, and the user-chosen type3_[variant name] will be copied over the base.
Brand new app intro: A huge thanks to @pierx, we now have an AMAZING app intro which also slims down the app by shifting over to vectors!
Completely rebasing the source code: With the latest update, we have changed the layout of our source code so that we added a bunch of Javadocs and explanations to code, making contributions easier, which has proven much better seeing many new and old contributors are hitting us up in private with optimizations and feature additions!
Speed, speed, SPEED!: We've been seeing a bunch of issues on the matter of loading overlays and such, and we have optimized the code and cleaned up sorting so that we would not have to reload as often and cause a more drastic issue.
Optimizations +/- Samsung: We have optimized our app to better suit the rootless overlays. If you're running a legacy Samsung device, aka. anything below an S8, then we have added a ton of performance improvements and optimizations! NOTE: If you are experiencing EXTREME app lag or it showing legacy mode, ENSURE your system time is correct, and you have the latest v36 Samsung addon!
We have focused a lot on legacy Samsung improvements lately, which overall improved the coding style of the app. I can't stress this enough, but a huge thank you goes to a contributor named +Tetsuo Osaka, even though all he does is nag us and all we do is yell at each other in our chats, where every single hour he bugs us to fix something, at the end he proved to be a priceless tester and an amazing new contributor to the team! Thank you!
Samsung and Legacy users: We have added a maximum priority of 9999 if you need to try for non-sticking overlays!
Custom ROM forced AOPT: We know security is of utmost care for many developers, so with this release, we have added a flag to check in the system, if there is a "ro.substratum.aopt" build.prop entry, Substratum will be forced into using AOPT rather than AAPT, which significantly increases speed and security! HOWEVER, we would like to extend our explanation of this by saying that having a secure system is great, AAPT has also been used in CM for years, and the only "dangerous" thing would be if someone yanked out the AAPT from /data/data (private userspace partition) and used those to compile apps with Java code inside, whereas CM had it in a global, system callable location while ours is privatized.
We do not do any of that and ensure that both implementations of AAPT and AOPT are safe to be used in the current location. The downside of the AOPT implementation is that many devices such as Sony, Motorola and several non 64bit devices may result in some compilation issues, of which if AOPT is enforced, the supplier will have to take charge of it (which is why we named AOPT as experimental in Settings since we added the option to switch between them).
Bug Fixes: We have indeed fixed many force closes and hiccups of the app recently since the previous build - but they are never 100% when dealing with a native theme system on stock, especially if you are rooted (that's the reason we deprecated masquerade rooted!), so if you have any bugs, and they are not theme compilation bugs (wrong/failed configuration errors go to themers, unless it's an issue with AAPT/AOPT(it tells you)) send them our way!
Full changelog (chronological - newest first):
Public release 912
Full translation import
Clean up and reformat
Overlays: Don't reload list during compilation
Overlays: Fix excruciating lag on certain devices
Systems: Deprecate Interfacer on Oreo
Public release 911
MainActivity: Do it for both of these blocks
Public release 910
MainActivity: Also add in a check for System Service for the dialog
Public release 909
MainActivity: Rooted Oreo OMS now has a warning at the start of the app
ManagerFragment: Also do the same with uninstalling overlays
Public release 908
ManagerFragment: Fix Substratum being too fast for Andromeda
MainActivity: Restart AndromedaBinderService when first loaded
Public release 907
SplashScreenActivity: Enforce null check on Andromeda's installation dir
OverlaysManager: BottomSheetDialog should dynamically set height
InformationActivity: If the hero image does not work, then catch error
Public release 906
ManagerFragment: Fix possible FC during dialog invoke
Upgrade gradle
losslessly recompress all png and jpg images
fix repository order missed aee2126e1d9fe16fe8d245efc37b70ba2a56394d
Update gradle to 4.3 stable
Public release 905
ManageSpaceActivity: Enforce null check on filer.list()
Public release 904
ManagerFragment: Fix possible FC on legacy devices
Public release 902
Full translation import
PackageModificationDetector: Strictly enforce themes not for Samsung
OverlaysManager: Fix overlay compilation on legacy
Substratum: Enforce locale choices in Showcase and ManageSpace activities
References: Make sure all settings are reset
Add a new uninstall icon for fab menu
Public release 901
Overlays: Stability check, do not refresh while compiling
OverlaysManager: Fix type2 application
Public release 900
MainActivity: On Oreo, priorities are still beta
ManagerFragment: Overlay list -> Manager
InformationActivity: Overlay Manager -> Overlays
TroubleshootingFragment: Deprecate the fragment
Refactor and optimize imports of all Java files
Clean up and remove unused resources in res/
Remove all translated library strings
MainActivity: Set BootAnim, ShutdownAnim and Fonts as beta for SS
PackageModificationDetector: If SST was installed/updated, kill activity
BinaryInstaller: Allow ROMs to force AOPT using "ro.substratum.aopt"
OverlaysManager: Properly fire the success notification
Overlays: Fix sorting logic
Optimize images
AndroidManifest: Only allow single tasks of MainActivity and IA
SettingsFragment: Hide Interfacer if not available
Overlays: Optimize and speed up
Substratum: Fix splashscreen layout for subsequent launches
Substratum: Use svg animation instead of animation list.
Overlays: Re-sort the untraceable functions, singleton initiation
Overlays: Do not rely on firstBoot to refresh list
SubstratumUI: Stabilize the app and do not use DiffUtils for RVs
Add exception handling to getInstallerId
SettingsFragment: Legacy does not have the notification channel preference
Merge pull request #153 from tetsuo55/hejeggw
Remove unused notification channel from legacy
Packages: Fix formatting and try a different logic
Packages: Change structure of checker
Packages: Enforce isSamsungTheme check
SettingsFragment: Remove unused auto disable target option for legacy
SamsungIntegration: If on rooted device, uninstall silently
Substratum: Reorganize what is supported on SS
SamsungPackageService: Do != rather than <
MainActivity: Properly pop the stack when going back home
ManagerFragment: Terminate early if a call of layoutReloader was pushed
MainActivity: Modernize and document onKeyDown
MainActivity: Some devices don't register back button presses well
ThemeFragment: Avoid the OOB issue as well just in case
Overlays/ManagerFragment: Enforce null check on notifyDataSetChanged
SubstratumCrash: Fix incorrectly named system service log
Packages: Heavily enforce getOverlayMetadata
ThemeAdapter: Don't silently uninstall themes on long click, alert user
Overlays: Don't crash when configurationChange causes a fuss
Packages: You can't check for a bool if you enforced it to strings
Change order of the toolbar menu icons
SubstratumService: Iron our some quirks for Android Oreo custom ROMs
ManagerFragment: Also do the same for Overlay Manager
Overlays: Fix issue where configurationChange will cause an invisible RV
Internal release 858
Resources: Revive SystemUI Statusbars
Packages: Use substratum service for uninstalling package
SubstratumService: Add supporting codes and update lib
SubstratumService: Add service check method and update binary
Add initial version substratum service lib
Packages: Extend getOverlayMetadata for boolean metadata
SettingsFragment: Go back to getContext() for now
SubstratumRebase: Fix a typo thanks to @YechiamTK
SubstratumRebase: Full cleanup, ButterKnife, JavaDocs
Clean up and reformat all files
ManagerFragment: Restore non-crashing workspace by fixing RV assignment
MainActivity: Clean up formatting
Substratum: Fixes for OverlayList
Update travis.yml for API 27 SDK
Update to SDK27
update gradle to 4.3
Fix compatibility with gradle 4.3+
ProfileFragment: Fix #141
ManagerFragment: Add notifyDataSetChange to fix scroll to position in RecycleView.
PackageModificationDetector: Restore to the original state
InformationActivity: Add missing import
Internal release 856
Revert "SamsungPackageService: On repeated IA start, prevent DeadSystemException"
Revert "SamsungPackageService: Deprecate this ongoing service"
ManagerFragment: Do not uninstall all packages
Partially revert "OverlayFunctions: Slim down a bunch of functions"
ThemeFragment: Optimize RecyclerView loading using DiffUtils
ManagerFragment: Optimize RecyclerView loading using DiffUtils
Overlays: Optimize RecyclerView loading using DiffUtils
OverlayFunctions: Slim down a bunch of functions
Just updating some comments
Substratum: Update fab_menu_enable_disable icon to match other sheet fab icons
Packages: Restore InputStream cloning in getOverlayResource
Systems: Do not discriminate against Android 8.1.0
MainActivity: Fix blank activity on overlay operations
Add Tetsuo Osaka to contributors list
SubstratumRebase: More clean up
SubstratumRebase: Clean up lint warnings as of AS 3.0 RC 1
Remove unused logging
fix lint warning condition result=0 is always true
fix lint warning string equals empty
fix lint warning single character string concatenation
fix lint warning single character argument in string.indexof
fix lint warning method may be static
fix lint warning iteration over keyset may be replaced with entryset iteration
fix lint warning field may be static
fix lint warning concatenation with empty string
fix lint warning Collection.addAll can be replaced with parametrized constructor
fix lint warning call to simple getter from within class
fix lint warning non reproducible call to java.lang.math
fix lint warning implicit numeric conversion
fix lint warning double literal cast to float could be float literal
fix lint warning inner class may be static
fix lint warning multiply or device by power of two
fix lint warning redundant suppresion
fix lint warning doverly broad throws clause
fix lint warning decleration can have final modifier
fix lint warning decleration access can be weaker
fix lint warning scope of variable is too broad
fix lint warning redunant local variable
fix lint warning boolean expression could be replaced by conditional expression
fix lint warning unclear expression
fix lint warning size == 0 replacable with isEmpty
fix lint warning redundant field intialization
fix lint warning redundant new expression in constant array creation
fix lint warning missorted modifiers
flip some constants to the right to match code style
suppress false positive can be final on builder and dialogueClickListener
fix lint warning local variable or parameter can be final
fix lint warning instant method call not qualified with this
fix lint warning instant field access not qualified with this
silence lint by marking these as implictly used
fix lint warning implicit call to super
fix lint warning field may be final
Clean up and refactor after cherry pick
fix lint error by flipping equals Reports calls to .equals() whose arguments are String literals. Some coding standards specify that String literals should be the target of .equals(), rather than argument, thus minimizing NullPointerExceptions.
fix utility class can be enum
fix lint warning class should only be marked final if all variables are final too
fix lint warning field can be local
fix lint warning classes with only private should be declared final
fix lint warning assignment operations which can be replaced by operator-assignment
fix lint warning Ellipsis string can be replaced with ellipsis character
fix lint warning Type can be weakened
Fix lint warning weaken arraylist to list
ManagerFragment: Fix 3dot menu showing up, search not working properly.
PackageModificationDetector: Clean up
PackageModificationDetector: Samsung trips the refresher on install only
PackageModificationDetector: If Samsung, just refresh
Overlays: We should just keep this list refresher onResume
Revert "Revert "Overlays: Don't refresh the list of overlays on resume""
AndroidManifest: Allow all activities to be resizable
Overlays: Introduce a brand new UI for compiling overlays
PackageModificationDetector: Always refresh after package uninstall
MainActivity: Add the corresponding onActivityResult
Clean up and reformat
InformationActivity: Properly assign end boolean
Revert "Overlays: Don't refresh the list of overlays on resume"
SubstratumUX: If a theme was upgraded in the background, relaunch IA
ManagerFragment: Move the uninstaller to the activity
Overlays: Don't refresh the list of overlays on resume
ManagerFragment: Change the request code value
Update translator array
ManagerFragment: Try a queuing method for uninstalling on Samsung
InformationActivity: Small code cleanup
InformationActivity: Migrate boolean array to a HashMap
Substratum: Destroy LeakCanary
Substratum: Disable LeakCanary
PackageModificationDetector: Use existing method to launch themes
Samsung/LGIntegration: Allow "fwk" and "common" to be seperate packages
SamsungIntegration: Set maximum priority to 9999
Prevent text from overlapping with the checkbox
Fix various lint warnings in gradle files
SamsungPackageService: Deprecate this ongoing service
Remove non contributors from arrays.xml
Instead of hiding context leak, let's fix it
Overlays: Fix detection of enabled overlays
Substratum: Address miscellaneous lint warnings
ThemeManager: When running automatic disable, adapt to current system
Don't unnecessarily perform the same check in settings fragment
Allow optionally disabling all other overlays for a selected target on enable * Basically, when enabling an overlay for a package, this option will disable all other overlays for that package
Update Gradle version
Remove useless parent layouts as reported by android studio
NotificationButtonReceiver: Deprecate the Dismiss button
OverlayFunctions: Cancel the notifications earlier
Revert "ManagerItem: Try to use AAPT to grab problematic labels and packages"
Substratum: Enhance check for interfacer
InformationActivity: On app kill, kill compiling notification too
SamsungPackageService: On repeated IA start, prevent DeadSystemException
ManagerItem: Try to use AAPT to grab problematic labels and packages
ManagerItem: If label name is null, return the generic text
ManagerItem: If theme name is null, return the generic text
Update http://README.md banner image
InformationActivity: Null check for appbar layout
ManagerFragment: Unify the search designs with ThemeFragment
ManagerFragment: Set icon to be consistent with the rest of the app
ManagerFragment: Do the same to retain scrolled position
Overlays: Don't reset position as we already reset it
Overlays: Retain recyclerView position when OMS configuration changed
Full translation import
Overlays: Remove unnecessary refreshList() as we can sniff PACKAGE_ADDED
OverlaysItem: Update the check for Samsung users
OverlaysItem: Also check if Samsung overlays are installed too
OverlaysAdapter: Remove Packages duplicate and clean state checks
Overlays: Properly remove the errorLog by creating a deep copy of errors
OverlaysFunction: Dereference never-assigned all_installed_overlays
LOGCHAR_DIR: LogChar is used enough to be reference constant worthy
ManagerFragment: On invalid entry, do not keep progress bar moving
Center text in no overlays message
Overlays: Remove redundant handling for icon pack overlays
Overlays: Additional check before invoking logchar lunchbar
ManagerFragment: Reload layout when Overlay handling tasks exit
ManagerFragment: Refresh adapter when RunEnableDisable finishes executing
SubstratumCrash: Use our own report template
Overlays: Retain instances instead of saving them
Substratum: Remove all the orphan handling and just run DoCleanUp
ThemeUninstallDetector: Add handling for orphanedOverlays
RescueActivity: Remove runOnUiThread, thanks to @Thecrazyskull!
Overlays: Don't forget LogChar on configuration change
Update Travis CI SDK
Clean up!
RescueActivity: When Samsung users click Rescue Me, open Settings
App Shortcuts: Do not force App Shortcuts only on Android 7.1.1+
OverlayManagerActivity: Move the Settings option to an app shortcut
MainActivity: Fix what Harsh started
Strings: substratum samsung -> sungstratum
Substratum: Add ability to launch Overlay List directly
SettingsFragment: Sungstratum addon is not part of Theme Killer anymore
Fix weird behavior on overlay install with root
OverlayFunctions: Install special overlays no matter what
build: update build tools and dependencies
SubstratumBuilder: Switch the error bool on APK compilation failure
Adjust things and fix some bugs on RootRequester
Add type3 common dir support for themes
ManagerFragment: Remove those overlays from overlaysList
ManagerFragment: Try fixing @jereksel commit by uninstalling instead of just removing said overlays
Make comparition same as in compareTo methods
(Hopefully) Fix ManagerItem sorting once and for all
Overlays: Twice as strong vibrations if overlays fail to compile
Internal release 855
Revert "Remove unnecessary WeakReference"
Overlays: Fix incorrect base_spinner check
ProfileFragment: Remove redudant duplicate font checker
ThemeFragment: Cut it close, make the first load faster
Overlays: Prevent spinner load event to count as an item click event
Overlays: Enforce a few null checks and list refresh locations
References: Clear base variant on data clear
Overlays: Retain type3 spinner position when leaving themes
Overlays: Add a fastscroller to the RecyclerView
InformationActivity: Update the FAB icon to apply, no more Layers icon
ThemeFragment: Initialize the recyclerview with an empty adapter at boot
ThemeFragment: Do not hang UI thread as well
Clean up after pull request
Merge pull request #139 from jereksel/cleaning_wr
Update translator array
ManagerFragment/Overlays: Improve UX for swipe refresh layout
OverlayUpdater: Remove redundant code
ManagerFragment: Fixed where I left off
ManagerFragment: Disable the switch instead on layout reloading
ManagerFragment: Reset state of switch when swiping down
ManagerFragment: Shift the system to the swipeRefreshLayout UI
Overlays: Swipe down to refresh should not hang UI thread
Lunchbar: Clean up class
OverlayUpdater: Upgrade to support Type4s
ManagerFragment: quickSort -> use switch instead
ManagerFragment: Camel case
InformationActivity: Fix logic for showing certain tabs
ManagerFragment: Fix wrong logic for detecting disable mode capability
Build.gradle: No need a preview flavor, we are targeting 26 already
OVERLAY AWAITING REBOOT -> ERROR READING OVERLAY
SplashScreenActivity: Invisiblize the launch for the addon verification
OverlayUpdater: Clean up
ManagerFragment: Do not have Samsung specific refreshList() code anymore
ThemeManager: Improve the uninstall process
Revert "Substratum: Lower our support libraries footprint"
Support Samsung Galaxy S8 and LG G6's 18:9 screen ratio by default
ManagerFragment: Log the refreshList to see if this is really Samsung issue
OverlayUpdater: I really don't like intents
OverlayUpdater: Continue fixing this ****, me nub and need to sleep
InformationActivity: Traverse all views and set drawable only where we should
Substratum: Lower our support libraries footprint
Public Full Rollout Release 950
Hey guys, it's about time this month to release the actual, follow up release to our previous UI overhaul. This WILL be at 100% rollout, and we will update the app slowly the next few days to ensure that our users are happy
PLEASE READ THE SHORT CHANGELOG, WE ARE SURE WE COVERED A LOT OF BUG REPORTS REPORTED TO US IN THE PAST WEEKS!
The reason it took this long is because we have been doing serious debugging with many users, themers and developers - under many different device architectures and versions.
Fixed compilations on legacy devices: Not to be confused with Substratum "Legacy" but rather, actually old devices, where they had a "new_alloc_size" during compilation. Huge thanks to +Surge Raval!
Configuration change safety guard: If by any chance the app was reloaded by RRO/OMS/DO, the app will relaunch itself and tell you that the resources have been updated. This is to do with our UX improvement goal.
Sony OMS Bypass: Substratum now functions on Android 7.x on Sony devices under legacy mode. This means themers can now theme on Sony devices, for Sony users! Huge thanks to Matt (appleknight) for debugging!
Showcase Rewrite: In this update, we have deprecated the current showcase format, under the guidance of +Nathan Chancellor and +Harsh Shandilya, we have a new way of applying to have your App, Theme, Mod or Plugin featured in our showcase! The showcase now updates on demand, and will no longer cache the database on the device so it's pretty much a live place for us to promote our wonderful community and what everyone's been doing!
New showcase tabs: Below will be the new showcase tabs that will be updated by the team to promote new apps/themes amongst our community!
- Featured Themes: For new themes and upcoming stars!
- Featured Apps: For amazing apps that our contributors would like shown
- Themers Collective: The community collection of themes hosted on our Play Store account
- Team Themes: Themes created by team members!
- Clear/Dark/Light: Category based themes
- Google Apps: Collection of theme ready apps
- Samsung: Collection of Samsung-ready/compatible themes
- SystemUI Tweaks: Previously called Plugins, but now more categorized
- Other Tweaks: Also from Plugins, more categorization
- Wallpapers: Wallpaper packs
Samsung UX Experience Improvements: With a plethora of memory leaks and bugs now resolved, we have ironed out the experience to (nearly) match what AOSP has to offer!
- If you installed an OMS-only theme on Samsung/Legacy, a notification will alert you to uninstall it (meaning if you're a user and you accidentally bought an OMS theme, you would be able to immediately refund it).
- For sungstratum users, the boot up of the app has been significantly improved!
UI Improvements: As usual, naming all of these are a pain, so I'll list them:
- Splashscreen now fades into the main theme screen
- Wallpapers, showcase and themes now stagger their loading animations one by one, and will fade from grayscale to color.
- Removed the Pull down layout as well as shared element transition to completely speed everything up
- Snackbars on the main UI will move on top of the bottom bar
- On OOS, ensure that the navbar is properly colored (thanks to +Ivan Iskandar for finding this out)
Bug fixes, performance and optimizations: Huge thanks to our contributors, we have cleaned up a lot of possible memory leaks, as well as ensured that many things are patched up. Overall, the app has been cleaned up drastically thanks to +Harsh Shandilya, +George G. and +Jack Boswell!
Full changelog (chronologically):
Public release 950
Revert "PriorityListFragment: Change how we show the list"
SubstratumUI: Various UI tweaks
BottomBar: Set selected bottom bar icon and text to accent
PMD/Packages: Notification on retention of unsupported theme
PackageModificationDetector: Action click should remove notification
AAPT: fix new_alloc_size overflow for ancient armeabi devices
UnsupportedThemeReceiver: Autoclose the notification
UnsupportedThemeReceiver: Close system dialogs on button click
UnsupportedThemeReceiver: Rejection notification button
FragmentTransaction: Replace commit() with commitAllowingStateLoss()
ShowcaseActivity: When back is pressed, close drawer first
ShowcaseActivity: Open the drawer automatically when launching Showcase
Showcase: Change names of a few things
ShowcaseActivity: Properly assign all the tabs to non-sort mode
Showcase: Add new entries for new showcase themes/apps
Showcase: Tabs will now sort based on actual cloud tab order
Showcase: Completely revamp and clean up all the code
OverlaysManager: If an overlay is about to be recompiled, disable first
SamsungIntegration: Refresh the list on resume on Samsung too
MainActivity: Remove unnecessary static variable
SplashScreenActivity: Halve the time it takes to load splash
SubstratumRebase: Clean up and refactor
SamsungIntegration: Turbocharge Sungstratum bootup
SamsungIntegration: Attempt to speed up boot
SubstratumUX: Simplify the start up code of the app
Systems: Clean up unused whitespace
Remove some blacklisted packages
Systems: Add a speedier way of checking for packages
InformationActivity: If hero image starts transparent, use colorPrimary
UnitTests: Suspend
Systems: Sony check should be permission check, not prop
Lunchbar: No longer extend Snackbar, just use it as a constructor
Systems: Sony check may return empty string
InformationActivity: When theme is empty, kill automatically
SubstratumUI: Lunchbar should go above the bottom bar
Systems: Sony Mobile should try and take on rooted legacy mode
ManagerFragment: Optimize some calls to userInput.get()
Resources: Suppress and remove some warnings
ThemeAdapter: Remove some unused imports
Packages: Factor out API 21-23 handling
SoundUtils: Remove unused variable
ShowcaseActivity: Remove unused method
ThemeManager: Simplify listOverlay methods
AndroidManifest: Fix some warnings
Packages: Suppress some warnings
Sounds: Don't call wordList.get() repeatedly
Expose navigation bar color on API 27
PriorityListFragment: Change how we show the list
ThemeManager: Fix listTargetWithMultipleOverlaysEnabled on andromeda
SplashScreenActivity: Remove the app logo color animation thingy
Systems: Andromeda mode only if the package is enabled
SettingsFragment: Disable exposures check if not running interfacer or sysserv
Clean up and refactor
OverlaysAttention: Wrap to full size of text
Overlays: Do not refresh the list on type3 selection twice
OverlaysAdapter: Allow for newlines in attention
SplashScreenActivity: Hide progress bar until certain time
Clean up and reformat
SamsungIntegration: Fix regression with multi refreshes
SubstratumUI: Revert back to grey accents
IA: Fix inconsistent capitalisation in strings
InformationActivity: Terminate all tab's asynchronous tasks onDestroy
Update gradle
RecoveryFragment: Fix inconsistent tests for card visibility
InformationActivity: Remove PullBackLayout
Substratum: Completely remove shared element transitions.
SubstratumUI: Revert back to Pink accents
MainActivity: Drop redundant samsung check
Substratum: Set theme system module during early init
RecoveryFragment: Trim duplicate code
ThemeAdapter: Remove the greyscale animator
ManagerFragment: Improve UX for refresh
ThemeFragment: Stagger the recyclerView objects
SubstratumUI: Introduce a new color scheme!
SplashScreenActivity: Fade out to the MainActivity
ThemeBadge: Remove the residual files
PriorityListFragment: Add an AVD for fab click
PriorityListFragment: Adapt for Oreo
SubstratumUI: Update the blobs to N blobs
AndroidManifest: Turns out we needed one more
StringUtils: Place in a better directory
Clean up and reformat
NotificationCreator: Deprecate this class
ThemeFragment: Remove the bottombar badge
Substratum: Fix various mistakes on reassignment
AndroidManifest: Clean out unused permissions
FloatUi: Show overlay versions
ManagerAdapter: Generify and account for FloatUi
Substratum: Drop hungarian notation contexts
RecoveryFragment: Fix incorrect test for sound
Internal release 932
Substratum: Deprecate Sounds for legacy systems
RecoveryFragment: Substratum Service does not need permission
ManagerAdapter: Fix theme entry formatting
SettingsFragment: Instantly post restartSubstratum call
ThemeAdapter/InformationActivity Tabs: Optimize lifecycle
ManagerAdapter: Fix inconsistent labels
SettingsFragment: Make substratum restarts less jarring
ManagerFragment: Deprecate onPrepareOptionsMenu
ManagerFragment: Show all the icons on the actionbar
ThemeAdapter: Enforce package name check for receiver
ManagerAdapter: Add the overlay's theme version
ThemeAdapter: Do not allow multiple theme launches
PullBackLayout: Adjust pull back threshold
BottomBar: Adjust color for inactive state
ManagerAdapter: Fix incorrectly styled Theme Name entry
Subtratum: Adjust manager fragment strings
Adapters: Introduce a utility method to format items
MainActivity: BottomBar should reset on config change
Adapters: Remove usages of Html#fromHtml
ThemeLaunchActivity: Remove plugin_version extra from launch intent
InformationActivity: Use dominance again
InformationActivity: Adjust the color vibrance algorithm
ThemeAdaptor: Ditch HTML hack and use setTypeface for bold
OverlaysManager: Ditch redundant code
Clean up and optimize
OverlaysAdapter: Use a more traditionally used version code
Wallpapers: Reassign append of load complete
KeyExchangeActivity: Pass a Serializable object of SecurityItem
SamsungIntegration: Speed up samsung device check
Overlays: onResume should have proper list refreshes
PullBackLayout: Adjust sensitivity and add higher threshold
InformationActivity: Adjust looks
InformationActivity: Tabs should finish loading before SET
ThemeAdapter: Fix potential FC on weak devices
SubstratumUI: Fix a few quirks with the new shared elements
SubstratumUI: Shared Element Transitions!
MainActivity: Hide the bottom bar shadow if we don't use it
PriorityListFragment: Make use of activity's toolbar
InformationActivity: Fix crash when launching theme shortcut
InformationActivity: Use completely transparent status bar
MainActivity: Set white navbar icons when sheet dialog opened
MainActivity: Add shadow workaround to bottom bar
OverlaysManager: Properly close compilingProgress
Revert "PackageModificationDetector: Don't refresh IA on theme update"
Overlays: Catch potential IndexOutOfBounds
SubstratumCrash: If the ROM/builder f'ed up, explain the issue
SubstratumCrash: If system crashed substratum, relaunch
Clean up and reformat
SubstratumUI: Deprecate Roughike bar in favor of AOSP
InformationActivity: Stuff for transparent themes
build: Fix derps
Fix travis
Public release 983
With this release, we have listened and heard to many people about the March security update and have worked around it by providing users with more information about how to properly load up overlays perfectly on ROMs with this security patch.
For Samsung Oreo users, your compilation of overlays WILL be faster than normal. That's because we've decided to tap into Samsung's overlay permission and thus, you will not have your overlays reverted after a reboot (e.g. SystemUI). But doing so means we can no longer measure the time that overlays take to install as overlays are now offloaded to the Samsung Theme Package Processor and thus, all intent receivers are rendered useless.
If your overlays appear PINK -> They mean it needs a reboot to take effect!
If your overlays appear BLUE -> They mean ANOTHER theme has an Enabled + Installed overlay. For example if you installed Chrome from Swift Black and you open up Quetzal, it will show up in Blue in Quetzal, but Green in Swift Black.
We also introduced the ActionBar Scroll Up feature in places including:
- Main Theme Screen (MainActivity -> ThemeFragment)
- Overlay Manager Screen (MainActivity -> ManagerFragment)
- Settings (MainActivity -> SettingsFragment)
- Theme Overlay Manager (InformationActivity -> Overlays)
- Theme Wallpapers (InformationActivity -> Wallpapers)
LiteMode: If you are not fond of the hero image taking up like 30% of your screen when opening a theme, enabling Lite Mode in Settings will open themes without that image, as well as reducing some animations for slower devices.
SysServ Crashes? If you experience any crashes on Substratum Service mode, your ROM commits needs to be updated/repicked! We merged all our SysServ patches already and thus, some ROMs may have missed one patchset. Not to fret, we have informed teams that have outdated sources but here's the most up to date link that needs changing: https://substratum.review/c/SubstratumResources/platform_frameworks_base/+/448
Translators and contributors now show up when clicking Substratum version in Settings! Translators are now parsing CrowdIn's CSV file and will rank based on your contribution on CrowdIn! If you were before the CrowdIn transition, don't worry, we still love you guys! Just verify and translate more words and we'll update the file from time to time!
News about Android P? We have news, good and bad. But that comes later. Hopefully you just remember you're still on Android Oreo!
Full changelog (chronologically):
Public release 983
InformationActivity: In Lite Mode, adjust the title text accordingly
Samsung performance update 982
Hotfix release 981
Systems: Adjust for Samsung devices > API24 (aka. 25)
Public release 980
OverlaysAdapter: Cache the state color to speed up scrolling
ShowcaseActivity: Add the toolbar scroll feature here as well
SubstratumUX: Introduce "tap actionbar to scroll up" feature
OverlaysAdapter: Add support of blue state for Samsung users
LiteMode: Affect the fade-from-grayscale animation on LiteMode
SettingsFragment: Change launchActivityUrl method for team links
InformationActivity: In Lite Mode, completely lock toolbar expansion
OverlaysAdapter: Introduce a new blue state
SettingsFragment: Add Lite Mode and rewrite the Settings fragment
Update dependencies
Internal release 970
AndromedaBinderService/Substratum: End binder services gracefully
SettingsFragment: Update App Theme text on selection
Fix up strings for menu state and app theme
SettingsFragment: Add OK button to all contributor dialogs
ManagerFragment: Show toast on overlay state change
TeamFragment: Deprecate fragment and move to About Substratum
TranslationDialog: Add some padding
ManagerFragment: Reorganize and assign a systematic format for sheet fab
SettingsFragment: Brand new way of showing translators!
ThemeManager: Add back listOverlay method using direct interface on nougat
MainActivity: Expose and assign the background of bottom tab to drawable
ManagerFragment: Dynamically change text of sorting overlay state
Substratum: Samsung checker should exclude Nougat from listThemes
OverlaysManager: Only show the pink state dialog on Oreo!
Merge pull request #173 from folgore95/patch-2
Update strings.xml
Better explanation about new samsung overlays compiling
Update strings for Samsung Oreo refreshing of list manually
Substratum: Samsung checker can also fallback to listThemes(context)
Resources: Add Samsung software update to permission blacklist
OverlaysManager: Reorganize pink title explanation dialog
ManagerFragment: Allow user to sort by overlay enabled/disabled state
SamsungIntegration: Change Samsung package check code
OverlaysManager: Adapt the previous commit for Samsung users too
OverlaysManager: Alert if user is installing overlay on stock March
Resources: Add Samsung Voice Recorder to permission blacklist
CompilerCommands: Samsung permission must be assigned statically
OverlaysManager: Clean up and refactor logic
OverlaysAdapter: Refresh and allow non-Samsung users with pink state
Readme: Remove interfacer from readme
SettingsFragment: Don't create indefinitely open snackbars
Packages: Clean up isPackageInstalled function
OverlaysAdapter/Item: Sanitize and clean up the logic used
VariantAdapter: You must cast full class for view binding
OverlaysAdapter: Complete rewrite
MainActivity: Adjust layouts for Andromeda button
AndromedaBinderService: Do not show the disconnected notification
Andromeda: Fix crashes on andromeda update, also terminate subs
SamsungIntegration: Also allow fwk overlays to be invoked for uninstall
SamsungIntegration: Add transition helper from Nougat to Oreo
MainActivity: On error dialog, show a more descriptive result
Full translation import
Fix build for Android Studio 3.2 Canary 10
AndromedaRebase: Update the strings to say something else for debug
AndromedaRebase: Prepare for Andromeda rebase
build: Update dependencies
ThemeManager: Don't use cached list on andromeda listOverlay
MainActivity: Add new activity name for launching andromeda
SoundUtils: Don't restart ui after applying sounds on substratum service
Full translation import
OverlaysManager: If Oreo and Samsung, do not wait for intent response
Clean up, refactor and optimize imports
InformationActivity: Enable Samsung Package Checker on Oreo
SamsungIntegration: Re-add overlay component permission for 7.1.1+
Merge pull request #167 from alamo18/dev
MainActivity: bottomBar duplicate reference Viewbinding already did the job
util: helpers: FileDownloader: Fit overall code style Don't declare a variable just to store the return
Gradle && firebase update
ManagerItem: Use overlay's version instead of live version
CompilerCommands: isStatic is an Oreo OMS quirk
CompilerCommands: Add isStatic false flag to manifest
SettingsFragment: Speed up loading for Andromeda
Systems: Optimize Samsung device checkers
XiaomiIntegration: Show warning to enable extra permissions
ManagerFragment: Restart SystemUI should not show on Andromeda
Some boolean logic fixes from previous commits
MainActivity: Dialog layout changes
LocaleHelper: Deprecate old locale changer style
Full translation import
Packages: getPackageName(): If Samsung has an uninstalled overlay, spit packageName
Clean up and reformat all res/ files
AndromedaOffline: Introduce a way to uninstall overlays offline
ShowcaseActivity: Remove custom animations as well
ThemesListMenu: Recovery menu item should take precedence
References: Disable Samsung overlay permission
CompilerCommands: Reorganize permission for Samsung
References: Debug substratum APKs should distribute Samsung overlay perm
ValidatorDialog: Re-enable for custom ROM devs
MainActivity: Remove FragmentTransaction animation
References: Fix boolean logic in isServiceRunning
Clean up and reformat
ThemeItem: Introduce a dynamic image resizer to prevent OOMs
De-localize the animation files for fragments
Broadcasts: Samsung should get OverlayFound as well
MainActivity: On fragment switch, unload fragment AsyncTasks
OverlaysManager: Insert delay when installing snowflake overlays
SubstratumCleanup: Fix relevant lint issues and remove unused resources
SubstratumCleanup: Do ma thang
SubstratumFloatInterface: Correctly deal with potential NPE
Systems: Remove NonNull annotation from checkOMS method
Clean-up and reformat
Internal release 960
Merge branch 'databinding' into dev
SamsungOreoIntegration: New overlay pink state for being "stuck"
ThemeManager: This is needed here too
SubstratumCleanup: Remove unused resources
Substratum: Deprecate Butterknife
ProfileFragment: Migrate to Databinding
SettingsFragment: Don't unnecessarily create Handler objects
ThemeAdapter: Migrate sheet dialog to viewBinding
ThemeAdapter: Migrate to databinding and deprecate gapps config
VariantAdapter: Cleanup and migrate to Databinding
Internal release 955