{App}{Root}{4.4+}{Reborn}Kernel Adiutor-Mod {V18}

Search This thread

marcdw

Senior Member
Sep 24, 2014
5,751
2,894
60
Baldwin Park
Hi guys;

Anyone here running this app on Pixel 2 XL? as I'm having
problem with it. It won't apply at boot and "KA-mod" stopped
working warning on screen shows up every time after reboot!
Thank you.


Hmm, it would probably be difficult to get a log in that case. In KA-Mod's Settings you can output different log files. Maybe do that right after booting and error message. Post a link or attachment (but please not pasted into a post).

I take it the app has storage permission granted?
Could also change the delay from default (5 seconds?) to 10.

Once saw a tip a long time ago to not have KA battery optimized. Probably not applicable to at-boot issues but it won't hurt to see.

Just throwing things out there.

EDIT: I/You/We should've searched first. It's a known issue it seems and has been mentioned before. No resolution that I know of.



Moto G5s Plus XT1806, PixelExperience Oreo, MultiROM, Tapatalk 4.9.5
 
Last edited:
  • Like
Reactions: samteeee

samteeee

Senior Member
Hmm, it would probably be difficult to get a log in that case. In KA-Mod's Settings you can output different log files. Maybe do that right after booting and error message. Post a link or attachment (but please not pasted into a post).

I take it the app has storage permission granted?
Could also change the delay from default (5 seconds?) to 10.

Once saw a tip a long time ago to not have KA battery optimized. Probably not applicable to at-boot issues but it won't hurt to see.

Just throwing things out there.

EDIT: I/You/We should've searched first. It's a known issue it seems and has been mentioned before. No resolution that I know of.



Moto G5s Plus XT1806, PixelExperience Oreo, MultiROM, Tapatalk 4.9.5




Thanks for replying back.
I'll try 'em out and if nothing worked, I'll do the logs.

---------- Post added at 10:28 AM ---------- Previous post was at 10:04 AM ----------

Hmm, it would probably be difficult to get a log in that case. In KA-Mod's Settings you can output different log files. Maybe do that right after booting and error message. Post a link or attachment (but please not pasted into a post).

I take it the app has storage permission granted?
Could also change the delay from default (5 seconds?) to 10.

Once saw a tip a long time ago to not have KA battery optimized. Probably not applicable to at-boot issues but it won't hurt to see.

Just throwing things out there.

EDIT: I/You/We should've searched first. It's a known issue it seems and has been mentioned before. No resolution that I know of.



Moto G5s Plus XT1806, PixelExperience Oreo, MultiROM, Tapatalk 4.9.5



The thing that got it working was "Disable Notification"!
I should've seen it in "Setting" tab as it says "if you have a problem, disable notification"!
 
  • Like
Reactions: marcdw

fanatic75

Member
Dec 16, 2012
33
2
Hi, I'm running pixel 2xl, stock rom with flash kernel 8.1 oreo. When I try to change my colors from stock to banged up, nothing happens. It works just fine in my other device, how do i fix this?
 

halfbytecode

Senior Member
Apr 11, 2012
510
209
Please add an option to export profiles.

After flashing a new kernel, I usually have to clear the app's data, to fix the force close errors. This seems to remove the profiles in the app.
 

millo1978

Senior Member
Mar 28, 2008
625
436
Milano / Horb am Neckar
How to have a SELinux qsTile ?

I use Android Studio on Windows 10

in AndroidManifest.xml
Code:
[...]

        <!-- SELinux Tile -->
        <service
            android:name="com.kerneladiutormod.reborn.services.SELinuxQSTileService"
            android:icon="@drawable/ic_selinux_enf"
            android:label="@string/selinux_tile"
            android:permission="android.permission.BIND_QUICK_SETTINGS_TILE">
            <intent-filter>
                <action android:name="android.service.quicksettings.action.QS_TILE" />
            </intent-filter>
            <meta-data android:name="android.service.quicksettings.ACTIVE_TILE"
                android:value="true" />
        </service>

[...]

a Vector Asset (icon) in "drawable" folder
ic_selinux_enf.xml
Code:
<vector xmlns:android="http://schemas.android.com/apk/res/android"
        android:width="24dp"
        android:height="24dp"
        android:viewportWidth="24.0"
        android:viewportHeight="24.0">
    <path
        android:fillColor="#FF000000"
        android:pathData="M12,1L3,5v6c0,5.55 3.84,10.74 9,12 5.16,-1.26 9,-6.45 9,-12L21,5l-9,-4zM12,11.99h7c-0.53,4.12 -3.28,7.79 -7,8.94L12,12L5,12L5,6.3l7,-3.11v8.8z"/>
</vector>

a string in strings.xml
Code:
<string name="selinux_tile">SELinux</string>
or better... a string that change: Permissive / Enforcing
but how to have it?

but SELinuxQSTileService.java?

I'm not able to write it :(
 
Last edited:

DiamondJohn

Recognized Contributor
Aug 31, 2013
7,350
7,366
Sydney
  • Like
Reactions: millo1978

millo1978

Senior Member
Mar 28, 2008
625
436
Milano / Horb am Neckar
Thanks :)

... but we have a toggle in Misc (Misc.java MiscFragment.java)...
and it works good.

So...
Why not a Quick Settings Tile?
QsTile is more fast to use.


Inviato dal mio HUAWEI VNS-L21 utilizzando Tapatalk
 

David 617

Senior Member
May 12, 2011
865
1,446
How to have a SELinux qsTile ?

I use Android Studio on Windows 10

in AndroidManifest.xml
Code:
[...]

        <!-- SELinux Tile -->
        <service
            android:name="com.kerneladiutormod.reborn.services.SELinuxQSTileService"
            android:icon="@drawable/ic_selinux_enf"
            android:label="@string/selinux_tile"
            android:permission="android.permission.BIND_QUICK_SETTINGS_TILE">
            <intent-filter>
                <action android:name="android.service.quicksettings.action.QS_TILE" />
            </intent-filter>
            <meta-data android:name="android.service.quicksettings.ACTIVE_TILE"
                android:value="true" />
        </service>

[...]

a Vector Asset (icon) in "drawable" folder
ic_selinux_enf.xml
Code:
<vector xmlns:android="http://schemas.android.com/apk/res/android"
        android:width="24dp"
        android:height="24dp"
        android:viewportWidth="24.0"
        android:viewportHeight="24.0">
    <path
        android:fillColor="#FF000000"
        android:pathData="M12,1L3,5v6c0,5.55 3.84,10.74 9,12 5.16,-1.26 9,-6.45 9,-12L21,5l-9,-4zM12,11.99h7c-0.53,4.12 -3.28,7.79 -7,8.94L12,12L5,12L5,6.3l7,-3.11v8.8z"/>
</vector>

a string in strings.xml
Code:
<string name="selinux_tile">SELinux</string>
or better... a string that change: Permissive / Enforcing
but how to have it?

but SELinuxQSTileService.java?

I'm not able to write it :(

This looks great so far!

Do you have a github repo with your changes? I'd happily review your java code if you want help with it.
 

millo1978

Senior Member
Mar 28, 2008
625
436
Milano / Horb am Neckar
This looks great so far!

Do you have a github repo with your changes? I'd happily review your java code if you want help with it.

I'm not able to write java...
but I used as Model HBMQSTileService .

My code is:
app/src/main/java/com/kerneladiutormod/reborn/services/SELinuxQSTileService.java
Code:
package com.kerneladiutormod.reborn.services;

import android.annotation.TargetApi;
import android.content.Context;
import android.graphics.drawable.Icon;
import android.os.Build;
import android.service.quicksettings.Tile;
import android.service.quicksettings.TileService;
import android.support.annotation.RequiresApi;

import com.kerneladiutormod.reborn.R;
import com.kerneladiutormod.reborn.utils.root.Control;

import static com.kerneladiutormod.reborn.utils.Constants.SETENFORCE;
import static com.kerneladiutormod.reborn.utils.kernel.Misc.isSELinuxActive;

@RequiresApi(api = Build.VERSION_CODES.N)
public class SELinuxQSTileService extends TileService {

    private Context context;

    @RequiresApi(api = Build.VERSION_CODES.N)
    @Override
    public void onTileAdded() {
        tileSELinuxUpdate(getQsTile());
    }

    @Override
    public void onTileRemoved() {
    }

    @RequiresApi(api = Build.VERSION_CODES.N)
    @Override
    public void onClick() {
        tileSELinuxToggle(getQsTile());
    }

    @RequiresApi(api = Build.VERSION_CODES.N)
    @Override
    public void onStartListening () {
        tileSELinuxUpdate(getQsTile());
    }

    @Override
    public void onStopListening () {

    }
    @TargetApi(Build.VERSION_CODES.N)
    private void tileSELinuxUpdate (Tile qsTile) {
        Icon icon =  Icon.createWithResource(getApplicationContext(), R.drawable.ic_selinux);
        if (isSELinuxActive()) {
            if (qsTile.getState() == Tile.STATE_INACTIVE) {
                qsTile.setState(Tile.STATE_ACTIVE);
            }
        } 
        if (!isSELinuxActive()) {
            if (qsTile.getState() == Tile.STATE_ACTIVE) {
                qsTile.setState(Tile.STATE_INACTIVE);
            }
        }
        getQsTile().setIcon(icon);
        getQsTile().updateTile();
    }

    @RequiresApi(api = Build.VERSION_CODES.N)
    private void tileSELinuxToggle (Tile qsTile) {
        if (isSELinuxActive() && qsTile.getState() == Tile.STATE_ACTIVE) {
            Control.runCommand("0", SETENFORCE, Control.CommandType.SHELL, context);
        }
        else if (!isSELinuxActive() && qsTile.getState() == Tile.STATE_INACTIVE) {
            Control.runCommand("1", SETENFORCE, Control.CommandType.SHELL, context);
        }
       try{
            // Pause momentarily for sysfs changes
            // This should be done differently, but this will work for now.
            Thread.sleep(100);
       }
        catch(InterruptedException e){

    }
        tileSELinuxUpdate(qsTile);
    }

}

With this code I can change Permissive/Enforcing ...
but Enable/disable tile's color isn't always correct :(

Any help is appreciated

My Github:
https://github.com/millo1978/kernel_adiutor/commit/731f55a99c4f6f4bb501bcf4f8422f0e34f625b0
 
Last edited:
  • Like
Reactions: duttyend

DiamondJohn

Recognized Contributor
Aug 31, 2013
7,350
7,366
Sydney
I'm not able to write java...
but I used as Model HBMQSTileService .

My code is:
app/src/main/java/com/kerneladiutormod/reborn/services/SELinuxQSTileService.java
Code:
...
Control.runCommand("0", SETENFORCE, Control.CommandType.SHELL, context);
...
it IS shelling out to a command shell. I didn't see that previously:eek:

With this code I can change Permissive/Enforcing ...
but Enable/disable tile's color isn't always correct :(

Any help is appreciated

Code:
...
       try{
            // Pause momentarily for sysfs changes
            [B][COLOR="Orange"]// This should be done differently, but this will work for now.[/COLOR][/B]
            Thread.sleep([COLOR="Red"][B]100[/B][/COLOR]);
       }
...
To try and debug the issue, temporarily test increasing the Thread.sleep to something like 500 and see if things improve. The tile update may be occurring before the command shell command has completed being actioned.:confused:
 
  • Like
Reactions: millo1978

millo1978

Senior Member
Mar 28, 2008
625
436
Milano / Horb am Neckar
To try and debug the issue, temporarily test increasing the Thread.sleep to something like 500 and see if things improve.
I made it... but it don't solve.
(also 200 to 2000...)
The tile update may be occurring before the command shell command has completed being actioned.:confused:
Are you speaking about this
Code:
    }
        tileSELinuxUpdate(qsTile);
    }
at the java's end?

I never wrote java... :D

Edit:
Tile command is good...
I press it and SELinux Status change.
(Terminal emulator with "getenforce" can confirm)

But Enabled/disabled (color) Tile isn't good.

And...
(Enabled/Disabled) toggle in KernelAdiutor Misc and qsTile aren't the same. :(

How to correct it?
 
Last edited:

DiamondJohn

Recognized Contributor
Aug 31, 2013
7,350
7,366
Sydney
I made it... but it don't solve.
(also 200 to 2000...)
Doh! Did it appear to make ANY difference to its reliability?

Are you speaking about this
Code:
    }
        tileSELinuxUpdate(qsTile);
    }
at the java's end?
Yes.

My next pass would be to add logging to actually see what is happening, when the code is running on a device. I would suggest to add logs before and after each line you are not sure what is happening, to see where its not acting as expected.

You will need to add the import at the top. My guess is the following:

Code:
import android.util.Log;
At the top with all your other imports. There may be dependencies but a compile will give you that.

Then before and after each line something like the following
Code:
Log.e(TAG, "SELinuxQS: Hello there: MyVal=true");
The "SELinuxQS" will make it easier to find in your logcat.

So for example, on the one method "tileSELinuxUpdate":
Code:
@TargetApi(Build.VERSION_CODES.N)
    private void tileSELinuxUpdate (Tile qsTile) {
        [COLOR="darkgreen"]Log.e(TAG, "SELinuxQS: tileSELinuxUpdate ENTRY");[/COLOR]
        Icon icon =  Icon.createWithResource(getApplicationContext(), R.drawable.ic_selinux);
        if (isSELinuxActive()) {
            [COLOR="darkgreen"]Log.e(TAG, "SELinuxQS:     isSELinuxActive()=true");[/COLOR]
            if (qsTile.getState() == Tile.STATE_INACTIVE) {
                qsTile.setState(Tile.STATE_ACTIVE);
                [COLOR="darkgreen"]Log.e(TAG, "SELinuxQS:     qsTile.getState() == Tile.STATE_ACTIVE");[/COLOR]
            }
        } 
        if (!isSELinuxActive()) {
            [COLOR="darkgreen"]Log.e(TAG, "SELinuxQS:     isSELinuxActive()=false");[/COLOR]
            if (qsTile.getState() == Tile.STATE_ACTIVE) {
                qsTile.setState(Tile.STATE_INACTIVE);
                [COLOR="darkgreen"]Log.e(TAG, "SELinuxQS:     qsTile.getState() == Tile.STATE_INACTIVE");[/COLOR]
            }
        }
        getQsTile().setIcon(icon);
        getQsTile().updateTile();
        [COLOR="DarkGreen"]Log.e(TAG, "SELinuxQS: tileSELinuxUpdate EXIT");[/COLOR]
    }
You may wish to do similar to all the methods in your class, and hopefully that will let you know where its failing. Or start here anbd work your way down to hone in on the issue.

The results of the logging should be in your logcat. Note, I used the "error" logging, to ensure that it will appear no matter which log level is selected/set. And it would be removed for the final build. ie when the debugging is all over.

Good luck.:good:

---- after thought-----
Actually, are you sure that the line "Icon icon = Icon.createWithResource(getApplicationContext(), R.drawable.ic_selinux);" is correct? It appears on first glance to be getting the same icon regardless of the SELinux State :confused: Maybe that should be within the if clauses as well to get a different resource depending on the state.
 

millo1978

Senior Member
Mar 28, 2008
625
436
Milano / Horb am Neckar
Doh! Did it appear to make ANY difference to its reliability?
I see no difference

My next pass would be to add logging to actually see what is happening, ...
It's not simple for me :(

Sometimes in Logcat I see something like this:
I press QSTile...
there are 2 command... true and then false...
QSTile go ON and OFF.
But why?
I press it only one time.

If I change in AndroidManifest
Code:
            <meta-data android:name="android.service.quicksettings.ACTIVE_TILE"
                android:value="[B]false[/B]" />
I have all correct... but not automatic.

Actually, are you sure that the line "Icon icon = Icon.createWithResource(getApplicationContext(), R.drawable.ic_selinux);" is correct? It appears on first glance to be getting the same icon regardless of the SELinux State :confused: Maybe that should be within the if clauses as well to get a different resource depending on the state.

:D
I had an AndroidStudio issue...
Now I have no more 2 times Icon...
but I have also this
Code:
private Icon icon;
With this I have no more AndroidStudio issues...
but I don't know if it's correct. :D
 

millo1978

Senior Member
Mar 28, 2008
625
436
Milano / Horb am Neckar
With this code I have a working QsTile

SELinuxQSTileService
Code:
package com.kerneladiutormod.reborn.services;

import android.annotation.TargetApi;
import android.content.Context;
import android.content.SharedPreferences;
import android.graphics.drawable.Icon;
import android.os.Build;
import android.service.quicksettings.Tile;
import android.service.quicksettings.TileService;
import android.util.Log;

import com.kerneladiutormod.reborn.R;
import com.kerneladiutormod.reborn.utils.Constants;
import com.kerneladiutormod.reborn.utils.root.Control;

import java.util.Locale;

import static com.kerneladiutormod.reborn.utils.Constants.SETENFORCE;

@TargetApi(Build.VERSION_CODES.N)
public class SELinuxQSTileService extends TileService {

    private static final String SERVICE_STATUS_FLAG = "serviceStatus";
    private static final String PREFERENCES_KEY = "com.google.android_quick_settings";
    protected Context context;

    @Override
    public void onTileAdded() {
        Log.d("QS", "SELinux - Tile added");
        tileSELinuxUpdate();
    }

    @Override
    public void onTileRemoved() {
        Log.d("QS", "SELinux - Tile removed");
    }

    @Override
    public void onClick() {
        Log.d("QS", "SELinux - Tile tapped");
        tileSELinuxUpdate();
    }

    @Override
    public void onStartListening () {
        Log.d("QS", "SELinux - Start listening");
        tileSELinuxUpdate();
    }

    @Override
    public void onStopListening () {
        Log.d("QS", "SELinux - Stop Listening");
    }



    private void tileSELinuxUpdate () {

        Tile tile = this.getQsTile();
        boolean isActive = getServiceStatus();

        Icon newIcon;
        String newLabel;
        int newState;

        // Change the tile to match the service status.
        if (isActive) {
            Log.i(Constants.TAG + ": " + getClass().getSimpleName(), "SELinux - Set Enforcing");
            newLabel = String.format(Locale.US,
                    "%s %s",
                    getString(R.string.tile_label),
                    getString(R.string.service_active));

            newIcon = Icon.createWithResource(getApplicationContext(),
                    R.drawable.ic_selinux_enf);

            newState = Tile.STATE_ACTIVE;
            Control.runCommand("1", SETENFORCE, Control.CommandType.SHELL, context);

        } else {
            Log.i(Constants.TAG + ": " + getClass().getSimpleName(), "SELinux - Set Permissive");
            newLabel = String.format(Locale.US,
                    "%s %s",
                    getString(R.string.tile_label),
                    getString(R.string.service_inactive));

            newIcon =
                    Icon.createWithResource(getApplicationContext(),
                            R.drawable.ic_selinux);

            newState = Tile.STATE_INACTIVE;
            Control.runCommand("0", SETENFORCE, Control.CommandType.SHELL, context);
        }


        // Change the UI of the tile.
        tile.setLabel(newLabel);
        tile.setIcon(newIcon);
        tile.setState(newState);

        // Need to call updateTile for the tile to pick up changes.
        tile.updateTile();
    }

    // Access storage to see how many times the tile
// has been tapped.
    private boolean getServiceStatus() {

        SharedPreferences prefs =
                getApplicationContext()
                        .getSharedPreferences(PREFERENCES_KEY, MODE_PRIVATE);

        boolean isActive = prefs.getBoolean(SERVICE_STATUS_FLAG, false);
        isActive = !isActive;

        prefs.edit().putBoolean(SERVICE_STATUS_FLAG, isActive).apply();

        return isActive;
    }

}

But it's correct?

I know only that...
It works good :)

...and I have also a changing Label :)
 

DiamondJohn

Recognized Contributor
Aug 31, 2013
7,350
7,366
Sydney
I had a quick read, and the only issue I think I can see is that you assume that the setenforce command actually worked. If you were to un-root your device, you should not be able to change the SELinux status, but I think your tile will still show/think its worked. Also, even if you are rooted and it succeeds, it will actually show the change as being successful, possibly before it is actually completed. You can read your logcat in a loop checking for when the setenforce is actually done, or if it failed.Probably better to use getenforce command.

PS: I don't personally use it, but I think I have read that the hide tag does not work on the mobile version of the XDA app. Might be better to use something like www.hastebin.com. We are also getting slightly off topic for the number of posts on this. It may be better to create a new thread (and provide a link)

PPS: I also notice that you are keeping assumed state of the SELinux, based on how many times the Tile is clicked. If the SELinux is changed via a different method (eg adb), then your count will not align to the actual status, and your tile will therefore display the wrong status.
 
Last edited:
  • Like
Reactions: millo1978

Top Liked Posts

  • There are no posts matching your filters.
  • 104
    Welcome Everyone!!!!

    DISCLAIMER-----
    This App Is The Reborn Version Of Old Kernel Aduitor Mod By @yoinx , So It Will Be Known As Kernel Adiutor Mod Reborn :cool:

    It Is Meant For Tweaking The Features Of Your Kernel It Will NOT Add Features In Your Kernel,If A Feature Doesn't Show Up In App Than Your Kernel May Not Have That Feature. Ask Your Kernel Dev For Which Features Are Supported In Your Kernel.

    INTRODUCTION-----
    This Is The Thread Of KA Mod Reborn Which Is The Updated Version Of Old KA Mod Made By @yoinX.

    As The Development Of The Old KA Mod App Has Been Abandoned So I Thought That I Should Take Over That Project Cause I Love The KA Mod App Very Badly But It Can't Work Correctly On My Phone And Other Newer Devices/Kernels Were Also Having Problems With It, So I Forked The Old KA Mod Source Code And Started Working.
    So Finally After A Long Wait Here Is The Updated KA Mod, I Renamed It To KA-Mod Reborn Due To Some Issues :victory:
    This App Is Still Under-development So More Fixes/Stability/Features Will Come In Future Versions.Please Be Patient :angel:

    INSTALLATION INSTRUCTIONS-----

    This App Has Different Installation Directory/App Name/Package Name From The Orignal Kernel Aduitor By @Grarak And It Also Differs From Original Kernel Aduitor Mod By @yoinx.
    This Was Not Done To Steal/Disguise This App But To Prevent Conflicts If You Choose To Keep The Original KA Mod By @yoinx Or Original Kernel Aduitor By @Grarak.

    NOTE-----
    App Version 16 & 17 Still Uses The Old Installation Directory/App Name/Package Name As Old KA Mod Do, The Reason Behind This, Is The Issue.

    DOWNLOADS-----
    Current Build [V18]- Download


    CHANGELOGS-----

    This App Will Continue The Version Number Where The Old KA Mod Left.

    V18
    • {Change}Changed The App Name To KA-Mod Reborn & Package Name To com.kerneladiutor.reborn.
    • {Add}Added GPU Sysfs Paths For Zenfone 2
    • {Add}Added HBM Quick Settings Tile.
    • {Add}Added Battery Charging Current Indicator In Battery Section.
    • {Add}Added Vibration Support For Pixel XL & Pixel.
    • {Add}Added A 0 Second Delay For Apply On Boot.
    • {Fix}Fixed Assuming That All 4 Cores CPU Are Big.Little.
    • {Fix}Fixed Adreno Idler Issues.
    • {Fix}Few Other Fixes And Improvements.
    • {Update}Updated App Updater To Point To My Repo For Updates.
    • {Update}Updated Vibration & AutoSMP Hotplug Parameters.
    • {Update}Updated CPU Boost.

    V17
    • {Add}Added Support For Nexus 6P.
    • {Add}Added Support For I/O Schedulers For Pixel XL & Pixel.
    • {Fix}Fixed Crash While Turning On/Off MSM_Limiter.
    • {Fix}Fixed Calculation Of Big.Little Cores On SD 820 SOCs (This Still Needs Some Fixes As it Is Not Working For Some Phones Like Nexus 6/One Plus One, Tho It has Been Fixed For Most Of The Devices)

    V16
    • {Updates} Updated To SDK 27 (Android O) & Updated Various Other Tools/Gradle.
      This Version Has No Fixes/Features I Just Updated It,Fixes Will Come In Future Versions Please Be Patient.

    FEATURES-----
    This App Has All The Features Of Old KA Mod :D , I Will Edit This When I Will Add New Features In The The Future Versions Of This New Reborn KA Mod :cool:

    FAQ-----

    Q- Will You Explain What Awesome Features In My Kernel Do?
    A- No, Ask Your Kernel Dev Or Search On Google.

    Q- Which Settings Are The Best For Battery Life/Performance/Balanced?
    A- I Don't Know, I Probably Don't Even Run The Same Kernel As You Do.

    Q- I Found A Bug What Should I Do?
    A- Provide As Much As Information Possible With Logs & Post In The Thread Or You Can Join The Telegram Group.

    Q- Somethings That Are Working On Original Kernel Adiutor Are Not Working On This?
    A- I Apologize For That This App Is Still Under-development So More Fixes/Stability/Features Will Come In Future Versions.Please Be Patient.

    TELEGRAM GROUP-----

    You Can Join This Group For Getting Help/Beta Testing. :)
    Telegram Group-Here

    INFORMATION FOR DEVS/ADVANCED USERS-----
    This Part I Have Copied From Old Kernel Adiutor Mod Thread

    Kernel Download Support-
    I Have Modified This Unbranded Release So That Kernel Devs Can Add Support (And Override Whatever Is Included In The App Already) For Their Kernel's Downloads By Including /res/kernel_adiutor_mod/downloads.json In Their Ramdisk.

    Why? Well... It Removes The Need For Commits To Add Support For The Kernels Within The App. Want Support? Add The File To The Ramdisk. Next Time When A User Flashes The Kernel, The App Will Display Them With Your Downloads.

    Information taken from Grarak's Wiki
    The original app required the files to either be downloads.json to be compiled into the app, or in the app's data directory. I simply added the /res directory and made the priority /res > data dir > app's resources. So the information is the same.
    /res/kernel_adiutor_mod/downloads.json

    This File Is Static, Once Configured And Added To The Ramdisk It Will Remain Valid Unless You Remove/Move The Link File. It Will Pull This File Each Time The Dowloads Section Is opened, Pulling In Whatever Changes You've Made To The Linked File.

    For An Example Of The Downloads Link, Check Any Of The Ones Included Here As Well As The Example In Grarak's Wiki. This File Will Be Dynamic, Any Changes That You Make To It Will Actively Be Pulled When Users Open The Downloads Section Within The App Once The Static File Has Been Added To The Ramdisk.�

    Intents
    HighBrighness Mode on: com.kerneladiutor.mod.action.HBM_ON
    HighBrighness Mode off: com.kerneladiutor.mod.action.HBM_OFF

    HONOURABLE MENTIONS/CREDITS
    @Grarak (Original Dev Of Kernel Adiutor)

    @yoinx (Dev Of Kernel Adiutor Mod)

    @spezi77 (For His Code)

    @apophis9283 (For His Code And Support :eek: )

    @David 617 (For Allowing Me To Continue This App)

    @infus38 (Do I Have To Say Why?)

    @madcodez (Again,Do I Have To Say Why? App Compiler)

    @Mervingio (For Helping/Contributing)

    @Bryanx86 (For Helping/Contributing)

    @Ali Haide 001 (You Wanna Say Anything?) :p

    XDA:DevDB Information
    Kernel Adiutor-Mod Reborn, An App For All Devices

    Contributors
    See Above

    Source Code: Here

    Version Information
    Status:
    Current Version: V18

    Created: 2017-12-03
    Last Updated: 2017-12-10
    32
    V18 Has Been Released:victory:

    See The Topic For Changelogs;)

    A Bad News For You Guys

    This Project Will Be Continued After 10th-April-2018 Cause Of My Exams I Haven't Abandoned This Project I Have Just Postponed It. I Repeat This Project Is Just POSTPONED Till 10th-April-2018.
    I Apologize For This , Hope You Guys Will Understand.

    Sorry Guys:(
    14
    Reserved For Future Surprises:cool:
    14
    Hello :)
    @sonophilos
    @an21281

    I know that boot service isn't working
    I apologize for this:(

    I will fix this in next update it is at the top of my to do list but
    everyone have to wait:( cause i can't work on it due to my exams sorry:(

    And thank you very much @DiamondJohn for helping other people:)
    I appreciate it:eek:

    Have a nice day to everyone:eek:
    10
    Yes I Know ;)
    It Will Be Fixed In Next Update;)

    But Until Then You Can Enjoy Big.little Core in Your Non-Big.little Core Phn:laugh:

    Good answer. Remember, there are no bugs, just unwanted features :)