[core] Fix pendding hook for os with newer art (#363)

This commit is contained in:
LoveSy 2021-03-15 20:20:19 +08:00 committed by GitHub
parent b7c18eb12c
commit c6bfffc785
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
1 changed files with 4 additions and 6 deletions

View File

@ -29,7 +29,7 @@ import java.lang.reflect.Modifier;
import de.robv.android.xposed.XposedHelpers; import de.robv.android.xposed.XposedHelpers;
public class ClassUtils { public class ClassUtils {
public static int getClassStatus(Class clazz, boolean isUnsigned) { private static int getClassStatus(Class<?> clazz, boolean isUnsigned) {
if (clazz == null) { if (clazz == null) {
return 0; return 0;
} }
@ -48,11 +48,9 @@ public class ClassUtils {
* 11.0+: kInitialized = 14 uint8_t * 11.0+: kInitialized = 14 uint8_t
* kVisiblyInitialized = 15 uint8_t * kVisiblyInitialized = 15 uint8_t
*/ */
public static boolean isInitialized(Class clazz) { private static boolean isInitialized(Class<?> clazz) {
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.R) { if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.P) {
return getClassStatus(clazz, true) >= 14; return getClassStatus(clazz, true) >= 14;
} else if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.P) {
return getClassStatus(clazz, true) == 14;
} else if (Build.VERSION.SDK_INT == Build.VERSION_CODES.O_MR1) { } else if (Build.VERSION.SDK_INT == Build.VERSION_CODES.O_MR1) {
return getClassStatus(clazz, false) == 11; return getClassStatus(clazz, false) == 11;
} else { } else {
@ -64,7 +62,7 @@ public class ClassUtils {
if (!(hookMethod instanceof Method)) { if (!(hookMethod instanceof Method)) {
return false; return false;
} }
Class declaringClass = hookMethod.getDeclaringClass(); Class<?> declaringClass = hookMethod.getDeclaringClass();
return Modifier.isStatic(hookMethod.getModifiers()) return Modifier.isStatic(hookMethod.getModifiers())
&& !ClassUtils.isInitialized(declaringClass); && !ClassUtils.isInitialized(declaringClass);
} }