diff --git a/app/build.gradle b/app/build.gradle index 764dd17f2..7c1c0ed40 100644 --- a/app/build.gradle +++ b/app/build.gradle @@ -2,7 +2,7 @@ apply plugin: 'com.android.application' android { compileSdkVersion 26 - buildToolsVersion "26.0.0" + buildToolsVersion "26.0.1" defaultConfig { applicationId "com.topjohnwu.magisk" diff --git a/app/src/main/java/com/topjohnwu/magisk/MagiskFragment.java b/app/src/main/java/com/topjohnwu/magisk/MagiskFragment.java index 8cdf8163e..b80ab9ca3 100644 --- a/app/src/main/java/com/topjohnwu/magisk/MagiskFragment.java +++ b/app/src/main/java/com/topjohnwu/magisk/MagiskFragment.java @@ -142,7 +142,7 @@ public class MagiskFragment extends Fragment @Override public void onDownloadDone(Uri uri) { if (Shell.rootAccess()) { - magiskManager.shell.su_raw( + Shell.getShell(getActivity()).su_raw( "rm -f /dev/.magisk", "echo \"BOOTIMAGE=" + boot + "\" >> /dev/.magisk", "echo \"KEEPFORCEENCRYPT=" + String.valueOf(enc) + "\" >> /dev/.magisk", @@ -206,7 +206,7 @@ public class MagiskFragment extends Fragment @Override public void onFinish() { progress.setMessage(getString(R.string.reboot_countdown, 0)); - magiskManager.shell.su_raw( + Shell.getShell(getActivity()).su_raw( "mv -f " + uninstaller + " /cache/" + MagiskManager.UNINSTALLER, "mv -f " + utils + " /data/magisk/" + MagiskManager.UTIL_FUNCTIONS, "reboot" diff --git a/app/src/main/java/com/topjohnwu/magisk/MagiskLogFragment.java b/app/src/main/java/com/topjohnwu/magisk/MagiskLogFragment.java index c11a5ddaa..b627eefbc 100644 --- a/app/src/main/java/com/topjohnwu/magisk/MagiskLogFragment.java +++ b/app/src/main/java/com/topjohnwu/magisk/MagiskLogFragment.java @@ -135,11 +135,11 @@ public class MagiskLogFragment extends Fragment { switch (mode) { case 0: StringBuildingList logList = new StringBuildingList(); - magiskManager.shell.su(logList, "cat " + MAGISK_LOG); + Shell.getShell(magiskManager).su(logList, "cat " + MAGISK_LOG); return logList.toString(); case 1: - magiskManager.shell.su_raw("echo > " + MAGISK_LOG); + Shell.getShell(magiskManager).su_raw("echo > " + MAGISK_LOG); SnackbarMaker.make(txtLog, R.string.logs_cleared, Snackbar.LENGTH_SHORT).show(); return ""; @@ -160,7 +160,7 @@ public class MagiskLogFragment extends Fragment { try (FileWriter out = new FileWriter(targetFile)) { FileWritingList fileWritingList = new FileWritingList(out); - magiskManager.shell.su(fileWritingList, "cat " + MAGISK_LOG); + Shell.getShell(magiskManager).su(fileWritingList, "cat " + MAGISK_LOG); } catch (IOException e) { e.printStackTrace(); return false; diff --git a/app/src/main/java/com/topjohnwu/magisk/SettingsActivity.java b/app/src/main/java/com/topjohnwu/magisk/SettingsActivity.java index 0c2f99f29..f2bc1f27c 100644 --- a/app/src/main/java/com/topjohnwu/magisk/SettingsActivity.java +++ b/app/src/main/java/com/topjohnwu/magisk/SettingsActivity.java @@ -188,28 +188,28 @@ public class SettingsActivity extends Activity implements CallbackEvent.Listener case "disable": enabled = prefs.getBoolean("disable", false); if (enabled) { - Utils.createFile(magiskManager.shell, MagiskManager.MAGISK_DISABLE_FILE); + Utils.createFile(Shell.getShell(magiskManager), MagiskManager.MAGISK_DISABLE_FILE); } else { - Utils.removeItem(magiskManager.shell, MagiskManager.MAGISK_DISABLE_FILE); + Utils.removeItem(Shell.getShell(magiskManager), MagiskManager.MAGISK_DISABLE_FILE); } Toast.makeText(getActivity(), R.string.settings_reboot_toast, Toast.LENGTH_LONG).show(); break; case "magiskhide": enabled = prefs.getBoolean("magiskhide", false); if (enabled) { - Utils.enableMagiskHide(magiskManager.shell); + Utils.enableMagiskHide(Shell.getShell(magiskManager)); } else { - Utils.disableMagiskHide(magiskManager.shell); + Utils.disableMagiskHide(Shell.getShell(magiskManager)); } break; case "hosts": enabled = prefs.getBoolean("hosts", false); if (enabled) { - magiskManager.shell.su_raw( + Shell.getShell(magiskManager).su_raw( "cp -af /system/etc/hosts /magisk/.core/hosts", "mount -o bind /magisk/.core/hosts /system/etc/hosts"); } else { - magiskManager.shell.su_raw( + Shell.getShell(magiskManager).su_raw( "umount -l /system/etc/hosts", "rm -f /magisk/.core/hosts"); } diff --git a/app/src/main/java/com/topjohnwu/magisk/adapters/ApplicationAdapter.java b/app/src/main/java/com/topjohnwu/magisk/adapters/ApplicationAdapter.java index 7e0354928..ac3d4b4a5 100644 --- a/app/src/main/java/com/topjohnwu/magisk/adapters/ApplicationAdapter.java +++ b/app/src/main/java/com/topjohnwu/magisk/adapters/ApplicationAdapter.java @@ -55,7 +55,7 @@ public class ApplicationAdapter extends RecyclerView.Adapter { private File busybox; - private Shell shell; public DownloadBusybox(Context context, File bb) { busybox = bb; - shell = Utils.getMagiskManager(context).shell; } @Override protected Void doInBackground(Void... voids) { - shell.su("rm -rf " + busybox.getParentFile()); + getShell().su("rm -rf " + busybox.getParentFile()); busybox.getParentFile().mkdirs(); try { FileOutputStream out = new FileOutputStream(busybox); @@ -44,7 +39,7 @@ public class DownloadBusybox extends ParallelTask { } out.close(); in.close(); - shell.su_raw( + getShell().su_raw( "chmod -R 755 " + busybox.getParent(), busybox + " --install -s " + busybox.getParent() ); diff --git a/app/src/main/java/com/topjohnwu/magisk/asyncs/FlashZip.java b/app/src/main/java/com/topjohnwu/magisk/asyncs/FlashZip.java index 2502a0e77..74b22c067 100644 --- a/app/src/main/java/com/topjohnwu/magisk/asyncs/FlashZip.java +++ b/app/src/main/java/com/topjohnwu/magisk/asyncs/FlashZip.java @@ -1,7 +1,6 @@ package com.topjohnwu.magisk.asyncs; import android.app.Activity; -import android.content.Context; import android.net.Uri; import android.text.TextUtils; @@ -83,7 +82,7 @@ public class FlashZip extends ParallelTask { } if (!unzipAndCheck()) return 0; mList.add(magiskManager.getString(R.string.zip_install_progress_msg, mFilename)); - magiskManager.shell.su(mList, + getShell().su(mList, "BOOTMODE=true sh " + mScriptFile + " dummy 1 " + mCachedFile + " && echo 'Success!' || echo 'Failed!'" ); @@ -100,7 +99,7 @@ public class FlashZip extends ParallelTask { protected void onPostExecute(Integer result) { MagiskManager magiskManager = getMagiskManager(); if (magiskManager == null) return; - magiskManager.shell.su_raw( + getShell().su_raw( "rm -rf " + mCachedFile.getParent(), "rm -rf " + MagiskManager.TMP_FOLDER_PATH ); diff --git a/app/src/main/java/com/topjohnwu/magisk/asyncs/LoadModules.java b/app/src/main/java/com/topjohnwu/magisk/asyncs/LoadModules.java index de8161524..5234e3909 100644 --- a/app/src/main/java/com/topjohnwu/magisk/asyncs/LoadModules.java +++ b/app/src/main/java/com/topjohnwu/magisk/asyncs/LoadModules.java @@ -23,10 +23,10 @@ public class LoadModules extends ParallelTask { magiskManager.moduleMap = new ValueSortedMap<>(); - for (String path : Utils.getModList(magiskManager.shell, MagiskManager.MAGISK_PATH)) { + for (String path : Utils.getModList(getShell(), MagiskManager.MAGISK_PATH)) { Logger.dev("LoadModules: Adding modules from " + path); try { - Module module = new Module(magiskManager.shell, path); + Module module = new Module(getShell(), path); magiskManager.moduleMap.put(module.getId(), module); } catch (BaseModule.CacheModException ignored) {} } diff --git a/app/src/main/java/com/topjohnwu/magisk/asyncs/ParallelTask.java b/app/src/main/java/com/topjohnwu/magisk/asyncs/ParallelTask.java index 188fb96c5..be5bd9069 100644 --- a/app/src/main/java/com/topjohnwu/magisk/asyncs/ParallelTask.java +++ b/app/src/main/java/com/topjohnwu/magisk/asyncs/ParallelTask.java @@ -38,7 +38,7 @@ public abstract class ParallelTask extends AsyncTask

/dev/null\n")).getBytes("UTF-8")); STDIN.flush(); } } catch (IOException e) { @@ -130,8 +141,8 @@ public class Shell { synchronized (shellProcess) { StreamGobbler out = new StreamGobbler(STDOUT, output); out.start(); - sh_raw(commands); - sh_raw("echo \'-shell-done-\'"); + sh_raw(true, commands); + sh_raw(true, "echo \'-shell-done-\'"); try { out.join(); } catch (InterruptedException ignored) {} } }