From 600ac356583aad2f64e3028a32641c39d5523a0c Mon Sep 17 00:00:00 2001 From: RikkaW Date: Wed, 13 Jan 2021 00:26:45 +0800 Subject: [PATCH] Ensure auto restart works --- riru/src/main/java/riru/Daemon.java | 2 ++ riru/src/main/java/riru/DaemonUtils.java | 15 ++++++++++++++- 2 files changed, 16 insertions(+), 1 deletion(-) diff --git a/riru/src/main/java/riru/Daemon.java b/riru/src/main/java/riru/Daemon.java index c388de6e..1f6690ac 100644 --- a/riru/src/main/java/riru/Daemon.java +++ b/riru/src/main/java/riru/Daemon.java @@ -76,6 +76,8 @@ private void startWait(boolean allowRestart, boolean isFirst) { try { binder.linkToDeath(() -> { + DaemonUtils.deleteDevFolder(); + Log.i(TAG, "Zygote is probably dead, restart rirud socket..."); DaemonUtils.startSocket(DaemonUtils.findNativeDaemonPid()); diff --git a/riru/src/main/java/riru/DaemonUtils.java b/riru/src/main/java/riru/DaemonUtils.java index a76435f9..135a9e30 100644 --- a/riru/src/main/java/riru/DaemonUtils.java +++ b/riru/src/main/java/riru/DaemonUtils.java @@ -61,7 +61,7 @@ public static IBinder waitForSystemService(String name) { } while (true); } - public static boolean isRiruLoaded() { + public static String getRiruRandom() { String devRandom = null; try (BufferedReader br = new BufferedReader(new FileReader(new File("/data/adb/riru/dev_random")))) { char[] buf = new char[4096]; @@ -72,7 +72,11 @@ public static boolean isRiruLoaded() { } catch (IOException e) { Log.w(Daemon.TAG, "Can't read dev_random.", e); } + return devRandom; + } + public static boolean isRiruLoaded() { + String devRandom = getRiruRandom(); if (devRandom == null) { return false; } @@ -80,6 +84,15 @@ public static boolean isRiruLoaded() { return new File("/dev/riru_" + devRandom).exists(); } + public static boolean deleteDevFolder() { + String devRandom = getRiruRandom(); + if (devRandom == null) { + return false; + } + + return new File("/dev/riru_" + devRandom).delete(); + } + public static int findNativeDaemonPid() { File proc = new File("/proc");