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 index 599fd613..019c13c9 100644 --- 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 @@ -36,6 +36,11 @@ public abstract class BaseHookProvider implements HookProvider { } + @Override + public boolean initXResourcesNative() { + return false; + } + @Override public void rewriteXmlReferencesNative(long parserPtr, XResources origRes, Resources repRes) { 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 f000ae59..90b693b9 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 @@ -29,6 +29,11 @@ public class YahfaHookProvider extends BaseHookProvider { return DexMakerUtils.findMethodNative(hookMethod); } + @Override + public boolean initXResourcesNative() { + return Main.initXResourcesNative(); + } + @Override public void rewriteXmlReferencesNative(long parserPtr, XResources origRes, Resources repRes) { Main.rewriteXmlReferencesNative(parserPtr, origRes, repRes); 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 322f414a..6ae7370a 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 @@ -92,6 +92,11 @@ public class EdXpConfigGlobal { } + @Override + public boolean initXResourcesNative() { + return false; + } + @Override public void rewriteXmlReferencesNative(long parserPtr, XResources origRes, Resources repRes) { 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 d1759415..a8fccd78 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 @@ -25,5 +25,7 @@ public interface HookProvider { void deoptMethodNative(Object method); + boolean initXResourcesNative(); + void rewriteXmlReferencesNative(long parserPtr, XResources origRes, Resources repRes); } diff --git a/xposed-bridge/src/main/java/de/robv/android/xposed/XposedInit.java b/xposed-bridge/src/main/java/de/robv/android/xposed/XposedInit.java index ca87553b..4a2d5b87 100644 --- a/xposed-bridge/src/main/java/de/robv/android/xposed/XposedInit.java +++ b/xposed-bridge/src/main/java/de/robv/android/xposed/XposedInit.java @@ -105,6 +105,12 @@ public final class XposedInit { return; } + if (!EdXpConfigGlobal.getHookProvider().initXResourcesNative()) { + Log.e(TAG, "Cannot hook resources"); + disableResources = true; + return; + } + /* * getTopLevelResources(a) * -> getTopLevelResources(b)