4.1 KiB
Migrate to YukiHookAPI 1.3.x
YukiHookAPI
has deprecated its own reflection API since 1.3.0
, you can read on to see what are the notes and new features.
::: warning
If you are using 1.2.x
and previous versions of YukiHookAPI
, it is recommended to read Migrate to YukiHookAPI 1.2.x instead of this document.
:::
Self-reflection API Deprecated
YukiHookAPI
has deprecated its own reflection API since the 1.3.0
version. Now we recommend that all developers move to a brand new development.
KavaRef, we no longer recommend the reflection API of YukiHookAPI
itself, which have been marked as deprecated.
Please refer to the migration document here which will jump to the KavaRef
document.
YukiHookAPI
has now implemented complete decoupling of the reflection API.
The reflection API used by its internal API has also been migrated to KavaRef
and has been tested stably.
In later versions of 2.0.0
, the self-reflection API will be completely removed,
during which time you will have enough time to learn and migrate to this brand new set of reflection APIs.
FreeReflection Deprecated
YukiHookAPI
has deprecated FreeReflection since the 1.3.0
version and migrated to a maintained by the LSPosed team
AndroidHiddenApiBypass.
When the reflection system hides the API, you cannot reflect directly like before, but need to do some operations.
YukiHookAPI has built-in AndroidHiddenApiBypassResolver
in KavaRef
's third-party Member parser,
and now you can use it like this where you need the reflection system to hide the API.
The following example
"android.app.ActivityThread".toClass()
.resolve()
// Add a custom Member parser
.processor(AndroidHiddenApiBypassResolver.get())
.firstMethod {
name = "currentActivityThread"
emptyParameters()
}.invoke()
::: warning
AndroidHiddenApiBypassResolver
is a tentative feature and may be migrated to a separate module in the 2.0.0
version,
you can also refer to Third-party Member Resolvers implement one by yourself,
which will jump to the KavaRef
document.
:::
Original Method Call
Xposed
provides the XposedBridge.invokeOriginalMethod
function, which can call original methods without a Hook.
Due to deprecation of the self-reflection API, the method method { ... }.get().original().call(...)
will no longer be available.
So, YukiHookAPI has added an extension to KavaRef
, and you can still implement this feature now.
YukiHookAPI
provides the following methods to connect to the original method calls of KavaRef
.
invokeOriginal(...)
→invoke(...)
invokeOriginalQuietly(...)
→invokeQuietly(...)
The following example
// Suppose this is an instance of the Test class
val instance: Any
// Original call to the method using KavaRef
"com.example.Test".toClass()
.resolve()
.firstMethod {
name = "test"
emptyParameters()
}.of(instance).invokeOriginal()
Repeat Hook Restricted Deprecated
YukiHookAPI
has deprecated the restriction of duplicate Hook since the 1.3.0
version.
Now, YukiHookAPI
no longer limits duplicate Hooks to the same method, you can hook multiple times on the same method.
YukiHookAPI
also deprecated the onAlreadyHooked
method of hook { ... }
.
Now this method will be useless and will not be called back. If necessary, please manually handle the relevant logic of duplicate Hooks.
Register Module App's Activity Behavior Change
YukiHookAPI
starting with 1.3.0
, the way in which the module Activity
behavior has changed.
Please read Register Module App's Activity for more information.
YLog Behavior Change
YukiHookAPI
allows the msg
parameter of YLog
to be passed into any object starting from 1.3.0
, and they will be automatically converted using the toString()
method.