mirror of
https://github.com/HighCapable/YukiHookAPI.git
synced 2025-09-04 09:45:19 +08:00
Fix ignored Error still output bug
This commit is contained in:
@@ -318,8 +318,7 @@ class YukiHookCreater(private val packageParam: PackageParam, private val hookCl
|
||||
(hookClass.throwable ?: Throwable("Failed Hooked Class [${hookClass.name}]")).also {
|
||||
onHookingFailureCallback?.invoke(it)
|
||||
onAllFailureCallback?.invoke(it)
|
||||
if (onHookingFailureCallback == null && onAllFailureCallback == null)
|
||||
onHookFailureMsg(it)
|
||||
if (isNotIgnoredHookingFailure) onHookFailureMsg(it)
|
||||
}
|
||||
return
|
||||
}
|
||||
@@ -335,8 +334,7 @@ class YukiHookCreater(private val packageParam: PackageParam, private val hookCl
|
||||
} catch (e: Throwable) {
|
||||
onConductFailureCallback?.invoke(param, e)
|
||||
onAllFailureCallback?.invoke(e)
|
||||
if (onConductFailureCallback == null && onAllFailureCallback == null)
|
||||
onHookFailureMsg(e)
|
||||
if (onConductFailureCallback == null && onAllFailureCallback == null) onHookFailureMsg(e)
|
||||
null
|
||||
}
|
||||
}
|
||||
@@ -355,8 +353,7 @@ class YukiHookCreater(private val packageParam: PackageParam, private val hookCl
|
||||
}.onFailure {
|
||||
onConductFailureCallback?.invoke(param, it)
|
||||
onAllFailureCallback?.invoke(it)
|
||||
if (onConductFailureCallback == null && onAllFailureCallback == null)
|
||||
onHookFailureMsg(it)
|
||||
if (onConductFailureCallback == null && onAllFailureCallback == null) onHookFailureMsg(it)
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -371,8 +368,7 @@ class YukiHookCreater(private val packageParam: PackageParam, private val hookCl
|
||||
}.onFailure {
|
||||
onConductFailureCallback?.invoke(param, it)
|
||||
onAllFailureCallback?.invoke(it)
|
||||
if (onConductFailureCallback == null && onAllFailureCallback == null)
|
||||
onHookFailureMsg(it)
|
||||
if (onConductFailureCallback == null && onAllFailureCallback == null) onHookFailureMsg(it)
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -387,13 +383,13 @@ class YukiHookCreater(private val packageParam: PackageParam, private val hookCl
|
||||
}.onFailure {
|
||||
onHookingFailureCallback?.invoke(it)
|
||||
onAllFailureCallback?.invoke(it)
|
||||
if (onHookingFailureCallback == null && onAllFailureCallback == null) onHookFailureMsg(it)
|
||||
if (isNotIgnoredHookingFailure) onHookFailureMsg(it)
|
||||
}
|
||||
}
|
||||
else {
|
||||
onHookingFailureCallback?.invoke(Throwable())
|
||||
onAllFailureCallback?.invoke(Throwable())
|
||||
if (onHookingFailureCallback == null && onAllFailureCallback == null)
|
||||
if (isNotIgnoredHookingFailure)
|
||||
loggerE(
|
||||
msg = if (isHookMemberSetup)
|
||||
"Hooked Member with a finding error in Class [$hookClass] [$tag]"
|
||||
@@ -414,8 +410,7 @@ class YukiHookCreater(private val packageParam: PackageParam, private val hookCl
|
||||
}
|
||||
}.onFailure {
|
||||
onAllFailureCallback?.invoke(it)
|
||||
if (onHookingFailureCallback == null && onAllFailureCallback == null)
|
||||
loggerE(msg = "Hooked All Members with an error in Class [$hookClass] [$tag]")
|
||||
if (isNotIgnoredHookingFailure) loggerE(msg = "Hooked All Members with an error in Class [$hookClass] [$tag]")
|
||||
}
|
||||
}
|
||||
|
||||
@@ -434,6 +429,12 @@ class YukiHookCreater(private val packageParam: PackageParam, private val hookCl
|
||||
private fun onHookFailureMsg(throwable: Throwable) =
|
||||
loggerE(msg = "Try to hook ${hookClass.instance ?: hookClass.name}[$member] got an Exception [$tag]", e = throwable)
|
||||
|
||||
/**
|
||||
* 判断是否没有设置 Hook 过程中的任何异常拦截
|
||||
* @return [Boolean] 没有设置任何异常拦截
|
||||
*/
|
||||
internal val isNotIgnoredHookingFailure get() = onHookingFailureCallback == null && onAllFailureCallback == null
|
||||
|
||||
override fun toString() = "${hookClass.name}$member$tag#YukiHookAPI"
|
||||
|
||||
/**
|
||||
|
@@ -29,6 +29,7 @@
|
||||
|
||||
package com.highcapable.yukihookapi.hook.core.finder
|
||||
|
||||
import android.os.SystemClock
|
||||
import com.highcapable.yukihookapi.annotation.DoNotUseMethod
|
||||
import com.highcapable.yukihookapi.hook.core.YukiHookCreater
|
||||
import com.highcapable.yukihookapi.hook.log.loggerE
|
||||
@@ -49,6 +50,9 @@ class ConstructorFinder(private val hookInstance: YukiHookCreater.MemberHookCrea
|
||||
/** [Constructor] 参数数组 */
|
||||
private var params: Array<out Class<*>>? = null
|
||||
|
||||
/** 是否使用了 [RemedyPlan] */
|
||||
private var isUsingRemedyPlan = false
|
||||
|
||||
/**
|
||||
* [Constructor] 参数
|
||||
*
|
||||
@@ -105,9 +109,15 @@ class ConstructorFinder(private val hookInstance: YukiHookCreater.MemberHookCrea
|
||||
* 发生错误时输出日志
|
||||
* @param msg 消息日志
|
||||
* @param throwable 错误
|
||||
* @param isAlwaysPrint 忽略条件每次都打印错误
|
||||
*/
|
||||
private fun onFailureMsg(msg: String = "", throwable: Throwable? = null) =
|
||||
loggerE(msg = "NoSuchConstructor happend in [$hookClass] $msg [${hookInstance.tag}]", e = throwable)
|
||||
private fun onFailureMsg(msg: String = "", throwable: Throwable? = null, isAlwaysPrint: Boolean = false) {
|
||||
Thread {
|
||||
SystemClock.sleep(10)
|
||||
if ((hookInstance.isNotIgnoredHookingFailure && !isUsingRemedyPlan) || isAlwaysPrint)
|
||||
loggerE(msg = "NoSuchConstructor happend in [$hookClass] $msg [${hookInstance.tag}]", e = throwable)
|
||||
}.start()
|
||||
}
|
||||
|
||||
/**
|
||||
* [Constructor] 重查找实现类
|
||||
@@ -152,13 +162,14 @@ class ConstructorFinder(private val hookInstance: YukiHookCreater.MemberHookCrea
|
||||
return@run
|
||||
}.onFailure {
|
||||
lastError = it
|
||||
onFailureMsg(msg = "trying ${p + 1} times by RemedyPlan --> $it")
|
||||
onFailureMsg(msg = "trying ${p + 1} times by RemedyPlan --> $it", isAlwaysPrint = true)
|
||||
}
|
||||
}
|
||||
if (!isFindSuccess) {
|
||||
onFailureMsg(
|
||||
msg = "trying ${remedyPlans.size} times and all failure by RemedyPlan",
|
||||
throwable = lastError
|
||||
throwable = lastError,
|
||||
isAlwaysPrint = true
|
||||
)
|
||||
remedyPlans.clear()
|
||||
}
|
||||
@@ -190,6 +201,7 @@ class ConstructorFinder(private val hookInstance: YukiHookCreater.MemberHookCrea
|
||||
* @return [Result] 可继续向下监听
|
||||
*/
|
||||
fun remedys(initiate: RemedyPlan.() -> Unit): Result {
|
||||
isUsingRemedyPlan = true
|
||||
if (isNoSuch) RemedyPlan().apply(initiate).build()
|
||||
return this
|
||||
}
|
||||
|
@@ -29,6 +29,7 @@
|
||||
|
||||
package com.highcapable.yukihookapi.hook.core.finder
|
||||
|
||||
import android.os.SystemClock
|
||||
import com.highcapable.yukihookapi.annotation.DoNotUseMethod
|
||||
import com.highcapable.yukihookapi.hook.core.YukiHookCreater
|
||||
import com.highcapable.yukihookapi.hook.log.loggerE
|
||||
@@ -93,7 +94,11 @@ class FieldFinder(private val hookInstance: YukiHookCreater.MemberHookCreater, p
|
||||
}
|
||||
Result()
|
||||
} catch (e: Throwable) {
|
||||
loggerE(msg = "NoSuchField happend in [$classSet] [${hookInstance.tag}]", e = e)
|
||||
Thread {
|
||||
SystemClock.sleep(10)
|
||||
if (hookInstance.isNotIgnoredHookingFailure)
|
||||
loggerE(msg = "NoSuchField happend in [$classSet] [${hookInstance.tag}]", e = e)
|
||||
}.start()
|
||||
Result(isNoSuch = true, e)
|
||||
}
|
||||
}
|
||||
|
@@ -29,6 +29,7 @@
|
||||
|
||||
package com.highcapable.yukihookapi.hook.core.finder
|
||||
|
||||
import android.os.SystemClock
|
||||
import com.highcapable.yukihookapi.annotation.DoNotUseMethod
|
||||
import com.highcapable.yukihookapi.hook.core.YukiHookCreater
|
||||
import com.highcapable.yukihookapi.hook.log.loggerE
|
||||
@@ -49,6 +50,9 @@ class MethodFinder(private val hookInstance: YukiHookCreater.MemberHookCreater,
|
||||
/** [Method] 参数数组 */
|
||||
private var params: Array<out Class<*>>? = null
|
||||
|
||||
/** 是否使用了 [RemedyPlan] */
|
||||
private var isUsingRemedyPlan = false
|
||||
|
||||
/**
|
||||
* [Method] 名称
|
||||
*
|
||||
@@ -123,9 +127,15 @@ class MethodFinder(private val hookInstance: YukiHookCreater.MemberHookCreater,
|
||||
* 发生错误时输出日志
|
||||
* @param msg 消息日志
|
||||
* @param throwable 错误
|
||||
* @param isAlwaysPrint 忽略条件每次都打印错误
|
||||
*/
|
||||
private fun onFailureMsg(msg: String = "", throwable: Throwable? = null) =
|
||||
loggerE(msg = "NoSuchMethod happend in [$hookClass] $msg [${hookInstance.tag}]", e = throwable)
|
||||
private fun onFailureMsg(msg: String = "", throwable: Throwable? = null, isAlwaysPrint: Boolean = false) {
|
||||
Thread {
|
||||
SystemClock.sleep(10)
|
||||
if ((hookInstance.isNotIgnoredHookingFailure && !isUsingRemedyPlan) || isAlwaysPrint)
|
||||
loggerE(msg = "NoSuchMethod happend in [$hookClass] $msg [${hookInstance.tag}]", e = throwable)
|
||||
}.start()
|
||||
}
|
||||
|
||||
/**
|
||||
* [Method] 重查找实现类
|
||||
@@ -170,13 +180,14 @@ class MethodFinder(private val hookInstance: YukiHookCreater.MemberHookCreater,
|
||||
return@run
|
||||
}.onFailure {
|
||||
lastError = it
|
||||
onFailureMsg(msg = "trying ${p + 1} times by RemedyPlan --> $it")
|
||||
onFailureMsg(msg = "trying ${p + 1} times by RemedyPlan --> $it", isAlwaysPrint = true)
|
||||
}
|
||||
}
|
||||
if (!isFindSuccess) {
|
||||
onFailureMsg(
|
||||
msg = "trying ${remedyPlans.size} times and all failure by RemedyPlan",
|
||||
throwable = lastError
|
||||
throwable = lastError,
|
||||
isAlwaysPrint = true
|
||||
)
|
||||
remedyPlans.clear()
|
||||
}
|
||||
@@ -210,6 +221,7 @@ class MethodFinder(private val hookInstance: YukiHookCreater.MemberHookCreater,
|
||||
* @return [Result] 可继续向下监听
|
||||
*/
|
||||
fun remedys(initiate: RemedyPlan.() -> Unit): Result {
|
||||
isUsingRemedyPlan = true
|
||||
if (isNoSuch) RemedyPlan().apply(initiate).build()
|
||||
return this
|
||||
}
|
||||
|
Reference in New Issue
Block a user