From b9d282cdfd7b613a057e5210600887d5ff6097bd Mon Sep 17 00:00:00 2001 From: Nullptr Date: Mon, 28 Aug 2023 19:52:18 +0800 Subject: [PATCH] Refine service & Add flash ksu script (#2714) --- .../service/LSPInjectedModuleService.java | 2 +- .../lspd/service/LSPModuleService.java | 33 ++++++++++--------- magisk-loader/build.gradle.kts | 19 +++++++++-- 3 files changed, 34 insertions(+), 20 deletions(-) diff --git a/daemon/src/main/java/org/lsposed/lspd/service/LSPInjectedModuleService.java b/daemon/src/main/java/org/lsposed/lspd/service/LSPInjectedModuleService.java index be671315..bfa975c9 100644 --- a/daemon/src/main/java/org/lsposed/lspd/service/LSPInjectedModuleService.java +++ b/daemon/src/main/java/org/lsposed/lspd/service/LSPInjectedModuleService.java @@ -37,7 +37,7 @@ public class LSPInjectedModuleService extends ILSPInjectedModuleService.Stub { @Override public Bundle requestRemotePreferences(String group, IRemotePreferenceCallback callback) { var bundle = new Bundle(); - var userId = Binder.getCallingUid() % PER_USER_RANGE; + var userId = Binder.getCallingUid() / PER_USER_RANGE; bundle.putSerializable("map", ConfigManager.getInstance().getModulePrefs(loadedModule.packageName, userId, group)); if (callback != null) { var groupCallbacks = callbacks.computeIfAbsent(group, k -> ConcurrentHashMap.newKeySet()); diff --git a/daemon/src/main/java/org/lsposed/lspd/service/LSPModuleService.java b/daemon/src/main/java/org/lsposed/lspd/service/LSPModuleService.java index 6db093ec..e0111a01 100644 --- a/daemon/src/main/java/org/lsposed/lspd/service/LSPModuleService.java +++ b/daemon/src/main/java/org/lsposed/lspd/service/LSPModuleService.java @@ -35,6 +35,7 @@ import androidx.annotation.NonNull; import org.lsposed.daemon.BuildConfig; import org.lsposed.lspd.models.Module; +import java.io.IOException; import java.util.ArrayList; import java.util.Collections; import java.util.List; @@ -228,13 +229,25 @@ public class LSPModuleService extends IXposedService.Stub { } @Override - public ParcelFileDescriptor openRemoteFile(String path, int mode) throws RemoteException { + public String[] listRemoteFiles() throws RemoteException { + var userId = ensureModule(); + try { + var dir = ConfigFileManager.resolveModuleDir(loadedModule.packageName, FILES_DIR, userId, Binder.getCallingUid()); + var files = dir.toFile().list(); + return files == null ? new String[0] : files; + } catch (IOException e) { + throw new RemoteException(e.getMessage()); + } + } + + @Override + public ParcelFileDescriptor openRemoteFile(String path) throws RemoteException { var userId = ensureModule(); ConfigFileManager.ensureModuleFilePath(path); try { var dir = ConfigFileManager.resolveModuleDir(loadedModule.packageName, FILES_DIR, userId, Binder.getCallingUid()); - return ParcelFileDescriptor.open(dir.resolve(path).toFile(), mode); - } catch (Throwable e) { + return ParcelFileDescriptor.open(dir.resolve(path).toFile(), ParcelFileDescriptor.MODE_CREATE | ParcelFileDescriptor.MODE_READ_WRITE); + } catch (IOException e) { throw new RemoteException(e.getMessage()); } } @@ -246,19 +259,7 @@ public class LSPModuleService extends IXposedService.Stub { try { var dir = ConfigFileManager.resolveModuleDir(loadedModule.packageName, FILES_DIR, userId, Binder.getCallingUid()); return dir.resolve(path).toFile().delete(); - } catch (Throwable e) { - throw new RemoteException(e.getMessage()); - } - } - - @Override - public String[] listRemoteFiles() throws RemoteException { - var userId = ensureModule(); - try { - var dir = ConfigFileManager.resolveModuleDir(loadedModule.packageName, FILES_DIR, userId, Binder.getCallingUid()); - var files = dir.toFile().list(); - return files == null ? new String[0] : files; - } catch (Throwable e) { + } catch (IOException e) { throw new RemoteException(e.getMessage()); } } diff --git a/magisk-loader/build.gradle.kts b/magisk-loader/build.gradle.kts index 3f783154..8ceccada 100644 --- a/magisk-loader/build.gradle.kts +++ b/magisk-loader/build.gradle.kts @@ -248,7 +248,7 @@ fun afterEval() = android.applicationVariants.forEach { variant -> workingDir("${projectDir}/release") commandLine(adb, "push", zipFileName, "/data/local/tmp/") } - val flashTask = task("flash${variantCapped}") { + val flashMagiskTask = task("flashMagisk${variantCapped}") { group = "LSPosed" dependsOn(pushTask) commandLine( @@ -256,9 +256,22 @@ fun afterEval() = android.applicationVariants.forEach { variant -> "magisk --install-module /data/local/tmp/${zipFileName}" ) } - task("flashAndReboot${variantCapped}") { + task("flashMagiskAndReboot${variantCapped}") { group = "LSPosed" - dependsOn(flashTask) + dependsOn(flashMagiskTask) + commandLine(adb, "shell", "/system/bin/svc", "power", "reboot") + } + val flashKsuTask = task("flashKsu${variantCapped}") { + group = "LSPosed" + dependsOn(pushTask) + commandLine( + adb, "shell", "su", "-c", + "ksud module install /data/local/tmp/${zipFileName}" + ) + } + task("flashKsuAndReboot${variantCapped}") { + group = "LSPosed" + dependsOn(flashKsuTask) commandLine(adb, "shell", "/system/bin/svc", "power", "reboot") } }