Refine XposedResources

This commit is contained in:
LoveSy 2022-12-27 21:42:04 +08:00 committed by LoveSy
parent a922ae9e6c
commit 39178b1dad
5 changed files with 20 additions and 15 deletions

View File

@ -66,7 +66,7 @@ import de.robv.android.xposed.XposedInit;
import de.robv.android.xposed.callbacks.XC_LayoutInflated; import de.robv.android.xposed.callbacks.XC_LayoutInflated;
import de.robv.android.xposed.callbacks.XC_LayoutInflated.LayoutInflatedParam; import de.robv.android.xposed.callbacks.XC_LayoutInflated.LayoutInflatedParam;
import de.robv.android.xposed.callbacks.XCallback; import de.robv.android.xposed.callbacks.XCallback;
import xposed.dummy.XResourcesSuperClass; import io.github.libxposed.XposedResources;
import xposed.dummy.XTypedArraySuperClass; import xposed.dummy.XTypedArraySuperClass;
/** /**
@ -77,7 +77,7 @@ import xposed.dummy.XTypedArraySuperClass;
* be set using the methods made available via the API methods in this class. * be set using the methods made available via the API methods in this class.
*/ */
@SuppressWarnings("JniMissingFunction") @SuppressWarnings("JniMissingFunction")
public class XResources extends XResourcesSuperClass { public class XResources extends XposedResources {
private static final SparseArray<HashMap<String, Object>> sReplacements = new SparseArray<>(); private static final SparseArray<HashMap<String, Object>> sReplacements = new SparseArray<>();
private static final SparseArray<HashMap<String, ResourceNames>> sResourceNames = new SparseArray<>(); private static final SparseArray<HashMap<String, ResourceNames>> sResourceNames = new SparseArray<>();

View File

@ -58,9 +58,7 @@ import java.util.concurrent.atomic.AtomicBoolean;
import de.robv.android.xposed.callbacks.XC_InitPackageResources; import de.robv.android.xposed.callbacks.XC_InitPackageResources;
import de.robv.android.xposed.callbacks.XCallback; import de.robv.android.xposed.callbacks.XCallback;
import hidden.HiddenApiBridge; import hidden.HiddenApiBridge;
import io.github.libxposed.XposedInterface;
import io.github.libxposed.XposedModuleInterface; import io.github.libxposed.XposedModuleInterface;
import io.github.libxposed.XposedResource;
public final class XposedInit { public final class XposedInit {
private static final String TAG = XposedBridge.TAG; private static final String TAG = XposedBridge.TAG;
@ -200,7 +198,7 @@ public final class XposedInit {
} }
// Replace the returned resources with our subclass. // Replace the returned resources with our subclass.
var newRes = new XposedResource( var newRes = new XResources(
(ClassLoader) XposedHelpers.getObjectField(param.getResult(), "mClassLoader")); (ClassLoader) XposedHelpers.getObjectField(param.getResult(), "mClassLoader"));
HiddenApiBridge.Resources_setImpl(newRes, (ResourcesImpl) XposedHelpers.getObjectField(param.getResult(), "mResourcesImpl")); HiddenApiBridge.Resources_setImpl(newRes, (ResourcesImpl) XposedHelpers.getObjectField(param.getResult(), "mResourcesImpl"));
newRes.initObject(resDir); newRes.initObject(resDir);

View File

@ -18,7 +18,7 @@ public interface XposedModuleInterface {
class ResourceLoadedParam { class ResourceLoadedParam {
public String packageName; public String packageName;
public XposedResource res; public XposedResources res;
} }
default void onPackageLoaded(@NonNull PackageLoadedParam param, @Nullable Bundle extra) { default void onPackageLoaded(@NonNull PackageLoadedParam param, @Nullable Bundle extra) {

View File

@ -1,9 +0,0 @@
package io.github.libxposed;
import android.content.res.XResources;
public class XposedResource extends XResources {
public XposedResource(ClassLoader classLoader) {
super(classLoader);
}
}

View File

@ -0,0 +1,16 @@
package io.github.libxposed;
import xposed.dummy.XResourcesSuperClass;
public abstract class XposedResources extends XResourcesSuperClass {
/** Dummy, will never be called (objects are transferred to this class only). */
protected XposedResources() {
super();
throw new UnsupportedOperationException();
}
protected XposedResources(ClassLoader classLoader) {
super(classLoader);
throw new UnsupportedOperationException();
}
}