60 lines
1.8 KiB
Java
Raw Normal View History

2018-06-02 22:00:52 +08:00
package com.topjohnwu.magisk.utils;
2018-07-27 04:48:32 +08:00
import android.content.Context;
import android.support.annotation.NonNull;
import com.topjohnwu.magisk.R;
import com.topjohnwu.superuser.BusyBox;
2018-06-02 22:00:52 +08:00
import com.topjohnwu.superuser.Shell;
import com.topjohnwu.superuser.io.SuFile;
2018-07-27 04:48:32 +08:00
import java.io.File;
import java.io.IOException;
import java.io.InputStream;
public class RootUtils extends Shell.Initializer {
static {
BusyBox.BB_PATH = new File(Const.BUSYBOX_PATH);
2018-06-02 22:00:52 +08:00
}
2018-07-27 04:48:32 +08:00
private static boolean fileInit = false;
2018-06-02 22:00:52 +08:00
public static void uninstallPkg(String pkg) {
2018-07-27 04:48:32 +08:00
Shell.su("db_clean " + Const.USER_ID, "pm uninstall " + pkg).exec();
}
private void initConsts() {
Const.MAGISK_DISABLE_FILE = new SuFile("/cache/.disable_magisk");
SuFile file = new SuFile("/sbin/.core/img");
if (file.exists()) {
Const.MAGISK_PATH = file;
} else if ((file = new SuFile("/dev/magisk/img")).exists()) {
Const.MAGISK_PATH = file;
} else {
Const.MAGISK_PATH = new SuFile("/magisk");
}
Const.MAGISK_HOST_FILE = new SuFile(Const.MAGISK_PATH + "/.core/hosts");
fileInit = true;
}
@Override
public boolean onInit(Context context, @NonNull Shell shell) {
if (shell.isRoot()) {
try (InputStream magiskUtils = context.getResources().openRawResource(R.raw.util_functions);
InputStream managerUtils = context.getResources().openRawResource(R.raw.utils)
) {
shell.newJob()
.add(magiskUtils).add(managerUtils)
.add("mount_partitions", "get_flags", "run_migrations")
.exec();
} catch (IOException e) {
return false;
}
if (!fileInit)
initConsts();
}
return true;
2018-06-02 22:00:52 +08:00
}
}