From b52c40615e28c888a745bf0257527a3675004596 Mon Sep 17 00:00:00 2001 From: LoveSy Date: Tue, 10 Jan 2023 19:31:21 +0800 Subject: [PATCH] Remove xposedResources --- .../java/android/content/res/XResources.java | 5 +- .../de/robv/android/xposed/XposedInit.java | 2 - .../callbacks/XC_InitPackageResources.java | 21 +---- .../org/lsposed/lspd/impl/LSPosedContext.java | 14 --- libxposed/api/build.gradle.kts | 7 +- libxposed/api/src/main/AndroidManifest.xml | 2 + .../io/github/libxposed/XposedModule.java | 5 -- .../libxposed/XposedModuleInterface.java | 13 --- .../io/github/libxposed/XposedResources.java | 16 ---- .../libxposed/XposedResourcesInterface.java | 7 -- libxposed/build.gradle | 7 -- libxposed/build.gradle.kts | 3 + libxposed/settings.gradle.kts | 1 - libxposed/stubs/build.gradle.kts | 3 - .../main/java/android/content/Context.java | 4 - .../java/android/content/ContextWrapper.java | 16 ---- .../android/content/pm/ApplicationInfo.java | 4 - .../android/content/res/AssetManager.java | 4 - .../android/content/res/Configuration.java | 4 - .../java/android/content/res/Resources.java | 13 --- .../java/android/content/res/TypedArray.java | 7 -- .../src/main/java/android/os/Bundle.java | 4 - .../java/android/util/DisplayMetrics.java | 4 - magisk-loader/build.gradle.kts | 89 ------------------- settings.gradle.kts | 3 - 25 files changed, 13 insertions(+), 245 deletions(-) create mode 100644 libxposed/api/src/main/AndroidManifest.xml delete mode 100644 libxposed/api/src/main/java/io/github/libxposed/XposedResources.java delete mode 100644 libxposed/api/src/main/java/io/github/libxposed/XposedResourcesInterface.java delete mode 100644 libxposed/build.gradle create mode 100644 libxposed/build.gradle.kts delete mode 100644 libxposed/stubs/build.gradle.kts delete mode 100644 libxposed/stubs/src/main/java/android/content/Context.java delete mode 100644 libxposed/stubs/src/main/java/android/content/ContextWrapper.java delete mode 100644 libxposed/stubs/src/main/java/android/content/pm/ApplicationInfo.java delete mode 100644 libxposed/stubs/src/main/java/android/content/res/AssetManager.java delete mode 100644 libxposed/stubs/src/main/java/android/content/res/Configuration.java delete mode 100644 libxposed/stubs/src/main/java/android/content/res/Resources.java delete mode 100644 libxposed/stubs/src/main/java/android/content/res/TypedArray.java delete mode 100644 libxposed/stubs/src/main/java/android/os/Bundle.java delete mode 100644 libxposed/stubs/src/main/java/android/util/DisplayMetrics.java diff --git a/core/src/main/java/android/content/res/XResources.java b/core/src/main/java/android/content/res/XResources.java index b0ad5b08..2ccdbd37 100644 --- a/core/src/main/java/android/content/res/XResources.java +++ b/core/src/main/java/android/content/res/XResources.java @@ -67,7 +67,7 @@ import de.robv.android.xposed.XposedInit; import de.robv.android.xposed.callbacks.XC_LayoutInflated; import de.robv.android.xposed.callbacks.XC_LayoutInflated.LayoutInflatedParam; import de.robv.android.xposed.callbacks.XCallback; -import io.github.libxposed.XposedResources; +import xposed.dummy.XResourcesSuperClass; import xposed.dummy.XTypedArraySuperClass; /** @@ -78,7 +78,7 @@ import xposed.dummy.XTypedArraySuperClass; * be set using the methods made available via the API methods in this class. */ @SuppressWarnings("JniMissingFunction") -public class XResources extends XposedResources { +public class XResources extends XResourcesSuperClass { private static final SparseArray> sReplacements = new SparseArray<>(); private static final SparseArray> sResourceNames = new SparseArray<>(); @@ -160,7 +160,6 @@ public class XResources extends XposedResources { * Returns the name of the package that these resources belong to, or "android" for system resources. */ @NonNull - @Override public String getPackageName() { return mPackageName; } diff --git a/core/src/main/java/de/robv/android/xposed/XposedInit.java b/core/src/main/java/de/robv/android/xposed/XposedInit.java index e1a7eaaf..595449d6 100644 --- a/core/src/main/java/de/robv/android/xposed/XposedInit.java +++ b/core/src/main/java/de/robv/android/xposed/XposedInit.java @@ -207,8 +207,6 @@ public final class XposedInit { resparam.packageName = packageName; resparam.res = newRes; XCallback.callAll(resparam); - - LSPosedContext.callOnResourceLoaded(resparam); } param.setResult(newRes); diff --git a/core/src/main/java/de/robv/android/xposed/callbacks/XC_InitPackageResources.java b/core/src/main/java/de/robv/android/xposed/callbacks/XC_InitPackageResources.java index 24a75b9a..9da796f2 100644 --- a/core/src/main/java/de/robv/android/xposed/callbacks/XC_InitPackageResources.java +++ b/core/src/main/java/de/robv/android/xposed/callbacks/XC_InitPackageResources.java @@ -30,7 +30,6 @@ import java.util.concurrent.CopyOnWriteArraySet; import de.robv.android.xposed.IXposedHookInitPackageResources; import io.github.libxposed.XposedModuleInterface; -import io.github.libxposed.XposedResources; /** * This class is only used for internal purposes, except for the {@link InitPackageResourcesParam} @@ -60,7 +59,7 @@ public abstract class XC_InitPackageResources extends XCallback implements IXpos /** * Wraps information about the resources being initialized. */ - public static final class InitPackageResourcesParam extends XCallback.Param implements XposedModuleInterface.ResourcesLoadedParam { + public static final class InitPackageResourcesParam extends XCallback.Param { /** * @hide */ @@ -78,24 +77,6 @@ public abstract class XC_InitPackageResources extends XCallback implements IXpos * {@link XResources#setReplacement(String, String, String, Object)}. */ public XResources res; - - @NonNull - @Override - public String getPackageName() { - return packageName; - } - - @NonNull - @Override - public XposedResources getResources() { - return res; - } - - @Nullable - @Override - public Bundle getExtras() { - return null; - } } /** diff --git a/core/src/main/java/org/lsposed/lspd/impl/LSPosedContext.java b/core/src/main/java/org/lsposed/lspd/impl/LSPosedContext.java index 36826cbd..aaa476c0 100644 --- a/core/src/main/java/org/lsposed/lspd/impl/LSPosedContext.java +++ b/core/src/main/java/org/lsposed/lspd/impl/LSPosedContext.java @@ -63,7 +63,6 @@ import java.util.concurrent.ConcurrentHashMap; import de.robv.android.xposed.XposedBridge; import de.robv.android.xposed.XposedHelpers; -import de.robv.android.xposed.XposedInit; import io.github.libxposed.XposedContext; import io.github.libxposed.XposedModule; import io.github.libxposed.XposedModuleInterface; @@ -103,16 +102,6 @@ public class LSPosedContext extends XposedContext { } } - public static void callOnResourceLoaded(XposedModuleInterface.ResourcesLoadedParam param) { - for (XposedModule module : modules) { - try { - module.onResourceLoaded(param); - } catch (Throwable t) { - Log.e(TAG, "Error when calling onResourceLoaded of " + ((LSPosedContext) module.getBaseContext()).mPackageName, t); - } - } - } - public static boolean loadModule(ActivityThread at, Module module) { try { Log.d(TAG, "Loading module " + module.packageName); @@ -167,9 +156,6 @@ public class LSPosedContext extends XposedContext { continue; } try { - if (moduleClass.getMethod("onResourceLoaded", XposedModuleInterface.ResourcesLoadedParam.class).getDeclaringClass() != XposedModule.class) { - XposedInit.hookResources(); - } var moduleEntry = moduleClass.getConstructor(XposedContext.class, XposedModuleInterface.ModuleLoadedParam.class); var moduleContext = (XposedModule) moduleEntry.newInstance(ctx, new XposedModuleInterface.ModuleLoadedParam() { @Override diff --git a/libxposed/api/build.gradle.kts b/libxposed/api/build.gradle.kts index 2971c2d1..0802224d 100644 --- a/libxposed/api/build.gradle.kts +++ b/libxposed/api/build.gradle.kts @@ -1,8 +1,11 @@ plugins { - `java-library` + id("com.android.library") +} + +android { + namespace = "io.github.libxposed" } dependencies { compileOnly("androidx.annotation:annotation:1.5.0") - compileOnly(project(":stubs")) } diff --git a/libxposed/api/src/main/AndroidManifest.xml b/libxposed/api/src/main/AndroidManifest.xml new file mode 100644 index 00000000..5c3d3655 --- /dev/null +++ b/libxposed/api/src/main/AndroidManifest.xml @@ -0,0 +1,2 @@ + + diff --git a/libxposed/api/src/main/java/io/github/libxposed/XposedModule.java b/libxposed/api/src/main/java/io/github/libxposed/XposedModule.java index 14116842..e0ba296f 100644 --- a/libxposed/api/src/main/java/io/github/libxposed/XposedModule.java +++ b/libxposed/api/src/main/java/io/github/libxposed/XposedModule.java @@ -11,9 +11,4 @@ public abstract class XposedModule extends XposedContextWrapper implements Xpose public void onPackageLoaded(@NonNull PackageLoadedParam param) { } - - @Override - public void onResourceLoaded(@NonNull ResourcesLoadedParam param) { - - } } diff --git a/libxposed/api/src/main/java/io/github/libxposed/XposedModuleInterface.java b/libxposed/api/src/main/java/io/github/libxposed/XposedModuleInterface.java index ef1cadcd..373f0b10 100644 --- a/libxposed/api/src/main/java/io/github/libxposed/XposedModuleInterface.java +++ b/libxposed/api/src/main/java/io/github/libxposed/XposedModuleInterface.java @@ -40,18 +40,5 @@ public interface XposedModuleInterface { Bundle getExtras(); } - interface ResourcesLoadedParam { - @NonNull - String getPackageName(); - - @NonNull - XposedResources getResources(); - - @Nullable - Bundle getExtras(); - } - void onPackageLoaded(@NonNull PackageLoadedParam param); - - void onResourceLoaded(@NonNull ResourcesLoadedParam param); } diff --git a/libxposed/api/src/main/java/io/github/libxposed/XposedResources.java b/libxposed/api/src/main/java/io/github/libxposed/XposedResources.java deleted file mode 100644 index ef8902da..00000000 --- a/libxposed/api/src/main/java/io/github/libxposed/XposedResources.java +++ /dev/null @@ -1,16 +0,0 @@ -package io.github.libxposed; - -import android.content.res.AssetManager; -import android.content.res.Configuration; -import android.content.res.Resources; -import android.util.DisplayMetrics; - -public abstract class XposedResources extends Resources implements XposedResourcesInterface { - public XposedResources(AssetManager assets, DisplayMetrics metrics, Configuration config) { - super(assets, metrics, config); - } - - public XposedResources(ClassLoader classLoader) { - super(classLoader); - } -} diff --git a/libxposed/api/src/main/java/io/github/libxposed/XposedResourcesInterface.java b/libxposed/api/src/main/java/io/github/libxposed/XposedResourcesInterface.java deleted file mode 100644 index a19def9a..00000000 --- a/libxposed/api/src/main/java/io/github/libxposed/XposedResourcesInterface.java +++ /dev/null @@ -1,7 +0,0 @@ -package io.github.libxposed; - -import androidx.annotation.NonNull; - -public interface XposedResourcesInterface { - @NonNull String getPackageName(); -} diff --git a/libxposed/build.gradle b/libxposed/build.gradle deleted file mode 100644 index 9d542183..00000000 --- a/libxposed/build.gradle +++ /dev/null @@ -1,7 +0,0 @@ -// Top-level build file where you can add configuration options common to all sub-projects/modules. -subprojects { - repositories { - mavenCentral() - google() - } -} diff --git a/libxposed/build.gradle.kts b/libxposed/build.gradle.kts new file mode 100644 index 00000000..f557e246 --- /dev/null +++ b/libxposed/build.gradle.kts @@ -0,0 +1,3 @@ +plugins { + id("com.android.library") version "7.3.1" apply false +} diff --git a/libxposed/settings.gradle.kts b/libxposed/settings.gradle.kts index 4455e8a6..8082e95e 100644 --- a/libxposed/settings.gradle.kts +++ b/libxposed/settings.gradle.kts @@ -2,5 +2,4 @@ rootProject.name = "libxposed" include( ":api", - ":stubs", ) diff --git a/libxposed/stubs/build.gradle.kts b/libxposed/stubs/build.gradle.kts deleted file mode 100644 index f6727627..00000000 --- a/libxposed/stubs/build.gradle.kts +++ /dev/null @@ -1,3 +0,0 @@ -plugins { - `java-library` -} diff --git a/libxposed/stubs/src/main/java/android/content/Context.java b/libxposed/stubs/src/main/java/android/content/Context.java deleted file mode 100644 index 95cd2c6a..00000000 --- a/libxposed/stubs/src/main/java/android/content/Context.java +++ /dev/null @@ -1,4 +0,0 @@ -package android.content; - -public abstract class Context { -} diff --git a/libxposed/stubs/src/main/java/android/content/ContextWrapper.java b/libxposed/stubs/src/main/java/android/content/ContextWrapper.java deleted file mode 100644 index 78e4d6eb..00000000 --- a/libxposed/stubs/src/main/java/android/content/ContextWrapper.java +++ /dev/null @@ -1,16 +0,0 @@ -package android.content; - -public class ContextWrapper extends Context { - public ContextWrapper(Context base) { - throw new UnsupportedOperationException("STUB"); - } - - protected void attachBaseContext(Context base) { - throw new UnsupportedOperationException("STUB"); - } - - public Context getBaseContext() { - throw new UnsupportedOperationException("SUTB"); - } - -} diff --git a/libxposed/stubs/src/main/java/android/content/pm/ApplicationInfo.java b/libxposed/stubs/src/main/java/android/content/pm/ApplicationInfo.java deleted file mode 100644 index e0d81c50..00000000 --- a/libxposed/stubs/src/main/java/android/content/pm/ApplicationInfo.java +++ /dev/null @@ -1,4 +0,0 @@ -package android.content.pm; - -public class ApplicationInfo { -} diff --git a/libxposed/stubs/src/main/java/android/content/res/AssetManager.java b/libxposed/stubs/src/main/java/android/content/res/AssetManager.java deleted file mode 100644 index c69204dc..00000000 --- a/libxposed/stubs/src/main/java/android/content/res/AssetManager.java +++ /dev/null @@ -1,4 +0,0 @@ -package android.content.res; - -public class AssetManager { -} diff --git a/libxposed/stubs/src/main/java/android/content/res/Configuration.java b/libxposed/stubs/src/main/java/android/content/res/Configuration.java deleted file mode 100644 index 80e4df10..00000000 --- a/libxposed/stubs/src/main/java/android/content/res/Configuration.java +++ /dev/null @@ -1,4 +0,0 @@ -package android.content.res; - -public class Configuration { -} diff --git a/libxposed/stubs/src/main/java/android/content/res/Resources.java b/libxposed/stubs/src/main/java/android/content/res/Resources.java deleted file mode 100644 index c9f1ae9f..00000000 --- a/libxposed/stubs/src/main/java/android/content/res/Resources.java +++ /dev/null @@ -1,13 +0,0 @@ -package android.content.res; - -import android.util.DisplayMetrics; - -public class Resources { - protected Resources(ClassLoader classLoader) { - throw new UnsupportedOperationException("STUB"); - } - - protected Resources(AssetManager assets, DisplayMetrics metrics, Configuration config) { - throw new UnsupportedOperationException("STUB"); - } -} diff --git a/libxposed/stubs/src/main/java/android/content/res/TypedArray.java b/libxposed/stubs/src/main/java/android/content/res/TypedArray.java deleted file mode 100644 index d7428efa..00000000 --- a/libxposed/stubs/src/main/java/android/content/res/TypedArray.java +++ /dev/null @@ -1,7 +0,0 @@ -package android.content.res; - -public class TypedArray { - protected TypedArray(Resources resources) { - throw new UnsupportedOperationException("STUB"); - } -} diff --git a/libxposed/stubs/src/main/java/android/os/Bundle.java b/libxposed/stubs/src/main/java/android/os/Bundle.java deleted file mode 100644 index 49ff9ee2..00000000 --- a/libxposed/stubs/src/main/java/android/os/Bundle.java +++ /dev/null @@ -1,4 +0,0 @@ -package android.os; - -public class Bundle { -} diff --git a/libxposed/stubs/src/main/java/android/util/DisplayMetrics.java b/libxposed/stubs/src/main/java/android/util/DisplayMetrics.java deleted file mode 100644 index 35c44ff0..00000000 --- a/libxposed/stubs/src/main/java/android/util/DisplayMetrics.java +++ /dev/null @@ -1,4 +0,0 @@ -package android.util; - -public class DisplayMetrics { -} diff --git a/magisk-loader/build.gradle.kts b/magisk-loader/build.gradle.kts index c1532b6e..1b2163ff 100644 --- a/magisk-loader/build.gradle.kts +++ b/magisk-loader/build.gradle.kts @@ -328,94 +328,5 @@ task("reRunApp") { finalizedBy(reRunDaemon) } -abstract class ExampleClassVisitorFactory : - AsmClassVisitorFactory { - override fun createClassVisitor( - classContext: ClassContext, - nextClassVisitor: ClassVisitor - ): ClassVisitor { - return object : - ClassVisitor(Opcodes.ASM9, nextClassVisitor) { - override fun visit( - version: Int, - access: Int, - name: String?, - signature: String?, - superName: String?, - interfaces: Array? - ) { - val newSuperName = "xposed/dummy/X${superName?.substringAfterLast('/')}SuperClass" - println("replace super class of $name to $newSuperName") - super.visit( - version, - access, - name, - signature, - newSuperName, - interfaces - ) - } - - override fun visitMethod( - access: Int, - name: String?, - descriptor: String?, - signature: String?, - exceptions: Array? - ): MethodVisitor { - return object : MethodVisitor( - Opcodes.ASM9, super.visitMethod( - access, - name, - descriptor, - signature, - exceptions - ) - ) { - override fun visitMethodInsn( - opcode: Int, - owner: String?, - name: String?, - instDescriptor: String?, - isInterface: Boolean - ) { - if (opcode == Opcodes.INVOKESPECIAL) { - val newOwner = - "xposed/dummy/X${owner?.substringAfterLast('/')}SuperClass" - println("replace method call of $owner.$name$instDescriptor to $newOwner.$name$descriptor") - super.visitMethodInsn( - opcode, - newOwner, - name, - descriptor, - isInterface - ) - } else { - super.visitMethodInsn( - opcode, - owner, - name, - instDescriptor, - isInterface - ) - } - } - } - } - } - } - - override fun isInstrumentable(classData: ClassData): Boolean { - return classData.className == "io.github.libxposed.XposedResources" - } -} - -androidComponents.onVariants { variant -> - variant.instrumentation.transformClassesWith( - ExampleClassVisitorFactory::class.java, InstrumentationScope.ALL - ) {} - variant.instrumentation.setAsmFramesComputationMode(FramesComputationMode.COPY_FRAMES) -} - evaluationDependsOn(":app") evaluationDependsOn(":daemon") diff --git a/settings.gradle.kts b/settings.gradle.kts index 12b49bfd..4b0a4e95 100644 --- a/settings.gradle.kts +++ b/settings.gradle.kts @@ -32,7 +32,6 @@ include( ":app", ":libxposed:api", ":libxposed:service", - ":stubs", ":core", ":daemon", ":dex2oat", @@ -42,5 +41,3 @@ include( ":services:manager-service", ":services:daemon-service", ) - -project(":stubs").projectDir = file("libxposed/stubs")