mirror of
https://github.com/HighCapable/YukiHookAPI.git
synced 2025-09-04 09:45:19 +08:00
Fix when classSet and loaderSet is null still print logcat problem in MemberBaseFinder, ClassBaseFinder
This commit is contained in:
@@ -39,6 +39,12 @@ import com.highcapable.yukihookapi.hook.xposed.bridge.YukiHookBridge
|
||||
*/
|
||||
abstract class ClassBaseFinder internal constructor(internal open val loaderSet: ClassLoader? = null) : BaseFinder() {
|
||||
|
||||
internal companion object {
|
||||
|
||||
/** [loaderSet] 为 null 的提示 */
|
||||
internal const val LOADERSET_IS_NULL = "loaderSet is null"
|
||||
}
|
||||
|
||||
/** 当前找到的 [Class] 数组 */
|
||||
internal var classInstances = HashSet<Class<*>>()
|
||||
|
||||
@@ -67,6 +73,8 @@ abstract class ClassBaseFinder internal constructor(internal open val loaderSet:
|
||||
*/
|
||||
internal fun onFailureMsg(throwable: Throwable? = null) {
|
||||
if (isShutErrorPrinting) return
|
||||
/** 判断是否为 [LOADERSET_IS_NULL] */
|
||||
if (throwable?.message == LOADERSET_IS_NULL) return
|
||||
yLoggerE(msg = "NoClassDefFound happend in [$loaderSet]", e = throwable)
|
||||
}
|
||||
|
||||
|
@@ -54,6 +54,12 @@ abstract class MemberBaseFinder internal constructor(
|
||||
internal open val classSet: Class<*>? = null
|
||||
) : BaseFinder() {
|
||||
|
||||
internal companion object {
|
||||
|
||||
/** [classSet] 为 null 的提示 */
|
||||
internal const val CLASSSET_IS_NULL = "classSet is null"
|
||||
}
|
||||
|
||||
/** 是否使用了重查找功能 */
|
||||
@PublishedApi
|
||||
internal var isUsingRemedyPlan = false
|
||||
@@ -121,6 +127,8 @@ abstract class MemberBaseFinder internal constructor(
|
||||
if (isNotIgnoredNoSuchMemberFailure && isUsingRemedyPlan.not() && isShutErrorPrinting.not())
|
||||
loggingContent = Pair(msg, throwable)
|
||||
}
|
||||
/** 判断是否为 [CLASSSET_IS_NULL] */
|
||||
if (throwable?.message == CLASSSET_IS_NULL) return
|
||||
/** 判断绑定到 Hooker 时仅创建日志 */
|
||||
if (isBindToHooker) return await { build() }.unit()
|
||||
/** 判断始终输出日志或等待结果后输出日志 */
|
||||
|
@@ -494,7 +494,7 @@ class DexClassFinder @PublishedApi internal constructor(
|
||||
}
|
||||
} else startProcess()
|
||||
}
|
||||
} else Result(isNotFound = true, Throwable("loaderSet is null")).await { onFailureMsg() }
|
||||
} else Result(isNotFound = true, Throwable(LOADERSET_IS_NULL)).await { onFailureMsg() }
|
||||
}.getOrElse { e -> Result(isNotFound = true, e).await { onFailureMsg(throwable = e) } }
|
||||
|
||||
/**
|
||||
|
@@ -237,7 +237,7 @@ class ConstructorFinder @PublishedApi internal constructor(
|
||||
* @param isBind 是否将结果设置到目标 [YukiMemberHookCreator.MemberHookCreator]
|
||||
*/
|
||||
private fun build(isBind: Boolean) {
|
||||
if (classSet == null) error("classSet is null")
|
||||
if (classSet == null) error(CLASSSET_IS_NULL)
|
||||
classSet.checkingInternal()
|
||||
runBlocking {
|
||||
isBindToHooker = isBind
|
||||
|
@@ -196,7 +196,7 @@ class FieldFinder @PublishedApi internal constructor(
|
||||
memberInstances.takeIf { it.isNotEmpty() }?.forEach { onDebuggingMsg(msg = "Find Field [$it] takes ${ms}ms [${hookTag}]") }
|
||||
}
|
||||
Result()
|
||||
} else Result(isNoSuch = true, Throwable("classSet is null"))
|
||||
} else Result(isNoSuch = true, Throwable(CLASSSET_IS_NULL))
|
||||
}.getOrElse { e -> Result(isNoSuch = true, e).await { onFailureMsg(throwable = e) } }
|
||||
|
||||
@YukiPrivateApi
|
||||
|
@@ -309,7 +309,7 @@ class MethodFinder @PublishedApi internal constructor(
|
||||
* @param isBind 是否将结果设置到目标 [YukiMemberHookCreator.MemberHookCreator]
|
||||
*/
|
||||
private fun build(isBind: Boolean) {
|
||||
if (classSet == null) error("classSet is null")
|
||||
if (classSet == null) error(CLASSSET_IS_NULL)
|
||||
classSet.checkingInternal()
|
||||
runBlocking {
|
||||
isBindToHooker = isBind
|
||||
|
Reference in New Issue
Block a user