diff --git a/edxp-common/build.gradle b/edxp-common/build.gradle
index 36d6440f..87a41555 100644
--- a/edxp-common/build.gradle
+++ b/edxp-common/build.gradle
@@ -45,4 +45,9 @@ afterEvaluate {
tasks.withType(JavaCompile) {
options.compilerArgs.add("-Xbootclasspath/p:${projectDir.absolutePath}/libs/framework-stub.jar")
}
+
+ task("copyCommonroperties", type: Copy) {
+ from file("${projectDir}/template_override/")
+ into file(templateRootPath)
+ }
}
\ No newline at end of file
diff --git a/edxp-common/src/main/java/com/elderdrivers/riru/edxp/config/BaseHookProvider.java b/edxp-common/src/main/java/com/elderdrivers/riru/edxp/config/BaseHookProvider.java
new file mode 100644
index 00000000..28d4d5fa
--- /dev/null
+++ b/edxp-common/src/main/java/com/elderdrivers/riru/edxp/config/BaseHookProvider.java
@@ -0,0 +1,30 @@
+package com.elderdrivers.riru.edxp.config;
+
+import com.elderdrivers.riru.edxp.deopt.PrebuiltMethodsDeopter;
+import com.elderdrivers.riru.edxp.hook.HookProvider;
+
+import java.lang.reflect.Member;
+
+public abstract class BaseHookProvider implements HookProvider {
+
+ public Member findMethodNative(Member hookMethod) {
+ return hookMethod;
+ }
+
+ public long getMethodId(Member member) {
+ return 0;
+ }
+
+ public Object findMethodNative(Class clazz, String methodName, String methodSig) {
+ return null;
+ }
+
+ public void deoptMethods(String packageName, ClassLoader classLoader) {
+ PrebuiltMethodsDeopter.deoptMethods(packageName, classLoader);
+ }
+
+ @Override
+ public void deoptMethodNative(Object method) {
+
+ }
+}
diff --git a/edxp-yahfa/src/main/java/com/elderdrivers/riru/edxp/yahfa/util/InlinedMethodCallers.java b/edxp-common/src/main/java/com/elderdrivers/riru/edxp/deopt/InlinedMethodCallers.java
similarity index 97%
rename from edxp-yahfa/src/main/java/com/elderdrivers/riru/edxp/yahfa/util/InlinedMethodCallers.java
rename to edxp-common/src/main/java/com/elderdrivers/riru/edxp/deopt/InlinedMethodCallers.java
index 15fffeb0..1f0862dd 100644
--- a/edxp-yahfa/src/main/java/com/elderdrivers/riru/edxp/yahfa/util/InlinedMethodCallers.java
+++ b/edxp-common/src/main/java/com/elderdrivers/riru/edxp/deopt/InlinedMethodCallers.java
@@ -1,4 +1,4 @@
-package com.elderdrivers.riru.edxp.yahfa.util;
+package com.elderdrivers.riru.edxp.deopt;
import java.util.HashMap;
diff --git a/edxp-yahfa/src/main/java/com/elderdrivers/riru/edxp/yahfa/util/PrebuiltMethodsDeopter.java b/edxp-common/src/main/java/com/elderdrivers/riru/edxp/deopt/PrebuiltMethodsDeopter.java
similarity index 69%
rename from edxp-yahfa/src/main/java/com/elderdrivers/riru/edxp/yahfa/util/PrebuiltMethodsDeopter.java
rename to edxp-common/src/main/java/com/elderdrivers/riru/edxp/deopt/PrebuiltMethodsDeopter.java
index ecd8813d..a90b1908 100644
--- a/edxp-yahfa/src/main/java/com/elderdrivers/riru/edxp/yahfa/util/PrebuiltMethodsDeopter.java
+++ b/edxp-common/src/main/java/com/elderdrivers/riru/edxp/deopt/PrebuiltMethodsDeopter.java
@@ -1,14 +1,14 @@
-package com.elderdrivers.riru.edxp.yahfa.util;
+package com.elderdrivers.riru.edxp.deopt;
+import com.elderdrivers.riru.edxp.config.EdXpConfigGlobal;
import com.elderdrivers.riru.edxp.util.Utils;
-import com.elderdrivers.riru.edxp.Main;
import java.util.Arrays;
import de.robv.android.xposed.XposedHelpers;
-import static com.elderdrivers.riru.edxp.yahfa.util.InlinedMethodCallers.KEY_BOOT_IMAGE;
-import static com.elderdrivers.riru.edxp.yahfa.util.InlinedMethodCallers.KEY_SYSTEM_SERVER;
+import static com.elderdrivers.riru.edxp.deopt.InlinedMethodCallers.KEY_BOOT_IMAGE;
+import static com.elderdrivers.riru.edxp.deopt.InlinedMethodCallers.KEY_SYSTEM_SERVER;
public class PrebuiltMethodsDeopter {
@@ -19,10 +19,10 @@ public class PrebuiltMethodsDeopter {
}
for (String[] caller : callers) {
try {
- Object method = Main.findMethodNative(
+ Object method = EdXpConfigGlobal.getHookProvider().findMethodNative(
XposedHelpers.findClass(caller[0], cl), caller[1], caller[2]);
if (method != null) {
- Main.deoptMethodNative(method);
+ EdXpConfigGlobal.getHookProvider().deoptMethodNative(method);
}
} catch (Throwable throwable) {
Utils.logE("error when deopting method: " + Arrays.toString(caller), throwable);
diff --git a/edxp-sandhook/template_override/system/lib/libwhale.edxp.so b/edxp-common/template_override/system/lib/libwhale.edxp.so
similarity index 100%
rename from edxp-sandhook/template_override/system/lib/libwhale.edxp.so
rename to edxp-common/template_override/system/lib/libwhale.edxp.so
diff --git a/edxp-sandhook/template_override/system/lib64/libwhale.edxp.so b/edxp-common/template_override/system/lib64/libwhale.edxp.so
similarity index 100%
rename from edxp-sandhook/template_override/system/lib64/libwhale.edxp.so
rename to edxp-common/template_override/system/lib64/libwhale.edxp.so
diff --git a/edxp-sandhook/template_override/system_x86/lib/libwhale.edxp.so b/edxp-common/template_override/system_x86/lib/libwhale.edxp.so
similarity index 100%
rename from edxp-sandhook/template_override/system_x86/lib/libwhale.edxp.so
rename to edxp-common/template_override/system_x86/lib/libwhale.edxp.so
diff --git a/edxp-sandhook/template_override/system_x86/lib64/libwhale.edxp.so b/edxp-common/template_override/system_x86/lib64/libwhale.edxp.so
similarity index 100%
rename from edxp-sandhook/template_override/system_x86/lib64/libwhale.edxp.so
rename to edxp-common/template_override/system_x86/lib64/libwhale.edxp.so
diff --git a/edxp-sandhook/build.gradle b/edxp-sandhook/build.gradle
index 21b5e374..82f1a5b7 100644
--- a/edxp-sandhook/build.gradle
+++ b/edxp-sandhook/build.gradle
@@ -57,6 +57,7 @@ afterEvaluate {
def myTemplatePath = "${projectDir}/template_override/"
task("makeAndCopy${variantNameCapped}", type: Jar, dependsOn: "assemble${variantNameCapped}") {
+ dependsOn tasks.getByPath(":edxp-common:copyCommonroperties")
from "${buildDir}/intermediates/dex/${variantNameLowered}/mergeDex${variantNameCapped}/out/"
destinationDir file(myTemplatePath + "system/framework/")
baseName "edxp"
diff --git a/edxp-sandhook/src/main/java/com/elderdrivers/riru/edxp/sandhook/entry/hooker/SystemMainHooker.java b/edxp-sandhook/src/main/java/com/elderdrivers/riru/edxp/sandhook/entry/hooker/SystemMainHooker.java
index c5d6d1fd..b7bb5dba 100644
--- a/edxp-sandhook/src/main/java/com/elderdrivers/riru/edxp/sandhook/entry/hooker/SystemMainHooker.java
+++ b/edxp-sandhook/src/main/java/com/elderdrivers/riru/edxp/sandhook/entry/hooker/SystemMainHooker.java
@@ -3,13 +3,12 @@ package com.elderdrivers.riru.edxp.sandhook.entry.hooker;
import android.app.ActivityThread;
import com.elderdrivers.riru.common.KeepMembers;
+import com.elderdrivers.riru.edxp.deopt.PrebuiltMethodsDeopter;
import com.elderdrivers.riru.edxp.sandhook.entry.Router;
-import com.elderdrivers.riru.edxp.sandhook.util.PrebuiltMethodsDeopter;
import com.swift.sandhook.SandHook;
import com.swift.sandhook.annotation.HookClass;
import com.swift.sandhook.annotation.HookMethod;
import com.swift.sandhook.annotation.HookMethodBackup;
-import com.swift.sandhook.annotation.HookMode;
import java.lang.reflect.Method;
diff --git a/edxp-sandhook/src/main/java/com/elderdrivers/riru/edxp/sandhook/proxy/BlackWhiteListProxy.java b/edxp-sandhook/src/main/java/com/elderdrivers/riru/edxp/sandhook/proxy/BlackWhiteListProxy.java
index fec53890..fd565e66 100644
--- a/edxp-sandhook/src/main/java/com/elderdrivers/riru/edxp/sandhook/proxy/BlackWhiteListProxy.java
+++ b/edxp-sandhook/src/main/java/com/elderdrivers/riru/edxp/sandhook/proxy/BlackWhiteListProxy.java
@@ -3,11 +3,11 @@ package com.elderdrivers.riru.edxp.sandhook.proxy;
import android.text.TextUtils;
import com.elderdrivers.riru.edxp.config.ConfigManager;
+import com.elderdrivers.riru.edxp.deopt.PrebuiltMethodsDeopter;
import com.elderdrivers.riru.edxp.util.ProcessUtils;
import com.elderdrivers.riru.edxp.util.Utils;
import com.elderdrivers.riru.edxp.Main;
import com.elderdrivers.riru.edxp.sandhook.entry.Router;
-import com.elderdrivers.riru.edxp.sandhook.util.PrebuiltMethodsDeopter;
import de.robv.android.xposed.XposedBridge;
diff --git a/edxp-sandhook/src/main/java/com/elderdrivers/riru/edxp/sandhook/proxy/NormalProxy.java b/edxp-sandhook/src/main/java/com/elderdrivers/riru/edxp/sandhook/proxy/NormalProxy.java
index 10d97ec2..f63052d9 100644
--- a/edxp-sandhook/src/main/java/com/elderdrivers/riru/edxp/sandhook/proxy/NormalProxy.java
+++ b/edxp-sandhook/src/main/java/com/elderdrivers/riru/edxp/sandhook/proxy/NormalProxy.java
@@ -2,8 +2,8 @@ package com.elderdrivers.riru.edxp.sandhook.proxy;
import com.elderdrivers.riru.edxp.config.ConfigManager;
import com.elderdrivers.riru.edxp.Main;
+import com.elderdrivers.riru.edxp.deopt.PrebuiltMethodsDeopter;
import com.elderdrivers.riru.edxp.sandhook.entry.Router;
-import com.elderdrivers.riru.edxp.sandhook.util.PrebuiltMethodsDeopter;
import static com.elderdrivers.riru.edxp.util.FileUtils.getDataPathPrefix;
diff --git a/edxp-sandhook/src/main/java/com/elderdrivers/riru/edxp/sandhook/util/InlinedMethodCallers.java b/edxp-sandhook/src/main/java/com/elderdrivers/riru/edxp/sandhook/util/InlinedMethodCallers.java
deleted file mode 100644
index 4ef716e1..00000000
--- a/edxp-sandhook/src/main/java/com/elderdrivers/riru/edxp/sandhook/util/InlinedMethodCallers.java
+++ /dev/null
@@ -1,49 +0,0 @@
-package com.elderdrivers.riru.edxp.sandhook.util;
-
-import java.util.HashMap;
-
-/**
- * Providing a whitelist of methods which are the callers of the target methods we want to hook.
- * Because the target methods are inlined into the callers, we deoptimize the callers to
- * run in intercept mode to make target methods hookable.
- *
- * Only for methods which are included in pre-compiled framework codes.
- * TODO recompile system apps and priv-apps since their original dex files are available
- */
-public class InlinedMethodCallers {
-
- public static final String KEY_BOOT_IMAGE = "boot_image";
- public static final String KEY_SYSTEM_SERVER = "system_server";
-
- /**
- * Key should be {@link #KEY_BOOT_IMAGE}, {@link #KEY_SYSTEM_SERVER}, or a package name
- * of system apps or priv-apps i.e. com.android.systemui
- */
- private static final HashMap CALLERS = new HashMap<>();
-
- /**
- * format for each row: {className, methodName, methodSig}
- */
- private static final String[][] BOOT_IMAGE = {
- // callers of Application#attach(Context)
- {"android.app.Instrumentation", "newApplication", "(Ljava/lang/ClassLoader;Ljava/lang/String;Landroid/content/Context;)Landroid/app/Application;"}
- };
-
- private static final String[][] SYSTEM_SERVER = {};
-
- private static final String[][] SYSTEM_UI = {};
-
- static {
- CALLERS.put(KEY_BOOT_IMAGE, BOOT_IMAGE);
- CALLERS.put(KEY_SYSTEM_SERVER, SYSTEM_SERVER);
- CALLERS.put("com.android.systemui", SYSTEM_UI);
- }
-
- public static HashMap getAll() {
- return CALLERS;
- }
-
- public static String[][] get(String where) {
- return CALLERS.get(where);
- }
-}
diff --git a/edxp-sandhook/src/main/java/com/elderdrivers/riru/edxp/sandhook/util/PrebuiltMethodsDeopter.java b/edxp-sandhook/src/main/java/com/elderdrivers/riru/edxp/sandhook/util/PrebuiltMethodsDeopter.java
deleted file mode 100644
index 01f871b2..00000000
--- a/edxp-sandhook/src/main/java/com/elderdrivers/riru/edxp/sandhook/util/PrebuiltMethodsDeopter.java
+++ /dev/null
@@ -1,41 +0,0 @@
-package com.elderdrivers.riru.edxp.sandhook.util;
-
-import com.elderdrivers.riru.edxp.util.Utils;
-import com.elderdrivers.riru.edxp.Main;
-
-import java.util.Arrays;
-
-import de.robv.android.xposed.XposedHelpers;
-
-import static com.elderdrivers.riru.edxp.sandhook.util.InlinedMethodCallers.KEY_BOOT_IMAGE;
-import static com.elderdrivers.riru.edxp.sandhook.util.InlinedMethodCallers.KEY_SYSTEM_SERVER;
-
-public class PrebuiltMethodsDeopter {
-
- public static void deoptMethods(String where, ClassLoader cl) {
- String[][] callers = InlinedMethodCallers.get(where);
- if (callers == null) {
- return;
- }
- for (String[] caller : callers) {
- try {
- Object method = Main.findMethodNative(
- XposedHelpers.findClass(caller[0], cl), caller[1], caller[2]);
- if (method != null) {
- Main.deoptMethodNative(method);
- }
- } catch (Throwable throwable) {
- Utils.logE("error when deopting method: " + Arrays.toString(caller), throwable);
- }
- }
- }
-
- public static void deoptBootMethods() {
- // todo check if has been done before
- deoptMethods(KEY_BOOT_IMAGE, null);
- }
-
- public static void deoptSystemServerMethods(ClassLoader sysCL) {
- deoptMethods(KEY_SYSTEM_SERVER, sysCL);
- }
-}
diff --git a/edxp-whale/build.gradle b/edxp-whale/build.gradle
index 8ca2d21f..5b4a57f5 100644
--- a/edxp-whale/build.gradle
+++ b/edxp-whale/build.gradle
@@ -55,6 +55,7 @@ afterEvaluate {
def myTemplatePath = "${projectDir}/template_override/"
task("makeAndCopy${variantNameCapped}", type: Jar, dependsOn: "assemble${variantNameCapped}") {
+ dependsOn tasks.getByPath(":edxp-common:copyCommonroperties")
from "${buildDir}/intermediates/dex/${variantNameLowered}/mergeDex${variantNameCapped}/out/"
destinationDir file(myTemplatePath + "system/framework/")
baseName "edxp"
diff --git a/edxp-whale/src/main/java/com/elderdrivers/riru/edxp/whale/config/WhaleHookProvider.java b/edxp-whale/src/main/java/com/elderdrivers/riru/edxp/whale/config/WhaleHookProvider.java
index cbd15cb0..57b6c6ce 100644
--- a/edxp-whale/src/main/java/com/elderdrivers/riru/edxp/whale/config/WhaleHookProvider.java
+++ b/edxp-whale/src/main/java/com/elderdrivers/riru/edxp/whale/config/WhaleHookProvider.java
@@ -1,14 +1,13 @@
package com.elderdrivers.riru.edxp.whale.config;
-import com.elderdrivers.riru.edxp.hook.HookProvider;
-import com.elderdrivers.riru.edxp.whale.util.PrebuiltMethodsDeopter;
+import com.elderdrivers.riru.edxp.config.BaseHookProvider;
import com.lody.whale.WhaleRuntime;
import java.lang.reflect.Member;
import de.robv.android.xposed.XposedBridge;
-public class WhaleHookProvider implements HookProvider {
+public class WhaleHookProvider extends BaseHookProvider {
@Override
public void hookMethod(Member method, XposedBridge.AdditionalHookInfo additionalInfo) {
@@ -25,11 +24,6 @@ public class WhaleHookProvider implements HookProvider {
return hookMethod;
}
- @Override
- public void deoptMethods(String packageName, ClassLoader classLoader) {
- PrebuiltMethodsDeopter.deoptMethods(packageName, classLoader);
- }
-
@Override
public long getMethodId(Member member) {
return WhaleRuntime.getMethodSlot(member);
diff --git a/edxp-whale/src/main/java/com/elderdrivers/riru/edxp/whale/entry/hooker/SystemMainHooker.java b/edxp-whale/src/main/java/com/elderdrivers/riru/edxp/whale/entry/hooker/SystemMainHooker.java
index a9417db8..b2250399 100644
--- a/edxp-whale/src/main/java/com/elderdrivers/riru/edxp/whale/entry/hooker/SystemMainHooker.java
+++ b/edxp-whale/src/main/java/com/elderdrivers/riru/edxp/whale/entry/hooker/SystemMainHooker.java
@@ -3,7 +3,7 @@ package com.elderdrivers.riru.edxp.whale.entry.hooker;
import android.app.ActivityThread;
import com.elderdrivers.riru.common.KeepMembers;
-import com.elderdrivers.riru.edxp.whale.util.PrebuiltMethodsDeopter;
+import com.elderdrivers.riru.edxp.deopt.PrebuiltMethodsDeopter;
import com.elderdrivers.riru.edxp.whale.entry.Router;
import de.robv.android.xposed.XposedBridge;
diff --git a/edxp-whale/src/main/java/com/elderdrivers/riru/edxp/whale/proxy/BlackWhiteListProxy.java b/edxp-whale/src/main/java/com/elderdrivers/riru/edxp/whale/proxy/BlackWhiteListProxy.java
index bee43070..1e290d81 100644
--- a/edxp-whale/src/main/java/com/elderdrivers/riru/edxp/whale/proxy/BlackWhiteListProxy.java
+++ b/edxp-whale/src/main/java/com/elderdrivers/riru/edxp/whale/proxy/BlackWhiteListProxy.java
@@ -4,10 +4,10 @@ import android.text.TextUtils;
import com.elderdrivers.riru.edxp.Main;
import com.elderdrivers.riru.edxp.config.ConfigManager;
-import com.elderdrivers.riru.edxp.whale.entry.Router;
-import com.elderdrivers.riru.edxp.whale.util.PrebuiltMethodsDeopter;
+import com.elderdrivers.riru.edxp.deopt.PrebuiltMethodsDeopter;
import com.elderdrivers.riru.edxp.util.ProcessUtils;
import com.elderdrivers.riru.edxp.util.Utils;
+import com.elderdrivers.riru.edxp.whale.entry.Router;
import de.robv.android.xposed.XposedBridge;
diff --git a/edxp-whale/src/main/java/com/elderdrivers/riru/edxp/whale/proxy/NormalProxy.java b/edxp-whale/src/main/java/com/elderdrivers/riru/edxp/whale/proxy/NormalProxy.java
index 1dddf90e..73756752 100644
--- a/edxp-whale/src/main/java/com/elderdrivers/riru/edxp/whale/proxy/NormalProxy.java
+++ b/edxp-whale/src/main/java/com/elderdrivers/riru/edxp/whale/proxy/NormalProxy.java
@@ -2,7 +2,7 @@ package com.elderdrivers.riru.edxp.whale.proxy;
import com.elderdrivers.riru.edxp.Main;
import com.elderdrivers.riru.edxp.config.ConfigManager;
-import com.elderdrivers.riru.edxp.whale.util.PrebuiltMethodsDeopter;
+import com.elderdrivers.riru.edxp.deopt.PrebuiltMethodsDeopter;
import com.elderdrivers.riru.edxp.whale.entry.Router;
import static com.elderdrivers.riru.edxp.util.FileUtils.getDataPathPrefix;
diff --git a/edxp-whale/src/main/java/com/elderdrivers/riru/edxp/whale/util/InlinedMethodCallers.java b/edxp-whale/src/main/java/com/elderdrivers/riru/edxp/whale/util/InlinedMethodCallers.java
deleted file mode 100644
index 5e3597cc..00000000
--- a/edxp-whale/src/main/java/com/elderdrivers/riru/edxp/whale/util/InlinedMethodCallers.java
+++ /dev/null
@@ -1,49 +0,0 @@
-package com.elderdrivers.riru.edxp.whale.util;
-
-import java.util.HashMap;
-
-/**
- * Providing a whitelist of methods which are the callers of the target methods we want to hook.
- * Because the target methods are inlined into the callers, we deoptimize the callers to
- * run in intercept mode to make target methods hookable.
- *
- * Only for methods which are included in pre-compiled framework codes.
- * TODO recompile system apps and priv-apps since their original dex files are available
- */
-public class InlinedMethodCallers {
-
- public static final String KEY_BOOT_IMAGE = "boot_image";
- public static final String KEY_SYSTEM_SERVER = "system_server";
-
- /**
- * Key should be {@link #KEY_BOOT_IMAGE}, {@link #KEY_SYSTEM_SERVER}, or a package name
- * of system apps or priv-apps i.e. com.android.systemui
- */
- private static final HashMap CALLERS = new HashMap<>();
-
- /**
- * format for each row: {className, methodName, methodSig}
- */
- private static final String[][] BOOT_IMAGE = {
- // callers of Application#attach(Context)
- {"android.app.Instrumentation", "newApplication", "(Ljava/lang/ClassLoader;Ljava/lang/String;Landroid/content/Context;)Landroid/app/Application;"}
- };
-
- private static final String[][] SYSTEM_SERVER = {};
-
- private static final String[][] SYSTEM_UI = {};
-
- static {
- CALLERS.put(KEY_BOOT_IMAGE, BOOT_IMAGE);
- CALLERS.put(KEY_SYSTEM_SERVER, SYSTEM_SERVER);
- CALLERS.put("com.android.systemui", SYSTEM_UI);
- }
-
- public static HashMap getAll() {
- return CALLERS;
- }
-
- public static String[][] get(String where) {
- return CALLERS.get(where);
- }
-}
diff --git a/edxp-whale/src/main/java/com/elderdrivers/riru/edxp/whale/util/PrebuiltMethodsDeopter.java b/edxp-whale/src/main/java/com/elderdrivers/riru/edxp/whale/util/PrebuiltMethodsDeopter.java
deleted file mode 100644
index fba8dd7f..00000000
--- a/edxp-whale/src/main/java/com/elderdrivers/riru/edxp/whale/util/PrebuiltMethodsDeopter.java
+++ /dev/null
@@ -1,41 +0,0 @@
-package com.elderdrivers.riru.edxp.whale.util;
-
-import com.elderdrivers.riru.edxp.util.Utils;
-import com.elderdrivers.riru.edxp.Main;
-
-import java.util.Arrays;
-
-import de.robv.android.xposed.XposedHelpers;
-
-import static com.elderdrivers.riru.edxp.whale.util.InlinedMethodCallers.KEY_BOOT_IMAGE;
-import static com.elderdrivers.riru.edxp.whale.util.InlinedMethodCallers.KEY_SYSTEM_SERVER;
-
-public class PrebuiltMethodsDeopter {
-
- public static void deoptMethods(String where, ClassLoader cl) {
- String[][] callers = InlinedMethodCallers.get(where);
- if (callers == null) {
- return;
- }
- for (String[] caller : callers) {
- try {
- Object method = Main.findMethodNative(
- XposedHelpers.findClass(caller[0], cl), caller[1], caller[2]);
- if (method != null) {
- Main.deoptMethodNative(method);
- }
- } catch (Throwable throwable) {
- Utils.logE("error when deopting method: " + Arrays.toString(caller), throwable);
- }
- }
- }
-
- public static void deoptBootMethods() {
- // todo check if has been done before
- deoptMethods(KEY_BOOT_IMAGE, null);
- }
-
- public static void deoptSystemServerMethods(ClassLoader sysCL) {
- deoptMethods(KEY_SYSTEM_SERVER, sysCL);
- }
-}
diff --git a/edxp-whale/template_override/system/lib/libwhale.edxp.so b/edxp-whale/template_override/system/lib/libwhale.edxp.so
deleted file mode 100755
index 187d0495..00000000
Binary files a/edxp-whale/template_override/system/lib/libwhale.edxp.so and /dev/null differ
diff --git a/edxp-whale/template_override/system/lib64/libwhale.edxp.so b/edxp-whale/template_override/system/lib64/libwhale.edxp.so
deleted file mode 100755
index 3c2cd0d8..00000000
Binary files a/edxp-whale/template_override/system/lib64/libwhale.edxp.so and /dev/null differ
diff --git a/edxp-whale/template_override/system_x86/lib/libwhale.edxp.so b/edxp-whale/template_override/system_x86/lib/libwhale.edxp.so
deleted file mode 100755
index d1653bcc..00000000
Binary files a/edxp-whale/template_override/system_x86/lib/libwhale.edxp.so and /dev/null differ
diff --git a/edxp-whale/template_override/system_x86/lib64/libwhale.edxp.so b/edxp-whale/template_override/system_x86/lib64/libwhale.edxp.so
deleted file mode 100755
index f5bcdc5a..00000000
Binary files a/edxp-whale/template_override/system_x86/lib64/libwhale.edxp.so and /dev/null differ
diff --git a/edxp-yahfa/build.gradle b/edxp-yahfa/build.gradle
index b3dff3ed..1f035df9 100644
--- a/edxp-yahfa/build.gradle
+++ b/edxp-yahfa/build.gradle
@@ -56,6 +56,7 @@ afterEvaluate {
def myTemplatePath = "${projectDir}/template_override/"
task("makeAndCopy${variantNameCapped}", type: Jar, dependsOn: "assemble${variantNameCapped}") {
+ dependsOn tasks.getByPath(":edxp-common:copyCommonroperties")
from "${buildDir}/intermediates/dex/${variantNameLowered}/mergeDex${variantNameCapped}/out/"
destinationDir file(myTemplatePath + "system/framework/")
baseName "edxp"
diff --git a/edxp-yahfa/src/main/java/com/elderdrivers/riru/edxp/yahfa/config/YahfaHookProvider.java b/edxp-yahfa/src/main/java/com/elderdrivers/riru/edxp/yahfa/config/YahfaHookProvider.java
index cf51c5f5..39e8a516 100644
--- a/edxp-yahfa/src/main/java/com/elderdrivers/riru/edxp/yahfa/config/YahfaHookProvider.java
+++ b/edxp-yahfa/src/main/java/com/elderdrivers/riru/edxp/yahfa/config/YahfaHookProvider.java
@@ -1,15 +1,15 @@
package com.elderdrivers.riru.edxp.yahfa.config;
-import com.elderdrivers.riru.edxp.hook.HookProvider;
+import com.elderdrivers.riru.edxp.config.BaseHookProvider;
import com.elderdrivers.riru.edxp.yahfa.dexmaker.DexMakerUtils;
import com.elderdrivers.riru.edxp.yahfa.dexmaker.DynamicBridge;
-import com.elderdrivers.riru.edxp.yahfa.util.PrebuiltMethodsDeopter;
import java.lang.reflect.Member;
import de.robv.android.xposed.XposedBridge;
-public class YahfaHookProvider implements HookProvider {
+public class YahfaHookProvider extends BaseHookProvider {
+
@Override
public void hookMethod(Member method, XposedBridge.AdditionalHookInfo additionalInfo) {
DynamicBridge.hookMethod(method, additionalInfo);
@@ -24,14 +24,4 @@ public class YahfaHookProvider implements HookProvider {
public Member findMethodNative(Member hookMethod) {
return DexMakerUtils.findMethodNative(hookMethod);
}
-
- @Override
- public void deoptMethods(String packageName, ClassLoader classLoader) {
- PrebuiltMethodsDeopter.deoptMethods(packageName, classLoader);
- }
-
- @Override
- public long getMethodId(Member member) {
- return 0;
- }
}
diff --git a/edxp-yahfa/src/main/java/com/elderdrivers/riru/edxp/yahfa/entry/hooker/SystemMainHooker.java b/edxp-yahfa/src/main/java/com/elderdrivers/riru/edxp/yahfa/entry/hooker/SystemMainHooker.java
index 2478f2e6..38d43612 100644
--- a/edxp-yahfa/src/main/java/com/elderdrivers/riru/edxp/yahfa/entry/hooker/SystemMainHooker.java
+++ b/edxp-yahfa/src/main/java/com/elderdrivers/riru/edxp/yahfa/entry/hooker/SystemMainHooker.java
@@ -3,7 +3,7 @@ package com.elderdrivers.riru.edxp.yahfa.entry.hooker;
import android.app.ActivityThread;
import com.elderdrivers.riru.common.KeepMembers;
-import com.elderdrivers.riru.edxp.yahfa.util.PrebuiltMethodsDeopter;
+import com.elderdrivers.riru.edxp.deopt.PrebuiltMethodsDeopter;
import com.elderdrivers.riru.edxp.yahfa.entry.Router;
import de.robv.android.xposed.XposedBridge;
diff --git a/edxp-yahfa/src/main/java/com/elderdrivers/riru/edxp/yahfa/proxy/BlackWhiteListProxy.java b/edxp-yahfa/src/main/java/com/elderdrivers/riru/edxp/yahfa/proxy/BlackWhiteListProxy.java
index ba9842d9..5beb56ab 100644
--- a/edxp-yahfa/src/main/java/com/elderdrivers/riru/edxp/yahfa/proxy/BlackWhiteListProxy.java
+++ b/edxp-yahfa/src/main/java/com/elderdrivers/riru/edxp/yahfa/proxy/BlackWhiteListProxy.java
@@ -4,8 +4,8 @@ import android.text.TextUtils;
import com.elderdrivers.riru.edxp.Main;
import com.elderdrivers.riru.edxp.config.ConfigManager;
+import com.elderdrivers.riru.edxp.deopt.PrebuiltMethodsDeopter;
import com.elderdrivers.riru.edxp.yahfa.entry.Router;
-import com.elderdrivers.riru.edxp.yahfa.util.PrebuiltMethodsDeopter;
import com.elderdrivers.riru.edxp.util.ProcessUtils;
import com.elderdrivers.riru.edxp.util.Utils;
diff --git a/edxp-yahfa/src/main/java/com/elderdrivers/riru/edxp/yahfa/proxy/NormalProxy.java b/edxp-yahfa/src/main/java/com/elderdrivers/riru/edxp/yahfa/proxy/NormalProxy.java
index 9c1d3dba..4fad6cdb 100644
--- a/edxp-yahfa/src/main/java/com/elderdrivers/riru/edxp/yahfa/proxy/NormalProxy.java
+++ b/edxp-yahfa/src/main/java/com/elderdrivers/riru/edxp/yahfa/proxy/NormalProxy.java
@@ -2,7 +2,7 @@ package com.elderdrivers.riru.edxp.yahfa.proxy;
import com.elderdrivers.riru.edxp.Main;
import com.elderdrivers.riru.edxp.config.ConfigManager;
-import com.elderdrivers.riru.edxp.yahfa.util.PrebuiltMethodsDeopter;
+import com.elderdrivers.riru.edxp.deopt.PrebuiltMethodsDeopter;
import com.elderdrivers.riru.edxp.yahfa.entry.Router;
import static com.elderdrivers.riru.edxp.util.FileUtils.getDataPathPrefix;
diff --git a/edxp-yahfa/template_override/system/lib/libwhale.edxp.so b/edxp-yahfa/template_override/system/lib/libwhale.edxp.so
deleted file mode 100755
index 187d0495..00000000
Binary files a/edxp-yahfa/template_override/system/lib/libwhale.edxp.so and /dev/null differ
diff --git a/edxp-yahfa/template_override/system/lib64/libwhale.edxp.so b/edxp-yahfa/template_override/system/lib64/libwhale.edxp.so
deleted file mode 100755
index 3c2cd0d8..00000000
Binary files a/edxp-yahfa/template_override/system/lib64/libwhale.edxp.so and /dev/null differ
diff --git a/edxp-yahfa/template_override/system_x86/lib/libwhale.edxp.so b/edxp-yahfa/template_override/system_x86/lib/libwhale.edxp.so
deleted file mode 100755
index d1653bcc..00000000
Binary files a/edxp-yahfa/template_override/system_x86/lib/libwhale.edxp.so and /dev/null differ
diff --git a/edxp-yahfa/template_override/system_x86/lib64/libwhale.edxp.so b/edxp-yahfa/template_override/system_x86/lib64/libwhale.edxp.so
deleted file mode 100755
index f5bcdc5a..00000000
Binary files a/edxp-yahfa/template_override/system_x86/lib64/libwhale.edxp.so and /dev/null differ
diff --git a/xposed-bridge/src/main/java/com/elderdrivers/riru/edxp/config/EdXpConfigGlobal.java b/xposed-bridge/src/main/java/com/elderdrivers/riru/edxp/config/EdXpConfigGlobal.java
index cc88f03f..dd06ef24 100644
--- a/xposed-bridge/src/main/java/com/elderdrivers/riru/edxp/config/EdXpConfigGlobal.java
+++ b/xposed-bridge/src/main/java/com/elderdrivers/riru/edxp/config/EdXpConfigGlobal.java
@@ -73,5 +73,15 @@ public class EdXpConfigGlobal {
public long getMethodId(Member member) {
return 0;
}
+
+ @Override
+ public Object findMethodNative(Class clazz, String methodName, String methodSig) {
+ return null;
+ }
+
+ @Override
+ public void deoptMethodNative(Object method) {
+
+ }
};
}
diff --git a/xposed-bridge/src/main/java/com/elderdrivers/riru/edxp/hook/HookProvider.java b/xposed-bridge/src/main/java/com/elderdrivers/riru/edxp/hook/HookProvider.java
index 9e630e78..50901c0f 100644
--- a/xposed-bridge/src/main/java/com/elderdrivers/riru/edxp/hook/HookProvider.java
+++ b/xposed-bridge/src/main/java/com/elderdrivers/riru/edxp/hook/HookProvider.java
@@ -15,4 +15,8 @@ public interface HookProvider {
void deoptMethods(String packageName, ClassLoader classLoader);
long getMethodId(Member member);
+
+ Object findMethodNative(Class clazz, String methodName, String methodSig);
+
+ void deoptMethodNative(Object method);
}