refactor: optimize some code

This commit is contained in:
2023-09-30 23:25:55 +08:00
parent fd84b22532
commit bca5a07826
6 changed files with 32 additions and 50 deletions

View File

@@ -266,7 +266,7 @@ object YukiHookAPI {
} }
/** /**
* 是否启调试模式 - 默认启用 * 是否启调试模式 - 默认启用
* *
* 启用后将交由日志输出管理器打印详细 Hook 日志到控制台 * 启用后将交由日志输出管理器打印详细 Hook 日志到控制台
* *
@@ -357,6 +357,9 @@ object YukiHookAPI {
*/ */
@Deprecated(message = "此方法及功能已被移除,请删除此方法") @Deprecated(message = "此方法及功能已被移除,请删除此方法")
var isEnableMemberCache = false var isEnableMemberCache = false
/** 结束方法体 */
internal fun build() = Unit
} }
/** /**
@@ -367,9 +370,7 @@ object YukiHookAPI {
* For English version, see [configs Method](https://fankes.github.io/YukiHookAPI/en/config/api-example#configs-method) * For English version, see [configs Method](https://fankes.github.io/YukiHookAPI/en/config/api-example#configs-method)
* @param initiate 方法体 * @param initiate 方法体
*/ */
inline fun configs(initiate: Configs.() -> Unit) { inline fun configs(initiate: Configs.() -> Unit) = Configs.apply(initiate).build()
Configs.apply(initiate)
}
/** /**
* 作为 Xposed 模块装载调用入口方法 * 作为 Xposed 模块装载调用入口方法
@@ -477,7 +478,7 @@ object YukiHookAPI {
internal fun printSplashInfo() { internal fun printSplashInfo() {
if (Configs.isDebug.not() || isShowSplashLogOnceTime.not()) return if (Configs.isDebug.not() || isShowSplashLogOnceTime.not()) return
isShowSplashLogOnceTime = false isShowSplashLogOnceTime = false
YLog.innerI("Welcome to YukiHookAPI $VERSION! Using ${Status.Executor.name} API ${Status.Executor.apiLevel}", isImplicit = true) YLog.innerD("Welcome to YukiHookAPI $VERSION! Using ${Status.Executor.name} API ${Status.Executor.apiLevel}", isImplicit = true)
} }
/** 输出找不到 Hook API 的错误日志 */ /** 输出找不到 Hook API 的错误日志 */

View File

@@ -598,7 +598,7 @@ class YukiMemberHookCreator internal constructor(private val packageParam: Packa
runCatching { runCatching {
replaceHookCallback?.invoke(assign).also { replaceHookCallback?.invoke(assign).also {
checkingReturnType((param.member as? Method?)?.returnType, it?.javaClass) checkingReturnType((param.member as? Method?)?.returnType, it?.javaClass)
if (replaceHookCallback != null) hookDebugMsg(msg = "Replace Hook Member [${this@hook}] done [$tag]") if (replaceHookCallback != null) YLog.innerD("Replace Hook Member [${this@hook}] done [$tag]")
HookParam.invoke() HookParam.invoke()
} }
}.getOrElse { }.getOrElse {
@@ -624,7 +624,7 @@ class YukiMemberHookCreator internal constructor(private val packageParam: Packa
runCatching { runCatching {
beforeHookCallback?.invoke(assign) beforeHookCallback?.invoke(assign)
checkingReturnType((param.member as? Method?)?.returnType, param.result?.javaClass) checkingReturnType((param.member as? Method?)?.returnType, param.result?.javaClass)
if (beforeHookCallback != null) hookDebugMsg(msg = "Before Hook Member [${this@hook}] done [$tag]") if (beforeHookCallback != null) YLog.innerD("Before Hook Member [${this@hook}] done [$tag]")
HookParam.invoke() HookParam.invoke()
}.onFailure { }.onFailure {
onConductFailureCallback?.invoke(assign, it) onConductFailureCallback?.invoke(assign, it)
@@ -639,7 +639,7 @@ class YukiMemberHookCreator internal constructor(private val packageParam: Packa
afterHookParam.assign(afterHookId, param).also { assign -> afterHookParam.assign(afterHookId, param).also { assign ->
runCatching { runCatching {
afterHookCallback?.invoke(assign) afterHookCallback?.invoke(assign)
if (afterHookCallback != null) hookDebugMsg(msg = "After Hook Member [${this@hook}] done [$tag]") if (afterHookCallback != null) YLog.innerD("After Hook Member [${this@hook}] done [$tag]")
HookParam.invoke() HookParam.invoke()
}.onFailure { }.onFailure {
onConductFailureCallback?.invoke(assign, it) onConductFailureCallback?.invoke(assign, it)
@@ -669,21 +669,13 @@ class YukiMemberHookCreator internal constructor(private val packageParam: Packa
} }
} }
/**
* Hook 过程中开启了 [YukiHookAPI.Configs.isDebug] 输出调试信息
* @param msg 调试日志内容
*/
private fun hookDebugMsg(msg: String) {
if (YukiHookAPI.Configs.isDebug) YLog.innerD(msg)
}
/** /**
* Hook 失败但未设置 [onAllFailureCallback] 将默认输出失败信息 * Hook 失败但未设置 [onAllFailureCallback] 将默认输出失败信息
* @param e 异常堆栈 * @param e 异常堆栈
* @param member 异常 [Member] - 可空 * @param member 异常 [Member] - 可空
*/ */
private fun hookErrorMsg(e: Throwable, member: Member? = null) = private fun hookErrorMsg(e: Throwable, member: Member? = null) =
YLog.innerE(msg = "Try to hook [${hookClass.instance ?: hookClass.name}]${member?.let { "[$it]" } ?: ""} got an Exception [$tag]", e = e) YLog.innerE("Try to hook [${hookClass.instance ?: hookClass.name}]${member?.let { "[$it]" } ?: ""} got an Exception [$tag]", e)
/** /**
* 判断是否没有设置 Hook 过程中的任何异常拦截 * 判断是否没有设置 Hook 过程中的任何异常拦截
@@ -837,7 +829,7 @@ class YukiMemberHookCreator internal constructor(private val packageParam: Packa
hookedMembers.takeIf { it.isNotEmpty() }?.apply { hookedMembers.takeIf { it.isNotEmpty() }?.apply {
forEach { forEach {
it.remove() it.remove()
hookDebugMsg(msg = "Remove Hooked Member [${it.member}] done [$tag]") YLog.innerD("Remove Hooked Member [${it.member}] done [$tag]")
} }
runCatching { preHookMembers.remove(this@MemberHookCreator.toString()) } runCatching { preHookMembers.remove(this@MemberHookCreator.toString()) }
clear() clear()

View File

@@ -180,17 +180,17 @@ class YukiResourcesHookCreator internal constructor(internal val packageParam: P
hookResources.instance?.hookLayout( hookResources.instance?.hookLayout(
packageParam.packageName, conditions!!.type, packageParam.packageName, conditions!!.type,
conditions!!.name, layoutInstance!! conditions!!.name, layoutInstance!!
) { hookDebugMsg(msg = "Hook Resources Layout $conditions done [$tag]") } ) { YLog.innerD("Hook Resources Layout $conditions done [$tag]") }
else -> hookResources.instance?.setReplacement( else -> hookResources.instance?.setReplacement(
packageParam.packageName, conditions!!.type, packageParam.packageName, conditions!!.type,
conditions!!.name, compat(replaceInstance) conditions!!.name, compat(replaceInstance)
) { hookDebugMsg(msg = "Hook Resources Value $conditions done [$tag]") } ) { YLog.innerD("Hook Resources Value $conditions done [$tag]") }
} else when { } else when {
layoutInstance != null -> hookResources.instance?.hookLayout(resourceId, layoutInstance!!) { layoutInstance != null -> hookResources.instance?.hookLayout(resourceId, layoutInstance!!) {
hookDebugMsg(msg = "Hook Resources Layout Id $resourceId done [$tag]") YLog.innerD("Hook Resources Layout Id $resourceId done [$tag]")
} }
else -> hookResources.instance?.setReplacement(resourceId, compat(replaceInstance)) { else -> hookResources.instance?.setReplacement(resourceId, compat(replaceInstance)) {
hookDebugMsg(msg = "Hook Resources Value Id $resourceId done [$tag]") YLog.innerD("Hook Resources Value Id $resourceId done [$tag]")
} }
} }
packageParam.wrapper?.type == HookEntryType.ZYGOTE -> packageParam.wrapper?.type == HookEntryType.ZYGOTE ->
@@ -199,17 +199,17 @@ class YukiResourcesHookCreator internal constructor(internal val packageParam: P
YukiResources.hookSystemWideLayout( YukiResources.hookSystemWideLayout(
packageParam.packageName, conditions!!.type, packageParam.packageName, conditions!!.type,
conditions!!.name, layoutInstance!! conditions!!.name, layoutInstance!!
) { hookDebugMsg(msg = "Hook Wide Resources Layout $conditions done [$tag]") } ) { YLog.innerD("Hook Wide Resources Layout $conditions done [$tag]") }
else -> YukiResources.setSystemWideReplacement( else -> YukiResources.setSystemWideReplacement(
packageParam.packageName, conditions!!.type, packageParam.packageName, conditions!!.type,
conditions!!.name, compat(replaceInstance) conditions!!.name, compat(replaceInstance)
) { hookDebugMsg(msg = "Hook Wide Resources Value $conditions done [$tag]") } ) { YLog.innerD("Hook Wide Resources Value $conditions done [$tag]") }
} else when { } else when {
layoutInstance != null -> YukiResources.hookSystemWideLayout(resourceId, layoutInstance!!) { layoutInstance != null -> YukiResources.hookSystemWideLayout(resourceId, layoutInstance!!) {
hookDebugMsg(msg = "Hook Wide Resources Layout Id $resourceId done [$tag]") YLog.innerD("Hook Wide Resources Layout Id $resourceId done [$tag]")
} }
else -> YukiResources.setSystemWideReplacement(resourceId, compat(replaceInstance)) { else -> YukiResources.setSystemWideReplacement(resourceId, compat(replaceInstance)) {
hookDebugMsg(msg = "Hook Wide Resources Value Id $resourceId done [$tag]") YLog.innerD("Hook Wide Resources Value Id $resourceId done [$tag]")
} }
} }
else -> YLog.innerE("Resources Hook type is invalid [$tag]") else -> YLog.innerE("Resources Hook type is invalid [$tag]")
@@ -221,14 +221,6 @@ class YukiResourcesHookCreator internal constructor(internal val packageParam: P
} }
} }
/**
* Hook 过程中开启了 [YukiHookAPI.Configs.isDebug] 输出调试信息
* @param msg 调试日志内容
*/
private fun hookDebugMsg(msg: String) {
if (YukiHookAPI.Configs.isDebug) YLog.innerD(msg)
}
/** /**
* Resources 查找条件实现类 * Resources 查找条件实现类
*/ */

View File

@@ -62,7 +62,7 @@ abstract class ClassBaseFinder internal constructor(internal open val loaderSet:
* @param msg 消息内容 * @param msg 消息内容
*/ */
internal fun debugMsg(msg: String) { internal fun debugMsg(msg: String) {
if (YukiHookAPI.Configs.isDebug && HookApiCategoryHelper.hasAvailableHookApi) YLog.innerD(msg) if (HookApiCategoryHelper.hasAvailableHookApi) YLog.innerD(msg)
} }
/** /**

View File

@@ -94,7 +94,7 @@ abstract class MemberBaseFinder internal constructor(private val tag: String, in
* @param msg 消息内容 * @param msg 消息内容
*/ */
internal fun debugMsg(msg: String) { internal fun debugMsg(msg: String) {
if (YukiHookAPI.Configs.isDebug && HookApiCategoryHelper.hasAvailableHookApi && hookerManager.instance != null) if (HookApiCategoryHelper.hasAvailableHookApi && hookerManager.instance != null)
YLog.innerD("$msg${hookerManager.tailTag}") YLog.innerD("$msg${hookerManager.tailTag}")
} }

View File

@@ -25,6 +25,8 @@
* *
* This file is created by fankes on 2023/9/27. * This file is created by fankes on 2023/9/27.
*/ */
@file:Suppress("unused")
package com.highcapable.yukihookapi.hook.log package com.highcapable.yukihookapi.hook.log
import android.system.ErrnoException import android.system.ErrnoException
@@ -189,8 +191,7 @@ object YLog {
content += "${it.head}Dump stack trace for \"${e.current().name}\":\n" content += "${it.head}Dump stack trace for \"${e.current().name}\":\n"
content += e.dumpToString() content += e.dumpToString()
} }
} }; return content
return content
} }
/** /**
@@ -271,10 +272,9 @@ object YLog {
* @param msg 日志打印的内容 - 默认空 - 如果你仅想打印异常堆栈可只设置 [e] * @param msg 日志打印的内容 - 默认空 - 如果你仅想打印异常堆栈可只设置 [e]
* @param e 可填入异常堆栈信息 - 将自动完整打印到控制台 * @param e 可填入异常堆栈信息 - 将自动完整打印到控制台
* @param isImplicit 是否隐式打印 - 不会记录 - 也不会显示包名和用户 ID * @param isImplicit 是否隐式打印 - 不会记录 - 也不会显示包名和用户 ID
* @param isDisable 禁止打印日志 - 标识后将什么也不做 - 默认否
*/ */
internal fun innerD(msg: String = "", e: Throwable? = null, isImplicit: Boolean = false, isDisable: Boolean = false) { internal fun innerD(msg: String = "", e: Throwable? = null, isImplicit: Boolean = false) {
if (Configs.isEnable.not() || isDisable) return if (Configs.isEnable.not() || YukiHookAPI.Configs.isDebug.not()) return
log(EnvType.BOTH, YLogData(priority = "D", msg = msg, throwable = e), isImplicit) log(EnvType.BOTH, YLogData(priority = "D", msg = msg, throwable = e), isImplicit)
} }
@@ -283,10 +283,9 @@ object YLog {
* @param msg 日志打印的内容 - 默认空 - 如果你仅想打印异常堆栈可只设置 [e] * @param msg 日志打印的内容 - 默认空 - 如果你仅想打印异常堆栈可只设置 [e]
* @param e 可填入异常堆栈信息 - 将自动完整打印到控制台 * @param e 可填入异常堆栈信息 - 将自动完整打印到控制台
* @param isImplicit 是否隐式打印 - 不会记录 - 也不会显示包名和用户 ID * @param isImplicit 是否隐式打印 - 不会记录 - 也不会显示包名和用户 ID
* @param isDisable 禁止打印日志 - 标识后将什么也不做 - 默认否
*/ */
internal fun innerI(msg: String = "", e: Throwable? = null, isImplicit: Boolean = false, isDisable: Boolean = false) { internal fun innerI(msg: String = "", e: Throwable? = null, isImplicit: Boolean = false) {
if (Configs.isEnable.not() || isDisable) return if (Configs.isEnable.not()) return
log(EnvType.BOTH, YLogData(priority = "I", msg = msg, throwable = e), isImplicit) log(EnvType.BOTH, YLogData(priority = "I", msg = msg, throwable = e), isImplicit)
} }
@@ -295,10 +294,9 @@ object YLog {
* @param msg 日志打印的内容 - 默认空 - 如果你仅想打印异常堆栈可只设置 [e] * @param msg 日志打印的内容 - 默认空 - 如果你仅想打印异常堆栈可只设置 [e]
* @param e 可填入异常堆栈信息 - 将自动完整打印到控制台 * @param e 可填入异常堆栈信息 - 将自动完整打印到控制台
* @param isImplicit 是否隐式打印 - 不会记录 - 也不会显示包名和用户 ID * @param isImplicit 是否隐式打印 - 不会记录 - 也不会显示包名和用户 ID
* @param isDisable 禁止打印日志 - 标识后将什么也不做 - 默认否
*/ */
internal fun innerW(msg: String = "", e: Throwable? = null, isImplicit: Boolean = false, isDisable: Boolean = false) { internal fun innerW(msg: String = "", e: Throwable? = null, isImplicit: Boolean = false) {
if (Configs.isEnable.not() || isDisable) return if (Configs.isEnable.not()) return
log(EnvType.BOTH, YLogData(priority = "W", msg = msg, throwable = e), isImplicit) log(EnvType.BOTH, YLogData(priority = "W", msg = msg, throwable = e), isImplicit)
} }
@@ -307,10 +305,9 @@ object YLog {
* @param msg 日志打印的内容 - 默认空 - 如果你仅想打印异常堆栈可只设置 [e] * @param msg 日志打印的内容 - 默认空 - 如果你仅想打印异常堆栈可只设置 [e]
* @param e 可填入异常堆栈信息 - 将自动完整打印到控制台 * @param e 可填入异常堆栈信息 - 将自动完整打印到控制台
* @param isImplicit 是否隐式打印 - 不会记录 - 也不会显示包名和用户 ID * @param isImplicit 是否隐式打印 - 不会记录 - 也不会显示包名和用户 ID
* @param isDisable 禁止打印日志 - 标识后将什么也不做 - 默认否
*/ */
internal fun innerE(msg: String = "", e: Throwable? = null, isImplicit: Boolean = false, isDisable: Boolean = false) { internal fun innerE(msg: String = "", e: Throwable? = null, isImplicit: Boolean = false) {
if (Configs.isEnable.not() || isDisable) return if (Configs.isEnable.not()) return
log(EnvType.BOTH, YLogData(priority = "E", msg = msg, throwable = e), isImplicit) log(EnvType.BOTH, YLogData(priority = "E", msg = msg, throwable = e), isImplicit)
} }