mirror of
https://github.com/HighCapable/YukiHookAPI.git
synced 2025-09-04 09:45:19 +08:00
78 lines
27 KiB
JavaScript
78 lines
27 KiB
JavaScript
import{_ as s,o as e,c as a,a as n}from"./app.99fcdd51.js";const o={},l=n(`<h1 id="use-as-xposed-module-configs" tabindex="-1"><a class="header-anchor" href="#use-as-xposed-module-configs" aria-hidden="true">#</a> Use as Xposed Module Configs</h1><blockquote><p>Here are the related configuration methods used by <code>YukiHookAPI</code> as an Xposed Module.</p></blockquote><h2 id="dependency-configs" tabindex="-1"><a class="header-anchor" href="#dependency-configs" aria-hidden="true">#</a> Dependency Configs</h2><blockquote><p>As an Xposed Module, <code>YukiHookAPI</code> provides an automatic builder.</p></blockquote><p>You need to integrate the latest version of the <code>com.highcapable.yukihookapi:ksp-xposed</code> dependency in your <code>build.gradle</code>.</p><h2 id="custom-automatic-builder" tabindex="-1"><a class="header-anchor" href="#custom-automatic-builder" aria-hidden="true">#</a> Custom Automatic Builder</h2><blockquote><p>You can configure how <code>YukiHookAPI</code> will generate the <code>xposed_init</code> entry point.</p></blockquote><h3 id="injectyukihookwithxposed-annotation" tabindex="-1"><a class="header-anchor" href="#injectyukihookwithxposed-annotation" aria-hidden="true">#</a> InjectYukiHookWithXposed Annotation</h3><div class="language-kotlin ext-kt"><pre class="shiki" style="background-color:#22272e;"><code><span class="line"><span style="color:#F47067;">annotation</span><span style="color:#ADBAC7;"> </span><span style="color:#F47067;">class</span><span style="color:#ADBAC7;"> </span><span style="color:#F69D50;">InjectYukiHookWithXposed</span><span style="color:#ADBAC7;">(</span></span>
|
|
<span class="line"><span style="color:#ADBAC7;"> </span><span style="color:#F47067;">val</span><span style="color:#ADBAC7;"> sourcePath</span><span style="color:#F47067;">:</span><span style="color:#ADBAC7;"> </span><span style="color:#6CB6FF;">String</span><span style="color:#ADBAC7;">,</span></span>
|
|
<span class="line"><span style="color:#ADBAC7;"> </span><span style="color:#F47067;">val</span><span style="color:#ADBAC7;"> modulePackageName</span><span style="color:#F47067;">:</span><span style="color:#ADBAC7;"> </span><span style="color:#6CB6FF;">String</span><span style="color:#ADBAC7;">,</span></span>
|
|
<span class="line"><span style="color:#ADBAC7;"> </span><span style="color:#F47067;">val</span><span style="color:#ADBAC7;"> entryClassName</span><span style="color:#F47067;">:</span><span style="color:#ADBAC7;"> </span><span style="color:#6CB6FF;">String</span><span style="color:#ADBAC7;">,</span></span>
|
|
<span class="line"><span style="color:#ADBAC7;"> </span><span style="color:#F47067;">val</span><span style="color:#ADBAC7;"> isUsingResourcesHook</span><span style="color:#F47067;">:</span><span style="color:#ADBAC7;"> </span><span style="color:#6CB6FF;">Boolean</span></span>
|
|
<span class="line"><span style="color:#ADBAC7;">)</span></span>
|
|
<span class="line"></span></code></pre></div><p>The <code>@InjectYukiHookWithXposed</code> annotation is an important annotation to mark the entry point of a Module App's Hook.</p><div class="custom-container danger"><p class="custom-container-title">Pay Attention</p><p>The <strong>Class</strong> of the <strong>@InjectYukiHookWithXposed</strong> annotation must implements <strong>IYukiHookXposedInit</strong> interface.</p><p>All <strong>Class</strong> tags in your current project can <strong>only exist once</strong>, if there are multiple declaration automatic builder <u><strong>will throw an exception at compile time</strong></u>, you can customize its related parameters.</p></div><h4 id="sourcepath-parameter" tabindex="-1"><a class="header-anchor" href="#sourcepath-parameter" aria-hidden="true">#</a> sourcePath Parameter</h4><p>The <code>sourcePath</code> parameter determines the important identifier for the automatic builder to automatically find and match your current project path.</p><p>The content of this parameter is a relative path match, and the default parameter is <code>src/main</code>.</p><div class="custom-container danger"><p class="custom-container-title">Pay Attention</p><p>If your project is not in <strong>../src/main..</strong> or you set the project path manually using <strong>sourceSets</strong>, you need to set the <strong>sourcePath</strong> parameter manually, otherwise the automatic builder will not recognize your project path and <u><strong>will throw an exception at compile time</strong></u>.</p></div><blockquote><p>The following example</p></blockquote><div class="language-kotlin ext-kt line-numbers-mode"><pre class="shiki" style="background-color:#22272e;"><code><span class="line"><span style="color:#F47067;">@InjectYukiHookWithXposed</span><span style="color:#ADBAC7;">(</span><span style="color:#6CB6FF;">sourcePath</span><span style="color:#ADBAC7;"> </span><span style="color:#F47067;">=</span><span style="color:#ADBAC7;"> </span><span style="color:#96D0FF;">"src/custom"</span><span style="color:#ADBAC7;">)</span></span>
|
|
<span class="line"></span></code></pre><div class="line-numbers" aria-hidden="true"><div class="line-number"></div></div></div><p>The file path separator used by <code>sourcePath</code> will be automatically recognized according to <code>Windows</code> and <code>Unix</code>, either <code>/</code> or <code>\\</code> can be used.</p><h4 id="modulepackagename-parameter" tabindex="-1"><a class="header-anchor" href="#modulepackagename-parameter" aria-hidden="true">#</a> modulePackageName Parameter</h4><p><code>modulePackageName</code> is the <code>applicationId</code> of your current project, which is your module package name (the final generated application package name).</p><p>If left blank or not filled, the automatic builder will analyze and generate the current project file.</p><div class="custom-container warning"><p class="custom-container-title">Notice</p><p>If you want to use the module package name to be automatically generated, you need to ensure that your project namespace has any of the following definitions in <strong>AndroidManifest.xml</strong>, <strong>build.gradle</strong> or <strong>build.gradle.kts</strong>.</p></div><p>Example namespace <code>com.example.demo</code>, any one of the following definitions.</p><p>The following definitions are for reference only, usually <strong>as long as your project can generate the <code>BuildConfig.java</code> file normally, no additional operations are required</strong>.</p><blockquote><p><code>AndroidManifest.xml</code> example</p></blockquote><div class="language-xml ext-xml line-numbers-mode"><pre class="shiki" style="background-color:#22272e;"><code><span class="line"><span style="color:#ADBAC7;"><</span><span style="color:#8DDB8C;">manifest</span><span style="color:#ADBAC7;"> </span><span style="color:#6CB6FF;">xmlns:android</span><span style="color:#ADBAC7;">=</span><span style="color:#96D0FF;">"http://schemas.android.com/apk/res/android"</span></span>
|
|
<span class="line"><span style="color:#ADBAC7;"> </span><span style="color:#6CB6FF;">package</span><span style="color:#ADBAC7;">=</span><span style="color:#96D0FF;">"com.example.demo"</span><span style="color:#ADBAC7;">></span></span>
|
|
<span class="line"></span></code></pre><div class="line-numbers" aria-hidden="true"><div class="line-number"></div><div class="line-number"></div></div></div><blockquote><p><code>build.gradle</code> example</p></blockquote><div class="language-groovy ext-groovy line-numbers-mode"><pre class="shiki" style="background-color:#22272e;"><code><span class="line"><span style="color:#ADBAC7;">android {</span></span>
|
|
<span class="line"><span style="color:#ADBAC7;"> namespace </span><span style="color:#96D0FF;">'com.example.demo'</span></span>
|
|
<span class="line"><span style="color:#ADBAC7;">}</span></span>
|
|
<span class="line"></span></code></pre><div class="line-numbers" aria-hidden="true"><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div></div></div><blockquote><p><code>build.gradle.kts</code> example</p></blockquote><div class="language-kotlin ext-kt line-numbers-mode"><pre class="shiki" style="background-color:#22272e;"><code><span class="line"><span style="color:#ADBAC7;">android {</span></span>
|
|
<span class="line"><span style="color:#ADBAC7;"> namespace </span><span style="color:#F47067;">=</span><span style="color:#ADBAC7;"> </span><span style="color:#96D0FF;">"com.example.demo"</span></span>
|
|
<span class="line"><span style="color:#ADBAC7;">}</span></span>
|
|
<span class="line"></span></code></pre><div class="line-numbers" aria-hidden="true"><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div></div></div><p>If your module package name is automatically generated by unconventional means, or you think it is necessary to manually define the module package name, then you can directly set the <code>modulePackageName</code> parameter.</p><blockquote><p>The following example</p></blockquote><div class="language-kotlin ext-kt line-numbers-mode"><pre class="shiki" style="background-color:#22272e;"><code><span class="line"><span style="color:#F47067;">@InjectYukiHookWithXposed</span><span style="color:#ADBAC7;">(</span><span style="color:#6CB6FF;">modulePackageName</span><span style="color:#ADBAC7;"> </span><span style="color:#F47067;">=</span><span style="color:#ADBAC7;"> </span><span style="color:#96D0FF;">"com.example.demo"</span><span style="color:#ADBAC7;">)</span></span>
|
|
<span class="line"></span></code></pre><div class="line-numbers" aria-hidden="true"><div class="line-number"></div></div></div><p>As long as you customize the <code>modulePackageName</code> parameter, you will get a warning at compile time.</p><blockquote><p>The following example</p></blockquote><div class="language-text ext-text"><pre class="shiki" style="background-color:#22272e;"><code><span class="line"><span style="color:#adbac7;">You set the customize module package name to "com.example.demo", please check for yourself if it is correct</span></span>
|
|
<span class="line"><span style="color:#adbac7;"></span></span></code></pre></div><div class="custom-container warning"><p class="custom-container-title">Notice</p><p>In addition to the format of the manually defined module package name, the automatic builder will no longer check whether the module package name is correct, and you need to confirm its validity by yourself.</p></div><h4 id="entryclassname-parameter" tabindex="-1"><a class="header-anchor" href="#entryclassname-parameter" aria-hidden="true">#</a> entryClassName Parameter</h4><p><code>entryClassName</code> determines how the automatic builder generates the entry class name in <code>xposed_init</code>.</p><p>By default, it will use your entry class package name to insert the <code>_YukiHookXposedInit</code> suffix for generation.</p><p>Suppose this is your entry class.</p><blockquote><p>The following example</p></blockquote><div class="language-kotlin ext-kt line-numbers-mode"><pre class="shiki" style="background-color:#22272e;"><code><span class="line"><span style="color:#F47067;">@InjectYukiHookWithXposed</span></span>
|
|
<span class="line"><span style="color:#F47067;">class</span><span style="color:#ADBAC7;"> </span><span style="color:#F69D50;">HookEntry</span><span style="color:#F47067;">:</span><span style="color:#ADBAC7;"> </span><span style="color:#6CB6FF;">IYukiHookXposedInit</span></span>
|
|
<span class="line"></span></code></pre><div class="line-numbers" aria-hidden="true"><div class="line-number"></div><div class="line-number"></div></div></div><p>The Xposed entry class is handled as follows.</p><blockquote><p>The following example</p></blockquote><div class="language-kotlin ext-kt"><pre class="shiki" style="background-color:#22272e;"><code><span class="line"><span style="color:#F47067;">class</span><span style="color:#ADBAC7;"> </span><span style="color:#F69D50;">HookEntry_YukiHookXposedInit</span><span style="color:#F47067;">:</span><span style="color:#ADBAC7;"> </span><span style="color:#6CB6FF;">IXposedHookZygoteInit</span><span style="color:#ADBAC7;">, </span><span style="color:#F69D50;">IXposedHookLoadPackage</span><span style="color:#ADBAC7;">, ...</span></span>
|
|
<span class="line"></span></code></pre></div><p>The compiled class name structure is as follows.</p><blockquote><p>The following example</p></blockquote><div class="language-text ext-text"><pre class="shiki" style="background-color:#22272e;"><code><span class="line"><span style="color:#adbac7;">...hook.HookEntry \u2190 Your entry class</span></span>
|
|
<span class="line"><span style="color:#adbac7;">...hook.HookEntry_Impl \u2190 Auto-generated Impl class</span></span>
|
|
<span class="line"><span style="color:#adbac7;">...hook.HookEntry_YukiHookXposedInit \u2190 Automatically generated Xposed entry class</span></span>
|
|
<span class="line"><span style="color:#adbac7;"></span></span></code></pre></div><p>We now define the entry class name as <code>HookXposedEntry</code>.</p><blockquote><p>The following example</p></blockquote><div class="language-kotlin ext-kt line-numbers-mode"><pre class="shiki" style="background-color:#22272e;"><code><span class="line"><span style="color:#F47067;">@InjectYukiHookWithXposed</span><span style="color:#ADBAC7;">(</span><span style="color:#6CB6FF;">entryClassName</span><span style="color:#ADBAC7;"> </span><span style="color:#F47067;">=</span><span style="color:#ADBAC7;"> </span><span style="color:#96D0FF;">"HookXposedEntry"</span><span style="color:#ADBAC7;">)</span></span>
|
|
<span class="line"><span style="color:#F47067;">class</span><span style="color:#ADBAC7;"> </span><span style="color:#F69D50;">HookEntry</span><span style="color:#F47067;">:</span><span style="color:#ADBAC7;"> </span><span style="color:#6CB6FF;">IYukiHookXposedInit</span></span>
|
|
<span class="line"></span></code></pre><div class="line-numbers" aria-hidden="true"><div class="line-number"></div><div class="line-number"></div></div></div><p>The Xposed entry class is handled as follows.</p><blockquote><p>The following example</p></blockquote><div class="language-kotlin ext-kt"><pre class="shiki" style="background-color:#22272e;"><code><span class="line"><span style="color:#F47067;">class</span><span style="color:#ADBAC7;"> </span><span style="color:#F69D50;">HookXposedEntry</span><span style="color:#F47067;">:</span><span style="color:#ADBAC7;"> </span><span style="color:#6CB6FF;">IXposedHookZygoteInit</span><span style="color:#ADBAC7;">, </span><span style="color:#F69D50;">IXposedHookLoadPackage</span><span style="color:#ADBAC7;">, ...</span></span>
|
|
<span class="line"></span></code></pre></div><p>The compiled class name structure is as follows.</p><blockquote><p>The following example</p></blockquote><div class="language-text ext-text"><pre class="shiki" style="background-color:#22272e;"><code><span class="line"><span style="color:#adbac7;">...hook.HookEntry \u2190 Your entry class</span></span>
|
|
<span class="line"><span style="color:#adbac7;">...hook.HookEntry_Impl \u2190 Auto-generated Impl class</span></span>
|
|
<span class="line"><span style="color:#adbac7;">...hook.HookXposedEntry \u2190 Automatically generated Xposed entry class</span></span>
|
|
<span class="line"><span style="color:#adbac7;"></span></span></code></pre></div><div class="custom-container danger"><p class="custom-container-title">Pay Attention</p><p>The <strong>entryClassName</strong> you define must not be the same as the class name in <strong>xposed_init</strong>, otherwise the automatic builder <u><strong>throws an exception at compile time</strong></u>.</p></div><h4 id="isusingresourceshook-parameter" tabindex="-1"><a class="header-anchor" href="#isusingresourceshook-parameter" aria-hidden="true">#</a> isUsingResourcesHook Parameter</h4><p><code>isUsingResourcesHook</code> determines whether the automatic builder generates relevant code for the Resources Hook, this feature is enabled by default.</p><p>The generated entry class after enabling it will look like the following.</p><blockquote><p>The following example</p></blockquote><div class="language-kotlin ext-kt"><pre class="shiki" style="background-color:#22272e;"><code><span class="line"><span style="color:#F47067;">class</span><span style="color:#ADBAC7;"> </span><span style="color:#F69D50;">_YukiHookXposedInit</span><span style="color:#ADBAC7;"> </span><span style="color:#F47067;">:</span><span style="color:#ADBAC7;"> </span><span style="color:#6CB6FF;">IXposedHookZygoteInit</span><span style="color:#ADBAC7;">, </span><span style="color:#F69D50;">IXposedHookLoadPackage</span><span style="color:#ADBAC7;">, </span><span style="color:#F69D50;">IXposedHookInitPackageResources</span><span style="color:#ADBAC7;"> {</span></span>
|
|
<span class="line"></span>
|
|
<span class="line"><span style="color:#ADBAC7;"> </span><span style="color:#F47067;">override</span><span style="color:#ADBAC7;"> </span><span style="color:#F47067;">fun</span><span style="color:#ADBAC7;"> </span><span style="color:#DCBDFB;">initZygote</span><span style="color:#ADBAC7;">(sparam</span><span style="color:#F47067;">:</span><span style="color:#ADBAC7;"> </span><span style="color:#F69D50;">IXposedHookZygoteInit.StartupParam?</span><span style="color:#ADBAC7;">) {</span></span>
|
|
<span class="line"><span style="color:#ADBAC7;"> </span><span style="color:#768390;">// ...</span></span>
|
|
<span class="line"><span style="color:#ADBAC7;"> }</span></span>
|
|
<span class="line"></span>
|
|
<span class="line"><span style="color:#ADBAC7;"> </span><span style="color:#F47067;">override</span><span style="color:#ADBAC7;"> </span><span style="color:#F47067;">fun</span><span style="color:#ADBAC7;"> </span><span style="color:#DCBDFB;">handleLoadPackage</span><span style="color:#ADBAC7;">(lpparam</span><span style="color:#F47067;">:</span><span style="color:#ADBAC7;"> </span><span style="color:#F69D50;">XC_LoadPackage.LoadPackageParam?</span><span style="color:#ADBAC7;">) {</span></span>
|
|
<span class="line"><span style="color:#ADBAC7;"> </span><span style="color:#768390;">// ...</span></span>
|
|
<span class="line"><span style="color:#ADBAC7;"> }</span></span>
|
|
<span class="line"></span>
|
|
<span class="line"><span style="color:#ADBAC7;"> </span><span style="color:#F47067;">override</span><span style="color:#ADBAC7;"> </span><span style="color:#F47067;">fun</span><span style="color:#ADBAC7;"> </span><span style="color:#DCBDFB;">handleInitPackageResources</span><span style="color:#ADBAC7;">(resparam</span><span style="color:#F47067;">:</span><span style="color:#ADBAC7;"> </span><span style="color:#F69D50;">XC_InitPackageResources.InitPackageResourcesParam?</span><span style="color:#ADBAC7;">) {</span></span>
|
|
<span class="line"><span style="color:#ADBAC7;"> </span><span style="color:#768390;">// ...</span></span>
|
|
<span class="line"><span style="color:#ADBAC7;"> }</span></span>
|
|
<span class="line"><span style="color:#ADBAC7;">}</span></span>
|
|
<span class="line"></span></code></pre></div><p>If your current project does not need to use Reources Hook, you can set <code>isUsingResourcesHook = false</code> to disable automatic generation.</p><blockquote><p>The following example</p></blockquote><div class="language-kotlin ext-kt line-numbers-mode"><pre class="shiki" style="background-color:#22272e;"><code><span class="line"><span style="color:#F47067;">@InjectYukiHookWithXposed</span><span style="color:#ADBAC7;">(</span><span style="color:#6CB6FF;">isUsingResourcesHook</span><span style="color:#ADBAC7;"> </span><span style="color:#F47067;">=</span><span style="color:#ADBAC7;"> </span><span style="color:#6CB6FF;">false</span><span style="color:#ADBAC7;">)</span></span>
|
|
<span class="line"></span></code></pre><div class="line-numbers" aria-hidden="true"><div class="line-number"></div></div></div><p>The resulting entry class after closing will look like the following.</p><blockquote><p>The following example</p></blockquote><div class="language-kotlin ext-kt"><pre class="shiki" style="background-color:#22272e;"><code><span class="line"><span style="color:#F47067;">class</span><span style="color:#ADBAC7;"> </span><span style="color:#F69D50;">_YukiHookXposedInit</span><span style="color:#ADBAC7;"> </span><span style="color:#F47067;">:</span><span style="color:#ADBAC7;"> </span><span style="color:#6CB6FF;">IXposedHookZygoteInit</span><span style="color:#ADBAC7;">, </span><span style="color:#F69D50;">IXposedHookLoadPackage</span><span style="color:#ADBAC7;"> {</span></span>
|
|
<span class="line"></span>
|
|
<span class="line"><span style="color:#ADBAC7;"> </span><span style="color:#F47067;">override</span><span style="color:#ADBAC7;"> </span><span style="color:#F47067;">fun</span><span style="color:#ADBAC7;"> </span><span style="color:#DCBDFB;">initZygote</span><span style="color:#ADBAC7;">(sparam</span><span style="color:#F47067;">:</span><span style="color:#ADBAC7;"> </span><span style="color:#F69D50;">IXposedHookZygoteInit.StartupParam?</span><span style="color:#ADBAC7;">) {</span></span>
|
|
<span class="line"><span style="color:#ADBAC7;"> </span><span style="color:#768390;">// ...</span></span>
|
|
<span class="line"><span style="color:#ADBAC7;"> }</span></span>
|
|
<span class="line"></span>
|
|
<span class="line"><span style="color:#ADBAC7;"> </span><span style="color:#F47067;">override</span><span style="color:#ADBAC7;"> </span><span style="color:#F47067;">fun</span><span style="color:#ADBAC7;"> </span><span style="color:#DCBDFB;">handleLoadPackage</span><span style="color:#ADBAC7;">(lpparam</span><span style="color:#F47067;">:</span><span style="color:#ADBAC7;"> </span><span style="color:#F69D50;">XC_LoadPackage.LoadPackageParam?</span><span style="color:#ADBAC7;">) {</span></span>
|
|
<span class="line"><span style="color:#ADBAC7;"> </span><span style="color:#768390;">// ...</span></span>
|
|
<span class="line"><span style="color:#ADBAC7;"> }</span></span>
|
|
<span class="line"><span style="color:#ADBAC7;">}</span></span>
|
|
<span class="line"></span></code></pre></div><h3 id="iyukihookxposedinit-interface" tabindex="-1"><a class="header-anchor" href="#iyukihookxposedinit-interface" aria-hidden="true">#</a> IYukiHookXposedInit Interface</h3><p>The <code>IYukiHookXposedInit</code> interface that your <code>HookEntryClass</code> must implements it, which is the entry point for your Module App to start hooking.</p><div class="custom-container tip"><p class="custom-container-title">Tips</p><p>For more functions, please refer to <a href="../api/public/com/highcapable/yukihookapi/hook/xposed/proxy/IYukiHookXposedInit">IYukiHookXposedInit</a>.</p></div><p>When your Module App is loaded by Xposed, the <code>onHook</code> method will be called back, you need to start using <code>YukiHookAPI</code> in this method.</p><blockquote><p>The basic calling process is <code>_YukiHookXposedInit</code> \u2192 <code>IYukiHookXposedInit.onXposedEvent</code> \u2192 <code>IYukiHookXposedInit.onInit</code> \u2192 <code>IYukiHookXposedInit.onHook</code></p></blockquote><p>For details, please refer to <a href="../config/api-example">API Basic Configs</a>.</p><h2 id="native-xposed-api-events" tabindex="-1"><a class="header-anchor" href="#native-xposed-api-events" aria-hidden="true">#</a> Native Xposed API Events</h2><p>If your current Xposed Module uses third-party resources, but may not be able to transfer them in a short time, you can use <code>onXposedEvent</code> to monitor all loading events of the native Xposed API.</p><blockquote><p>The following example</p></blockquote><div class="language-kotlin ext-kt line-numbers-mode"><pre class="shiki" style="background-color:#22272e;"><code><span class="line"><span style="color:#F47067;">@InjectYukiHookWithXposed</span></span>
|
|
<span class="line"><span style="color:#F47067;">class</span><span style="color:#ADBAC7;"> </span><span style="color:#F69D50;">HookEntry</span><span style="color:#F47067;">:</span><span style="color:#ADBAC7;"> </span><span style="color:#6CB6FF;">IYukiHookXposedInit</span><span style="color:#ADBAC7;"> {</span></span>
|
|
<span class="line"></span>
|
|
<span class="line"><span style="color:#ADBAC7;"> </span><span style="color:#F47067;">override</span><span style="color:#ADBAC7;"> </span><span style="color:#F47067;">fun</span><span style="color:#ADBAC7;"> </span><span style="color:#DCBDFB;">onHook</span><span style="color:#ADBAC7;">() {</span></span>
|
|
<span class="line"><span style="color:#ADBAC7;"> </span><span style="color:#768390;">// Your code here.</span></span>
|
|
<span class="line"><span style="color:#ADBAC7;"> }</span></span>
|
|
<span class="line"></span>
|
|
<span class="line"><span style="color:#ADBAC7;"> </span><span style="color:#F47067;">override</span><span style="color:#ADBAC7;"> </span><span style="color:#F47067;">fun</span><span style="color:#ADBAC7;"> </span><span style="color:#DCBDFB;">onXposedEvent</span><span style="color:#ADBAC7;">() {</span></span>
|
|
<span class="line"><span style="color:#ADBAC7;"> </span><span style="color:#768390;">// Listen to the loading events of the native Xposed API</span></span>
|
|
<span class="line"><span style="color:#ADBAC7;"> </span><span style="color:#F69D50;">YukiXposedEvent</span><span style="color:#ADBAC7;">.events {</span></span>
|
|
<span class="line"><span style="color:#ADBAC7;"> onInitZygote {</span></span>
|
|
<span class="line"><span style="color:#ADBAC7;"> </span><span style="color:#768390;">// The it object is [StartupParam]</span></span>
|
|
<span class="line"><span style="color:#ADBAC7;"> }</span></span>
|
|
<span class="line"><span style="color:#ADBAC7;"> onHandleLoadPackage {</span></span>
|
|
<span class="line"><span style="color:#ADBAC7;"> </span><span style="color:#768390;">// The it object is [LoadPackageParam]</span></span>
|
|
<span class="line"><span style="color:#ADBAC7;"> }</span></span>
|
|
<span class="line"><span style="color:#ADBAC7;"> onHandleInitPackageResources {</span></span>
|
|
<span class="line"><span style="color:#ADBAC7;"> </span><span style="color:#768390;">// The it object is [InitPackageResourcesParam]</span></span>
|
|
<span class="line"><span style="color:#ADBAC7;"> }</span></span>
|
|
<span class="line"><span style="color:#ADBAC7;"> }</span></span>
|
|
<span class="line"><span style="color:#ADBAC7;"> }</span></span>
|
|
<span class="line"><span style="color:#ADBAC7;">}</span></span>
|
|
<span class="line"></span></code></pre><div class="line-numbers" aria-hidden="true"><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div></div></div><p><code>onXposedEvent</code> and <code>onHook</code> methods exist completely independently and do not affect each other. You can continue to use <code>YukiHookAPI</code> in the <code>onHook</code> method.</p><div class="custom-container tip"><p class="custom-container-title">Tips</p><p>For more functions, please refer to the <a href="../api/public/com/highcapable/yukihookapi/hook/xposed/proxy/IYukiHookXposedInit#onxposedevent-method">IYukiHookXposedInit.onXposedEvent</a> method.</p></div>`,82),p=[l];function t(c,r){return e(),a("div",null,p)}const d=s(o,[["render",t],["__file","xposed-using.html.vue"]]);export{d as default};
|