This commit is contained in:
2022-02-05 19:43:35 +08:00
parent 958aef91d8
commit bbe3febe69
7 changed files with 41 additions and 8 deletions

View File

@@ -12,6 +12,7 @@
- 这是一个使用 Kotlin 重新构建的高效 Xposed Hook API - 这是一个使用 Kotlin 重新构建的高效 Xposed Hook API
- 名称取自 <a href='https://www.bilibili.com/bangumi/play/ss5016/?from=search&seid=313229405371562533&spm_id_from=333.337.0.0'> - 名称取自 <a href='https://www.bilibili.com/bangumi/play/ss5016/?from=search&seid=313229405371562533&spm_id_from=333.337.0.0'>
《ももくり》女主 栗原 雪(Yuki)</a> 《ももくり》女主 栗原 雪(Yuki)</a>
- 前身为 [TMore](https://github.com/fankes/TMore) 开发学习项目中使用的 Innocent Xposed API现在重新命名并开源。
# Get Startted # Get Startted

View File

@@ -38,11 +38,11 @@ import com.highcapable.yukihookapi.demo.InjectTest
import com.highcapable.yukihookapi.demo.MainActivity import com.highcapable.yukihookapi.demo.MainActivity
import com.highcapable.yukihookapi.hook.factory.encase import com.highcapable.yukihookapi.hook.factory.encase
import com.highcapable.yukihookapi.hook.factory.findMethod import com.highcapable.yukihookapi.hook.factory.findMethod
import com.highcapable.yukihookapi.hook.proxy.YukiHookXposedInitProxy
import com.highcapable.yukihookapi.hook.type.ActivityClass import com.highcapable.yukihookapi.hook.type.ActivityClass
import com.highcapable.yukihookapi.hook.type.BundleClass import com.highcapable.yukihookapi.hook.type.BundleClass
import com.highcapable.yukihookapi.hook.type.StringType import com.highcapable.yukihookapi.hook.type.StringType
import com.highcapable.yukihookapi.hook.type.UnitType import com.highcapable.yukihookapi.hook.type.UnitType
import com.highcapable.yukihookapi.hook.xposed.proxy.YukiHookXposedInitProxy
// for test // for test
@InjectYukiHookWithXposed @InjectYukiHookWithXposed

View File

@@ -31,7 +31,7 @@ package com.highcapable.yukihookapi.annotation.xposed
import androidx.annotation.Keep import androidx.annotation.Keep
import com.highcapable.yukihookapi.YukiHookAPI import com.highcapable.yukihookapi.YukiHookAPI
import com.highcapable.yukihookapi.hook.proxy.YukiHookXposedInitProxy import com.highcapable.yukihookapi.hook.xposed.proxy.YukiHookXposedInitProxy
/** /**
* 标识 YukiHook 注入 Xposed 入口的类注释 * 标识 YukiHook 注入 Xposed 入口的类注释

View File

@@ -380,6 +380,12 @@ class YukiHookCreater(private val packageParam: PackageParam, val hookClass: Cla
return this return this
} }
/**
* 忽略 Hook 进行过程中发生错误
* @return [Result] 可继续向下监听
*/
fun ignoredConductFailure() = onConductFailure { _, _ -> }
/** /**
* 监听 Hook 开始时发生错误的回调方法 * 监听 Hook 开始时发生错误的回调方法
* @param initiate 回调错误 - ([Throwable] 异常) * @param initiate 回调错误 - ([Throwable] 异常)
@@ -390,6 +396,12 @@ class YukiHookCreater(private val packageParam: PackageParam, val hookClass: Cla
return this return this
} }
/**
* 忽略 Hook 开始时发生的错误
* @return [Result] 可继续向下监听
*/
fun ignoredHookingFailure() = onHookingFailure {}
/** /**
* 监听 Hook 过程发生找不到方法、变量错误的回调方法 * 监听 Hook 过程发生找不到方法、变量错误的回调方法
* @param initiate 回调错误 - ([Throwable] 异常) * @param initiate 回调错误 - ([Throwable] 异常)
@@ -400,6 +412,12 @@ class YukiHookCreater(private val packageParam: PackageParam, val hookClass: Cla
return this return this
} }
/**
* 忽略 Hook 过程发生找不到方法、变量的错误
* @return [Result] 可继续向下监听
*/
fun ignoredNoSuchMemberFailure() = onNoSuchMemberFailure {}
/** /**
* 监听全部 Hook 过程发生错误的回调方法 * 监听全部 Hook 过程发生错误的回调方法
* @param initiate 回调错误 - ([Throwable] 异常) * @param initiate 回调错误 - ([Throwable] 异常)
@@ -409,6 +427,12 @@ class YukiHookCreater(private val packageParam: PackageParam, val hookClass: Cla
onAllFailureCallback = initiate onAllFailureCallback = initiate
return this return this
} }
/**
* 忽略全部 Hook 过程发生的错误
* @return [Result] 可继续向下监听
*/
fun ignoredAllFailure() = onAllFailure {}
} }
} }
} }

View File

@@ -29,8 +29,9 @@ package com.highcapable.yukihookapi.hook.entity
import com.highcapable.yukihookapi.YukiHookAPI import com.highcapable.yukihookapi.YukiHookAPI
import com.highcapable.yukihookapi.annotation.DoNotUseMethod import com.highcapable.yukihookapi.annotation.DoNotUseMethod
import com.highcapable.yukihookapi.annotation.xposed.InjectYukiHookWithXposed
import com.highcapable.yukihookapi.hook.param.PackageParam import com.highcapable.yukihookapi.hook.param.PackageParam
import com.highcapable.yukihookapi.hook.proxy.YukiHookXposedInitProxy import com.highcapable.yukihookapi.hook.xposed.proxy.YukiHookXposedInitProxy
/** /**
* YukiHook 的子类实现 * YukiHook 的子类实现
@@ -41,10 +42,14 @@ import com.highcapable.yukihookapi.hook.proxy.YukiHookXposedInitProxy
* *
* 你可以在 [YukiHookXposedInitProxy] 的 [YukiHookXposedInitProxy.onHook] 中实现如下用法 * 你可以在 [YukiHookXposedInitProxy] 的 [YukiHookXposedInitProxy.onHook] 中实现如下用法
* *
* 调用 [YukiHookAPI.encase] encase(moduleName = "模块包名", MainHooker(), SecondHooker(), ThirdHooker() ...) * 第一种方式:调用 [YukiHookAPI.encase] encase(MainHooker(), SecondHooker(), ThirdHooker() ...)
*
* 第二种方式:调用 [YukiHookAPI.encase] encase(moduleName = "模块包名", MainHooker(), SecondHooker(), ThirdHooker() ...)
* *
* 调用 [PackageParam.loadHooker] loadHooker(hooker = CustomHooker()) * 调用 [PackageParam.loadHooker] loadHooker(hooker = CustomHooker())
* *
* 更多请参考 [InjectYukiHookWithXposed] 中的注释内容
*
* .... * ....
* *
* 继承类参考示例: * 继承类参考示例:

View File

@@ -36,7 +36,7 @@ import android.os.Bundle
import com.highcapable.yukihookapi.YukiHookAPI import com.highcapable.yukihookapi.YukiHookAPI
import com.highcapable.yukihookapi.hook.entity.YukiBaseHooker import com.highcapable.yukihookapi.hook.entity.YukiBaseHooker
import com.highcapable.yukihookapi.hook.param.PackageParam import com.highcapable.yukihookapi.hook.param.PackageParam
import com.highcapable.yukihookapi.hook.proxy.YukiHookXposedInitProxy import com.highcapable.yukihookapi.hook.xposed.proxy.YukiHookXposedInitProxy
/** /**
* 在 [YukiHookXposedInitProxy] 中装载 [YukiHookAPI] * 在 [YukiHookXposedInitProxy] 中装载 [YukiHookAPI]

View File

@@ -27,15 +27,18 @@
*/ */
@file:Suppress("unused") @file:Suppress("unused")
package com.highcapable.yukihookapi.hook.proxy package com.highcapable.yukihookapi.hook.xposed.proxy
import androidx.annotation.Keep import androidx.annotation.Keep
import com.highcapable.yukihookapi.YukiHookAPI import com.highcapable.yukihookapi.YukiHookAPI
import com.highcapable.yukihookapi.annotation.xposed.InjectYukiHookWithXposed
import com.highcapable.yukihookapi.hook.factory.encase import com.highcapable.yukihookapi.hook.factory.encase
/** /**
* YukiHook Xposed 装载 API 调用接口 * YukiHook Xposed 装载 API 调用接口
* *
* - 请在此类上添加注释 [InjectYukiHookWithXposed] 标记模块 Hook 入口
*
* Hook 开始时将自动调用 [onHook] 方法 * Hook 开始时将自动调用 [onHook] 方法
* *
* 请在 [onHook] 中调用 [YukiHookAPI.encase] 或直接调用 [encase] * 请在 [onHook] 中调用 [YukiHookAPI.encase] 或直接调用 [encase]
@@ -44,7 +47,7 @@ import com.highcapable.yukihookapi.hook.factory.encase
* *
* .... * ....
* *
* override fun onHook() = YukiHookAPI.encase(moduleName = "模块包名") { * override fun onHook() = YukiHookAPI.encase(moduleName = "模块包名/可选") {
* *
* ....// Your code here. * ....// Your code here.
* *
@@ -56,7 +59,7 @@ import com.highcapable.yukihookapi.hook.factory.encase
* *
* .... * ....
* *
* override fun onHook() = encase(moduleName = "模块包名") { * override fun onHook() = encase(moduleName = "模块包名/可选") {
* *
* ....// Your code here. * ....// Your code here.
* *