From 7b6727313cb4864618d3c5b9dcdfb9f4f9bb378a Mon Sep 17 00:00:00 2001 From: LoveSy Date: Mon, 22 Jul 2024 22:18:49 +0800 Subject: [PATCH] Use name instead of annotation to indicate before/after callback --- api/proguard-rules.pro | 4 ++++ .../io/github/libxposed/api/XposedInterface.java | 14 ++------------ .../libxposed/api/annotations/AfterInvocation.java | 11 ----------- .../api/annotations/BeforeInvocation.java | 11 ----------- .../libxposed/api/annotations/XposedHooker.java | 11 ----------- 5 files changed, 6 insertions(+), 45 deletions(-) delete mode 100644 api/src/main/java/io/github/libxposed/api/annotations/AfterInvocation.java delete mode 100644 api/src/main/java/io/github/libxposed/api/annotations/BeforeInvocation.java delete mode 100644 api/src/main/java/io/github/libxposed/api/annotations/XposedHooker.java diff --git a/api/proguard-rules.pro b/api/proguard-rules.pro index 0b9af49..c3fc746 100644 --- a/api/proguard-rules.pro +++ b/api/proguard-rules.pro @@ -1 +1,5 @@ -keep class io.github.libxposed.** { *; } +-keepclassmembers,allowoptimization class ** implements io.github.libxposed.api.XposedInterface$Hooker { + public *** before(***); + public *** after(***); +} diff --git a/api/src/main/java/io/github/libxposed/api/XposedInterface.java b/api/src/main/java/io/github/libxposed/api/XposedInterface.java index a701d82..d00ff5a 100644 --- a/api/src/main/java/io/github/libxposed/api/XposedInterface.java +++ b/api/src/main/java/io/github/libxposed/api/XposedInterface.java @@ -15,9 +15,6 @@ import java.lang.reflect.Member; import java.lang.reflect.Method; import java.nio.ByteBuffer; -import io.github.libxposed.api.annotations.AfterInvocation; -import io.github.libxposed.api.annotations.BeforeInvocation; -import io.github.libxposed.api.annotations.XposedHooker; import io.github.libxposed.api.errors.HookFailedError; import io.github.libxposed.api.utils.DexParser; @@ -166,9 +163,8 @@ public interface XposedInterface { * like the old API. * *

- * Classes implementing this interface should be annotated with {@link XposedHooker} and should provide - * two public static methods that are annotated with {@link BeforeInvocation} and {@link AfterInvocation}, - * respectively. + * Classes implementing this interface should should provide two public static methods named + * before and after for before invocation and after invocation respectively. *

* *

@@ -187,30 +183,24 @@ public interface XposedInterface { *

Example usage:

* *
{@code
-     *   @XposedHooker
      *   public class ExampleHooker implements Hooker {
      *
-     *       @BeforeInvocation
      *       public static void before(@NonNull BeforeHookCallback callback) {
      *           // Pre-hooking logic goes here
      *       }
      *
-     *       @AfterInvocation
      *       public static void after(@NonNull AfterHookCallback callback) {
      *           // Post-hooking logic goes here
      *       }
      *   }
      *
-     *   @XposedHooker
      *   public class ExampleHookerWithContext implements Hooker {
      *
-     *       @BeforeInvocation
      *       public static MyContext before(@NonNull BeforeHookCallback callback) {
      *           // Pre-hooking logic goes here
      *           return new MyContext();
      *       }
      *
-     *       @AfterInvocation
      *       public static void after(@NonNull AfterHookCallback callback, MyContext context) {
      *           // Post-hooking logic goes here
      *       }
diff --git a/api/src/main/java/io/github/libxposed/api/annotations/AfterInvocation.java b/api/src/main/java/io/github/libxposed/api/annotations/AfterInvocation.java
deleted file mode 100644
index e26b318..0000000
--- a/api/src/main/java/io/github/libxposed/api/annotations/AfterInvocation.java
+++ /dev/null
@@ -1,11 +0,0 @@
-package io.github.libxposed.api.annotations;
-
-import java.lang.annotation.ElementType;
-import java.lang.annotation.Retention;
-import java.lang.annotation.RetentionPolicy;
-import java.lang.annotation.Target;
-
-@Retention(RetentionPolicy.RUNTIME)
-@Target(ElementType.METHOD)
-public @interface AfterInvocation {
-}
diff --git a/api/src/main/java/io/github/libxposed/api/annotations/BeforeInvocation.java b/api/src/main/java/io/github/libxposed/api/annotations/BeforeInvocation.java
deleted file mode 100644
index 7b4a17b..0000000
--- a/api/src/main/java/io/github/libxposed/api/annotations/BeforeInvocation.java
+++ /dev/null
@@ -1,11 +0,0 @@
-package io.github.libxposed.api.annotations;
-
-import java.lang.annotation.ElementType;
-import java.lang.annotation.Retention;
-import java.lang.annotation.RetentionPolicy;
-import java.lang.annotation.Target;
-
-@Retention(RetentionPolicy.RUNTIME)
-@Target(ElementType.METHOD)
-public @interface BeforeInvocation {
-}
diff --git a/api/src/main/java/io/github/libxposed/api/annotations/XposedHooker.java b/api/src/main/java/io/github/libxposed/api/annotations/XposedHooker.java
deleted file mode 100644
index acff8c0..0000000
--- a/api/src/main/java/io/github/libxposed/api/annotations/XposedHooker.java
+++ /dev/null
@@ -1,11 +0,0 @@
-package io.github.libxposed.api.annotations;
-
-import java.lang.annotation.ElementType;
-import java.lang.annotation.Retention;
-import java.lang.annotation.RetentionPolicy;
-import java.lang.annotation.Target;
-
-@Retention(RetentionPolicy.RUNTIME)
-@Target({ElementType.TYPE, ElementType.TYPE_USE})
-public @interface XposedHooker {
-}