From 6597cd9bfe0797f9565e444ab57c664d55413e7f Mon Sep 17 00:00:00 2001 From: Fankesyooni Date: Tue, 10 May 2022 03:28:08 +0800 Subject: [PATCH] Support Android 11 --- .../hook/entity/FrameworkHooker.kt | 15 ++++++++++++--- 1 file changed, 12 insertions(+), 3 deletions(-) diff --git a/app/src/main/java/com/fankes/apperrorstracking/hook/entity/FrameworkHooker.kt b/app/src/main/java/com/fankes/apperrorstracking/hook/entity/FrameworkHooker.kt index 019dc87..a38f97e 100644 --- a/app/src/main/java/com/fankes/apperrorstracking/hook/entity/FrameworkHooker.kt +++ b/app/src/main/java/com/fankes/apperrorstracking/hook/entity/FrameworkHooker.kt @@ -45,6 +45,7 @@ import com.fankes.apperrorstracking.utils.factory.* import com.highcapable.yukihookapi.hook.bean.VariousClass import com.highcapable.yukihookapi.hook.entity.YukiBaseHooker import com.highcapable.yukihookapi.hook.factory.field +import com.highcapable.yukihookapi.hook.factory.hasMethod import com.highcapable.yukihookapi.hook.factory.method import com.highcapable.yukihookapi.hook.log.loggerE import com.highcapable.yukihookapi.hook.type.android.MessageClass @@ -59,7 +60,10 @@ object FrameworkHooker : YukiBaseHooker() { private const val ProcessRecordClass = "com.android.server.am.ProcessRecord" - private const val PackageListClass = "com.android.server.am.PackageList" + private val PackageListClass = VariousClass( + "com.android.server.am.ProcessRecord\$PackageList", + "com.android.server.am.PackageList" + ) private val ErrorDialogControllerClass = VariousClass( "com.android.server.am.ProcessRecord\$ErrorDialogController", @@ -205,10 +209,15 @@ object FrameworkHooker : YukiBaseHooker() { val isApp = (PackageListClass.clazz.method { name = "size" emptyParam() - }.get(ProcessRecordClass.clazz.method { + }.get(if (ProcessRecordClass.clazz.hasMethod { + name = "getPkgList" + emptyParam() + }) ProcessRecordClass.clazz.method { name = "getPkgList" emptyParam() - }.get(proc).call()).int() == 1) && appInfo != null + }.get(proc).call() else ProcessRecordClass.clazz.field { + name = "pkgList" + }.get(proc).self).int() == 1 && appInfo != null) /** 是否短时内重复错误 */ val isRepeating = AppErrorDialog_DataClass.clazz.field { name = "repeating" }.get(errData).boolean()