mirror of
https://github.com/HighCapable/YukiHookAPI.git
synced 2025-09-04 09:45:19 +08:00
171 lines
44 KiB
JavaScript
171 lines
44 KiB
JavaScript
import{_ as o,r as p,o as i,c as t,b as n,d as s,e,a as l}from"./app-BpUB8-Q8.js";const r={},c=l('<h1 id="quick-start" tabindex="-1"><a class="header-anchor" href="#quick-start" aria-hidden="true">#</a> Quick Start</h1><blockquote><p>Integrate <code>YukiHookAPI</code> into your project.</p></blockquote><h2 id="project-requirements" tabindex="-1"><a class="header-anchor" href="#project-requirements" aria-hidden="true">#</a> Project Requirements</h2><p>The project needs to be created using <code>Android Studio</code> or <code>IntelliJ IDEA</code> and be of type Android project and have integrated Kotlin environment dependencies.</p>',4),d={href:"https://developer.android.com/studio",target:"_blank",rel:"noopener noreferrer"},u={href:"https://www.jetbrains.com/idea",target:"_blank",rel:"noopener noreferrer"},y=n("li",null,[n("p",null,"Kotlin 1.9.0+, Gradle 8+, Java 11, 17+, Android Gradle Plugin 8+")],-1),A=l('<h2 id="automatically-build-project" tabindex="-1"><a class="header-anchor" href="#automatically-build-project" aria-hidden="true">#</a> Automatically Build Project</h2><p><code>YukiHookAPI</code> provides an automated build tool that can help you quickly build an Android standard project template with Xposed Module dependencies, and use the built template to start the next step directly.</p><p>You can <a href="../tools/yukihookapi-projectbuilder">click here</a> to check it out.</p><h2 id="manually-configure-project" tabindex="-1"><a class="header-anchor" href="#manually-configure-project" aria-hidden="true">#</a> Manually Configure Project</h2><p>If you don't want to use automated build tools, you can still manually configure project dependencies as follows.</p><h3 id="create-project" tabindex="-1"><a class="header-anchor" href="#create-project" aria-hidden="true">#</a> Create Project</h3><p>Use <code>Android Studio</code> or <code>IntelliJ IDEA</code> to create a new Android project and select Kotlin in the <code>Language</code> column to automatically add basic dependencies.</p><h3 id="integration-dependencies" tabindex="-1"><a class="header-anchor" href="#integration-dependencies" aria-hidden="true">#</a> Integration Dependencies</h3>',8),v={href:"https://github.com/HighCapable/SweetDependency",target:"_blank",rel:"noopener noreferrer"},D=l(`<h4 id="sweetdependency-recommended" tabindex="-1"><a class="header-anchor" href="#sweetdependency-recommended" aria-hidden="true">#</a> SweetDependency (Recommended)</h4><p>Add the repositories and dependencies in your project's <code>SweetDependency</code> configuration file.</p><blockquote><p>The following example</p></blockquote><div class="language-yaml line-numbers-mode" data-ext="yml"><pre class="shiki github-dark-dimmed" style="background-color:#22272e;" tabindex="0"><code><span class="line"><span style="color:#8DDB8C;">repositories</span><span style="color:#ADBAC7;">:</span></span>
|
|
<span class="line"><span style="color:#ADBAC7;"> </span><span style="color:#768390;"># Must be added when used as an Xposed Module, otherwise optional</span></span>
|
|
<span class="line"><span style="color:#ADBAC7;"> </span><span style="color:#8DDB8C;">rovo89-xposed-api</span><span style="color:#ADBAC7;">:</span></span>
|
|
<span class="line"><span style="color:#ADBAC7;"> </span><span style="color:#8DDB8C;">url</span><span style="color:#ADBAC7;">: </span><span style="color:#96D0FF;">https://api.xposed.info/</span></span>
|
|
<span class="line"></span>
|
|
<span class="line"><span style="color:#8DDB8C;">plugins</span><span style="color:#ADBAC7;">:</span></span>
|
|
<span class="line"><span style="color:#ADBAC7;"> </span><span style="color:#768390;"># Must be added when used as an Xposed Module, otherwise optional</span></span>
|
|
<span class="line"><span style="color:#ADBAC7;"> </span><span style="color:#8DDB8C;">com.google.devtools.ksp</span><span style="color:#ADBAC7;">:</span></span>
|
|
<span class="line"><span style="color:#ADBAC7;"> </span><span style="color:#8DDB8C;">version</span><span style="color:#ADBAC7;">: </span><span style="color:#96D0FF;">+</span></span>
|
|
<span class="line"><span style="color:#ADBAC7;"> </span><span style="color:#6CB6FF;">...</span></span>
|
|
<span class="line"></span>
|
|
<span class="line"><span style="color:#8DDB8C;">libraries</span><span style="color:#ADBAC7;">:</span></span>
|
|
<span class="line"><span style="color:#ADBAC7;"> </span><span style="color:#768390;"># Must be added when used as an Xposed Module, otherwise optional</span></span>
|
|
<span class="line"><span style="color:#ADBAC7;"> </span><span style="color:#8DDB8C;">de.robv.android.xposed</span><span style="color:#ADBAC7;">:</span></span>
|
|
<span class="line"><span style="color:#ADBAC7;"> </span><span style="color:#8DDB8C;">api</span><span style="color:#ADBAC7;">:</span></span>
|
|
<span class="line"><span style="color:#ADBAC7;"> </span><span style="color:#8DDB8C;">version</span><span style="color:#ADBAC7;">: </span><span style="color:#6CB6FF;">82</span></span>
|
|
<span class="line"><span style="color:#ADBAC7;"> </span><span style="color:#8DDB8C;">repositories</span><span style="color:#ADBAC7;">:</span></span>
|
|
<span class="line"><span style="color:#ADBAC7;"> </span><span style="color:#96D0FF;">rovo89-xposed-api</span></span>
|
|
<span class="line"><span style="color:#ADBAC7;"> </span><span style="color:#8DDB8C;">com.highcapable.yukihookapi</span><span style="color:#ADBAC7;">:</span></span>
|
|
<span class="line"><span style="color:#ADBAC7;"> </span><span style="color:#8DDB8C;">api</span><span style="color:#ADBAC7;">:</span></span>
|
|
<span class="line"><span style="color:#ADBAC7;"> </span><span style="color:#8DDB8C;">version</span><span style="color:#ADBAC7;">: </span><span style="color:#96D0FF;">+</span></span>
|
|
<span class="line"><span style="color:#ADBAC7;"> </span><span style="color:#768390;"># Must be added when used as an Xposed Module, otherwise optional</span></span>
|
|
<span class="line"><span style="color:#ADBAC7;"> </span><span style="color:#8DDB8C;">ksp-xposed</span><span style="color:#ADBAC7;">:</span></span>
|
|
<span class="line"><span style="color:#ADBAC7;"> </span><span style="color:#8DDB8C;">version-ref</span><span style="color:#ADBAC7;">: </span><span style="color:#96D0FF;"><this>::api</span></span>
|
|
<span class="line"><span style="color:#ADBAC7;"> </span><span style="color:#768390;"># YukiHookAPI version 1.3.0 uses KavaRef as core reflection API</span></span>
|
|
<span class="line"><span style="color:#ADBAC7;"> </span><span style="color:#768390;"># YukiHookAPI no longer binds its own reflection API, you can start trying to use KavaRef</span></span>
|
|
<span class="line"><span style="color:#ADBAC7;"> </span><span style="color:#8DDB8C;">com.highcapable.kavaref</span><span style="color:#ADBAC7;">:</span></span>
|
|
<span class="line"><span style="color:#ADBAC7;"> </span><span style="color:#8DDB8C;">kavaref-core</span><span style="color:#ADBAC7;">:</span></span>
|
|
<span class="line"><span style="color:#ADBAC7;"> </span><span style="color:#8DDB8C;">version</span><span style="color:#ADBAC7;">: </span><span style="color:#96D0FF;">+</span></span>
|
|
<span class="line"><span style="color:#ADBAC7;"> </span><span style="color:#8DDB8C;">kavaref-extension</span><span style="color:#ADBAC7;">:</span></span>
|
|
<span class="line"><span style="color:#ADBAC7;"> </span><span style="color:#8DDB8C;">version</span><span style="color:#ADBAC7;">: </span><span style="color:#96D0FF;">+</span></span>
|
|
<span class="line"><span style="color:#ADBAC7;"> </span><span style="color:#6CB6FF;">...</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 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>After adding it, run Gradle Sync and all dependencies will be autowired.</p><p>Next, deploy plugins in your project's <code>build.gradle.kts</code>.</p><blockquote><p>The following example</p></blockquote><div class="language-kotlin line-numbers-mode" data-ext="kt"><pre class="shiki github-dark-dimmed" style="background-color:#22272e;" tabindex="0"><code><span class="line"><span style="color:#DCBDFB;">plugins</span><span style="color:#ADBAC7;"> {</span></span>
|
|
<span class="line"><span style="color:#ADBAC7;"> </span><span style="color:#768390;">// Must be added when used as an Xposed Module, otherwise optional</span></span>
|
|
<span class="line"><span style="color:#ADBAC7;"> </span><span style="color:#DCBDFB;">autowire</span><span style="color:#ADBAC7;">(libs.plugins.com.google.devtools.ksp)</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></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></div><p>Then, deploy dependencies in your project's <code>build.gradle.kts</code>.</p><blockquote><p>The following example</p></blockquote><div class="language-kotlin line-numbers-mode" data-ext="kt"><pre class="shiki github-dark-dimmed" style="background-color:#22272e;" tabindex="0"><code><span class="line"><span style="color:#DCBDFB;">dependencies</span><span style="color:#ADBAC7;"> {</span></span>
|
|
<span class="line"><span style="color:#ADBAC7;"> </span><span style="color:#768390;">// Basic dependencies</span></span>
|
|
<span class="line"><span style="color:#ADBAC7;"> </span><span style="color:#DCBDFB;">implementation</span><span style="color:#ADBAC7;">(com.highcapable.yukihookapi.api)</span></span>
|
|
<span class="line"><span style="color:#ADBAC7;"> </span><span style="color:#768390;">// It is recommended to use KavaRef as the core reflection API</span></span>
|
|
<span class="line"><span style="color:#ADBAC7;"> </span><span style="color:#DCBDFB;">implementation</span><span style="color:#ADBAC7;">(com.highcapable.kavaref.kavaref.core)</span></span>
|
|
<span class="line"><span style="color:#ADBAC7;"> </span><span style="color:#DCBDFB;">implementation</span><span style="color:#ADBAC7;">(com.highcapable.kavaref.kavaref.extension)</span></span>
|
|
<span class="line"><span style="color:#ADBAC7;"> </span><span style="color:#768390;">// Must be added when used as an Xposed Module, otherwise optional</span></span>
|
|
<span class="line"><span style="color:#ADBAC7;"> </span><span style="color:#DCBDFB;">compileOnly</span><span style="color:#ADBAC7;">(de.robv.android.xposed.api)</span></span>
|
|
<span class="line"><span style="color:#ADBAC7;"> </span><span style="color:#768390;">// Must be added when used as an Xposed Module, otherwise optional</span></span>
|
|
<span class="line"><span style="color:#ADBAC7;"> </span><span style="color:#DCBDFB;">ksp</span><span style="color:#ADBAC7;">(com.highcapable.yukihookapi.ksp.xposed)</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></div><h4 id="version-catalog" tabindex="-1"><a class="header-anchor" href="#version-catalog" aria-hidden="true">#</a> Version Catalog</h4><p>Add repositories in your project's <code>build.gradle.kts</code>.</p><blockquote><p>Kotlin DSL</p></blockquote><div class="language-kotlin line-numbers-mode" data-ext="kt"><pre class="shiki github-dark-dimmed" style="background-color:#22272e;" tabindex="0"><code><span class="line"><span style="color:#DCBDFB;">repositories</span><span style="color:#ADBAC7;"> {</span></span>
|
|
<span class="line"><span style="color:#ADBAC7;"> </span><span style="color:#DCBDFB;">google</span><span style="color:#ADBAC7;">()</span></span>
|
|
<span class="line"><span style="color:#ADBAC7;"> </span><span style="color:#DCBDFB;">mavenCentral</span><span style="color:#ADBAC7;">()</span></span>
|
|
<span class="line"><span style="color:#ADBAC7;"> </span><span style="color:#768390;">// Must be added when used as an Xposed Module, otherwise optional </span></span>
|
|
<span class="line"><span style="color:#ADBAC7;"> </span><span style="color:#DCBDFB;">maven</span><span style="color:#ADBAC7;">(</span><span style="color:#96D0FF;">"https://api.xposed.info/"</span><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></div><p>Add dependency in your project's <code>gradle/libs.versions.toml</code>.</p><blockquote><p>The following example</p></blockquote><div class="language-toml line-numbers-mode" data-ext="toml"><pre class="shiki github-dark-dimmed" style="background-color:#22272e;" tabindex="0"><code><span class="line"><span style="color:#ADBAC7;">[</span><span style="color:#F69D50;">versions</span><span style="color:#ADBAC7;">]</span></span>
|
|
<span class="line"><span style="color:#ADBAC7;">yukihookapi = </span><span style="color:#96D0FF;">"<yuki-version>"</span></span>
|
|
<span class="line"><span style="color:#ADBAC7;">ksp = </span><span style="color:#96D0FF;">"<ksp-version>"</span></span>
|
|
<span class="line"><span style="color:#ADBAC7;">kavaref-core = </span><span style="color:#96D0FF;">"<kavaref-version>"</span></span>
|
|
<span class="line"><span style="color:#ADBAC7;">kavaref-extension = </span><span style="color:#96D0FF;">"<kavaref-version>"</span></span>
|
|
<span class="line"></span>
|
|
<span class="line"><span style="color:#ADBAC7;">[</span><span style="color:#F69D50;">plugins</span><span style="color:#ADBAC7;">]</span></span>
|
|
<span class="line"><span style="color:#768390;"># Must be added when used as an Xposed Module, otherwise optional</span></span>
|
|
<span class="line"><span style="color:#ADBAC7;">ksp = { id = </span><span style="color:#96D0FF;">"com.google.devtools.ksp"</span><span style="color:#ADBAC7;">, version.ref = </span><span style="color:#96D0FF;">"ksp"</span><span style="color:#ADBAC7;"> }</span></span>
|
|
<span class="line"></span>
|
|
<span class="line"><span style="color:#ADBAC7;">[</span><span style="color:#F69D50;">libraries</span><span style="color:#ADBAC7;">]</span></span>
|
|
<span class="line"><span style="color:#ADBAC7;">yukihookapi-api = { module = </span><span style="color:#96D0FF;">"com.highcapable.yukihookapi:api"</span><span style="color:#ADBAC7;">, version.ref = </span><span style="color:#96D0FF;">"yukihookapi"</span><span style="color:#ADBAC7;"> }</span></span>
|
|
<span class="line"><span style="color:#768390;"># Must be added when used as an Xposed Module, otherwise optional</span></span>
|
|
<span class="line"><span style="color:#ADBAC7;">yukihookapi-ksp-xposed = { module = </span><span style="color:#96D0FF;">"com.highcapable.yukihookapi:ksp-xposed"</span><span style="color:#ADBAC7;">, version.ref = </span><span style="color:#96D0FF;">"yukihookapi"</span><span style="color:#ADBAC7;"> }</span></span>
|
|
<span class="line"><span style="color:#768390;"># YukiHookAPI version 1.3.0 uses KavaRef as core reflection API</span></span>
|
|
<span class="line"><span style="color:#768390;"># YukiHookAPI no longer binds its own reflection API, you can start trying to use KavaRef</span></span>
|
|
<span class="line"><span style="color:#ADBAC7;">kavaref-core = { module = </span><span style="color:#96D0FF;">"com.highcapable.kavaref:kavaref-core"</span><span style="color:#ADBAC7;">, version.ref = </span><span style="color:#96D0FF;">"kavaref-core"</span><span style="color:#ADBAC7;"> }</span></span>
|
|
<span class="line"><span style="color:#ADBAC7;">kavaref-extension = { module = </span><span style="color:#96D0FF;">"com.highcapable.kavaref:kavaref-extension"</span><span style="color:#ADBAC7;">, version.ref = </span><span style="color:#96D0FF;">"kavaref-extension"</span><span style="color:#ADBAC7;"> }</span></span>
|
|
<span class="line"><span style="color:#768390;"># Must be added when used as an Xposed Module, otherwise optional</span></span>
|
|
<span class="line"><span style="color:#ADBAC7;">xposed-api = { module = </span><span style="color:#96D0FF;">"de.robv.android.xposed:api"</span><span style="color:#ADBAC7;">, version = </span><span style="color:#96D0FF;">"82"</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 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>Next, deploy plugins in your project's <code>build.gradle.kts</code>.</p><blockquote><p>Kotlin DSL</p></blockquote><div class="language-kotlin line-numbers-mode" data-ext="kt"><pre class="shiki github-dark-dimmed" style="background-color:#22272e;" tabindex="0"><code><span class="line"><span style="color:#DCBDFB;">plugins</span><span style="color:#ADBAC7;"> {</span></span>
|
|
<span class="line"><span style="color:#ADBAC7;"> </span><span style="color:#768390;">// Must be added when used as an Xposed Module, otherwise optional</span></span>
|
|
<span class="line"><span style="color:#ADBAC7;"> </span><span style="color:#DCBDFB;">alias</span><span style="color:#ADBAC7;">(libs.plugins.ksp)</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></div><p>Then, deploy dependencies in your project's <code>build.gradle.kts</code>.</p><blockquote><p>Kotlin DSL</p></blockquote><div class="language-kotlin line-numbers-mode" data-ext="kt"><pre class="shiki github-dark-dimmed" style="background-color:#22272e;" tabindex="0"><code><span class="line"><span style="color:#DCBDFB;">dependencies</span><span style="color:#ADBAC7;"> {</span></span>
|
|
<span class="line"><span style="color:#ADBAC7;"> </span><span style="color:#768390;">// Basic dependency</span></span>
|
|
<span class="line"><span style="color:#ADBAC7;"> </span><span style="color:#DCBDFB;">implementation</span><span style="color:#ADBAC7;">(libs.yukihookapi.api)</span></span>
|
|
<span class="line"><span style="color:#ADBAC7;"> </span><span style="color:#768390;">// It is recommended to use KavaRef as the core reflection API</span></span>
|
|
<span class="line"><span style="color:#ADBAC7;"> </span><span style="color:#DCBDFB;">implementation</span><span style="color:#ADBAC7;">(libs.kavaref.core)</span></span>
|
|
<span class="line"><span style="color:#ADBAC7;"> </span><span style="color:#DCBDFB;">implementation</span><span style="color:#ADBAC7;">(libs.kavaref.extension)</span></span>
|
|
<span class="line"><span style="color:#ADBAC7;"> </span><span style="color:#768390;">// Must be added when used as an Xposed Module, otherwise optional</span></span>
|
|
<span class="line"><span style="color:#ADBAC7;"> </span><span style="color:#DCBDFB;">compileOnly</span><span style="color:#ADBAC7;">(libs.xposed.api)</span></span>
|
|
<span class="line"><span style="color:#ADBAC7;"> </span><span style="color:#768390;">// Must be added when used as an Xposed Module, otherwise optional</span></span>
|
|
<span class="line"><span style="color:#ADBAC7;"> </span><span style="color:#DCBDFB;">ksp</span><span style="color:#ADBAC7;">(libs.yukihookapi.ksp.xposed)</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></div><h4 id="traditional-method" tabindex="-1"><a class="header-anchor" href="#traditional-method" aria-hidden="true">#</a> Traditional Method</h4><p>Add repositories in your project's <code>build.gradle.kts</code>.</p><blockquote><p>Kotlin DSL</p></blockquote><div class="language-kotlin line-numbers-mode" data-ext="kt"><pre class="shiki github-dark-dimmed" style="background-color:#22272e;" tabindex="0"><code><span class="line"><span style="color:#DCBDFB;">repositories</span><span style="color:#ADBAC7;"> {</span></span>
|
|
<span class="line"><span style="color:#ADBAC7;"> </span><span style="color:#DCBDFB;">google</span><span style="color:#ADBAC7;">()</span></span>
|
|
<span class="line"><span style="color:#ADBAC7;"> </span><span style="color:#DCBDFB;">mavenCentral</span><span style="color:#ADBAC7;">()</span></span>
|
|
<span class="line"><span style="color:#ADBAC7;"> </span><span style="color:#768390;">// Must be added when used as an Xposed Module, otherwise optional</span></span>
|
|
<span class="line"><span style="color:#ADBAC7;"> </span><span style="color:#DCBDFB;">maven</span><span style="color:#ADBAC7;">(</span><span style="color:#96D0FF;">"https://api.xposed.info/"</span><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></div><p>Add plugins in your project's <code>build.gradle.kts</code>.</p><blockquote><p>Kotlin DSL</p></blockquote><div class="language-kotlin line-numbers-mode" data-ext="kt"><pre class="shiki github-dark-dimmed" style="background-color:#22272e;" tabindex="0"><code><span class="line"><span style="color:#DCBDFB;">plugins</span><span style="color:#ADBAC7;"> {</span></span>
|
|
<span class="line"><span style="color:#ADBAC7;"> </span><span style="color:#768390;">// Must be added when used as an Xposed Module, otherwise optional</span></span>
|
|
<span class="line"><span style="color:#ADBAC7;"> </span><span style="color:#DCBDFB;">id</span><span style="color:#ADBAC7;">(</span><span style="color:#96D0FF;">"com.google.devtools.ksp"</span><span style="color:#ADBAC7;">) version </span><span style="color:#96D0FF;">"<ksp-version>"</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></div><p>Add dependencies in your project's <code>build.gradle.kts</code>.</p><blockquote><p>Kotlin DSL</p></blockquote><div class="language-kotlin line-numbers-mode" data-ext="kt"><pre class="shiki github-dark-dimmed" style="background-color:#22272e;" tabindex="0"><code><span class="line"><span style="color:#DCBDFB;">dependencies</span><span style="color:#ADBAC7;"> {</span></span>
|
|
<span class="line"><span style="color:#ADBAC7;"> </span><span style="color:#768390;">// Basic dependency</span></span>
|
|
<span class="line"><span style="color:#ADBAC7;"> </span><span style="color:#DCBDFB;">implementation</span><span style="color:#ADBAC7;">(</span><span style="color:#96D0FF;">"com.highcapable.yukihookapi:api:<yuki-version>"</span><span style="color:#ADBAC7;">)</span></span>
|
|
<span class="line"><span style="color:#ADBAC7;"> </span><span style="color:#768390;">// It is recommended to use KavaRef as the core reflection API</span></span>
|
|
<span class="line"><span style="color:#ADBAC7;"> </span><span style="color:#DCBDFB;">implementation</span><span style="color:#ADBAC7;">(</span><span style="color:#96D0FF;">"com.highcapable.kavaref:kavaref-core:<kavaref-version>"</span><span style="color:#ADBAC7;">)</span></span>
|
|
<span class="line"><span style="color:#ADBAC7;"> </span><span style="color:#DCBDFB;">implementation</span><span style="color:#ADBAC7;">(</span><span style="color:#96D0FF;">"com.highcapable.kavaref:kavaref-extension:<kavaref-version>"</span><span style="color:#ADBAC7;">)</span></span>
|
|
<span class="line"><span style="color:#ADBAC7;"> </span><span style="color:#768390;">// Must be added when used as an Xposed Module, otherwise optional</span></span>
|
|
<span class="line"><span style="color:#ADBAC7;"> </span><span style="color:#DCBDFB;">compileOnly</span><span style="color:#ADBAC7;">(</span><span style="color:#96D0FF;">"de.robv.android.xposed:api:82"</span><span style="color:#ADBAC7;">)</span></span>
|
|
<span class="line"><span style="color:#ADBAC7;"> </span><span style="color:#768390;">// Must be added when used as an Xposed Module, otherwise optional</span></span>
|
|
<span class="line"><span style="color:#ADBAC7;"> </span><span style="color:#DCBDFB;">ksp</span><span style="color:#ADBAC7;">(</span><span style="color:#96D0FF;">"com.highcapable.yukihookapi:ksp-xposed:<yuki-version>"</span><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></div>`,34),m=n("strong",null,"<ksp-version>",-1),b={href:"https://github.com/google/ksp/releases",target:"_blank",rel:"noopener noreferrer"},B=n("strong",null,"(please note to select your current corresponding Kotlin version)",-1),C=n("p",null,[s("Please change "),n("strong",null,"<yuki-version>"),s(" to the latest version "),n("a",{href:"../about/changelog"},"here"),s(".")],-1),h=n("strong",null,"<kavaref-version>",-1),k={href:"https://highcapable.github.io/KavaRef/en/about/changelog",target:"_blank",rel:"noopener noreferrer"},g=l(`<div class="custom-container danger"><p class="custom-container-title">Pay Attention</p><p>The <strong>api</strong> and <strong>ksp-xposed</strong> dependency versions of <strong>YukiHookAPI</strong> must correspond one-to-one, otherwise a version mismatch error will occur.</p></div><h4 id="configure-java-version" tabindex="-1"><a class="header-anchor" href="#configure-java-version" aria-hidden="true">#</a> Configure Java Version</h4><p>Modify the Java version of Kotlin in your project <code>build.gradle.kts</code> or <code>build.gradle</code> to 17 or above.</p><blockquote><p>Kotlin DSL</p></blockquote><div class="language-kotlin line-numbers-mode" data-ext="kt"><pre class="shiki github-dark-dimmed" style="background-color:#22272e;" tabindex="0"><code><span class="line"><span style="color:#DCBDFB;">android</span><span style="color:#ADBAC7;"> {</span></span>
|
|
<span class="line"><span style="color:#ADBAC7;"> </span><span style="color:#DCBDFB;">compileOptions</span><span style="color:#ADBAC7;"> {</span></span>
|
|
<span class="line"><span style="color:#ADBAC7;"> sourceCompatibility </span><span style="color:#F47067;">=</span><span style="color:#ADBAC7;"> JavaVersion.VERSION_17</span></span>
|
|
<span class="line"><span style="color:#ADBAC7;"> targetCompatibility </span><span style="color:#F47067;">=</span><span style="color:#ADBAC7;"> JavaVersion.VERSION_17</span></span>
|
|
<span class="line"><span style="color:#ADBAC7;"> }</span></span>
|
|
<span class="line"><span style="color:#ADBAC7;"> </span><span style="color:#DCBDFB;">kotlinOptions</span><span style="color:#ADBAC7;"> {</span></span>
|
|
<span class="line"><span style="color:#ADBAC7;"> jvmTarget </span><span style="color:#F47067;">=</span><span style="color:#ADBAC7;"> </span><span style="color:#96D0FF;">"17"</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></div><blockquote><p>Groovy DSL</p></blockquote><div class="language-groovy line-numbers-mode" data-ext="groovy"><pre class="shiki github-dark-dimmed" style="background-color:#22272e;" tabindex="0"><code><span class="line"><span style="color:#ADBAC7;">android {</span></span>
|
|
<span class="line"><span style="color:#ADBAC7;"> compileOptions {</span></span>
|
|
<span class="line"><span style="color:#ADBAC7;"> sourceCompatibility </span><span style="color:#F47067;">JavaVersion.</span><span style="color:#6CB6FF;">VERSION_17</span></span>
|
|
<span class="line"><span style="color:#ADBAC7;"> targetCompatibility </span><span style="color:#F47067;">JavaVersion.</span><span style="color:#6CB6FF;">VERSION_17</span></span>
|
|
<span class="line"><span style="color:#ADBAC7;"> }</span></span>
|
|
<span class="line"><span style="color:#ADBAC7;"> kotlinOptions {</span></span>
|
|
<span class="line"><span style="color:#ADBAC7;"> jvmTarget </span><span style="color:#F47067;">=</span><span style="color:#ADBAC7;"> </span><span style="color:#96D0FF;">'17'</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></div><div class="custom-container warning"><p class="custom-container-title">Notice</p><p>Since API <strong>1.0.80</strong>, the Java version used by Kotlin defaults to 11, and versions 1.8 and below are no longer supported.</p><p>Since API <strong>1.2.0</strong>, the Java version used by Kotlin defaults to 17, and versions 11 and below are no longer supported.</p></div><h3 id="use-as-xposed-module" tabindex="-1"><a class="header-anchor" href="#use-as-xposed-module" aria-hidden="true">#</a> Use as Xposed Module</h3><p>Add the base code to your <code>AndroidManifest.xml</code>.</p><blockquote><p>The following example</p></blockquote><div class="language-xml line-numbers-mode" data-ext="xml"><pre class="shiki github-dark-dimmed" style="background-color:#22272e;" tabindex="0"><code><span class="line"><span style="color:#768390;"><!-- Set as Xposed Module --></span></span>
|
|
<span class="line"><span style="color:#ADBAC7;"><</span><span style="color:#8DDB8C;">meta-data</span></span>
|
|
<span class="line"><span style="color:#ADBAC7;"> </span><span style="color:#6CB6FF;">android:name</span><span style="color:#ADBAC7;">=</span><span style="color:#96D0FF;">"xposedmodule"</span></span>
|
|
<span class="line"><span style="color:#ADBAC7;"> </span><span style="color:#6CB6FF;">android:value</span><span style="color:#ADBAC7;">=</span><span style="color:#96D0FF;">"true"</span><span style="color:#ADBAC7;"> /></span></span>
|
|
<span class="line"></span>
|
|
<span class="line"><span style="color:#768390;"><!-- Set your Xposed Module description --></span></span>
|
|
<span class="line"><span style="color:#ADBAC7;"><</span><span style="color:#8DDB8C;">meta-data</span></span>
|
|
<span class="line"><span style="color:#ADBAC7;"> </span><span style="color:#6CB6FF;">android:name</span><span style="color:#ADBAC7;">=</span><span style="color:#96D0FF;">"xposeddescription"</span></span>
|
|
<span class="line"><span style="color:#ADBAC7;"> </span><span style="color:#6CB6FF;">android:value</span><span style="color:#ADBAC7;">=</span><span style="color:#96D0FF;">"Fill in your Xposed Module description"</span><span style="color:#ADBAC7;"> /></span></span>
|
|
<span class="line"></span>
|
|
<span class="line"><span style="color:#768390;"><!-- The minimum Xposed version number --></span></span>
|
|
<span class="line"><span style="color:#768390;"><!-- If you are using EdXposed/LSPosed, the minimum recommended is 93 --></span></span>
|
|
<span class="line"><span style="color:#ADBAC7;"><</span><span style="color:#8DDB8C;">meta-data</span></span>
|
|
<span class="line"><span style="color:#ADBAC7;"> </span><span style="color:#6CB6FF;">android:name</span><span style="color:#ADBAC7;">=</span><span style="color:#96D0FF;">"xposedminversion"</span></span>
|
|
<span class="line"><span style="color:#ADBAC7;"> </span><span style="color:#6CB6FF;">android:value</span><span style="color:#ADBAC7;">=</span><span style="color:#96D0FF;">"93"</span><span style="color:#ADBAC7;"> /></span></span>
|
|
<span class="line"></span>
|
|
<span class="line"><span style="color:#768390;"><!-- Optional: Configure support for New XSharedPreferences without adjusting xposedminversion to 93 --></span></span>
|
|
<span class="line"><span style="color:#ADBAC7;"><</span><span style="color:#8DDB8C;">meta-data</span></span>
|
|
<span class="line"><span style="color:#ADBAC7;"> </span><span style="color:#6CB6FF;">android:name</span><span style="color:#ADBAC7;">=</span><span style="color:#96D0FF;">"xposedsharedprefs"</span></span>
|
|
<span class="line"><span style="color:#ADBAC7;"> </span><span style="color:#6CB6FF;">android:value</span><span style="color:#ADBAC7;">=</span><span style="color:#96D0FF;">"true"</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 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>Create a Hook entry class in your project, implements <code>IYukiHookXposedInit</code> and add the annotation <code>@InjectYukiHookWithXposed</code>.</p><blockquote><p>The following example</p></blockquote><div class="language-kotlin line-numbers-mode" data-ext="kt"><pre class="shiki github-dark-dimmed" style="background-color:#22272e;" tabindex="0"><code><span class="line"><span style="color:#F69D50;">@InjectYukiHookWithXposed</span></span>
|
|
<span class="line"><span style="color:#F47067;">object</span><span style="color:#ADBAC7;"> </span><span style="color:#F69D50;">HookEntry</span><span style="color:#ADBAC7;"> : </span><span style="color:#F69D50;">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 style="color:#F47067;">=</span><span style="color:#ADBAC7;"> YukiHookAPI.</span><span style="color:#DCBDFB;">encase</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 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></div><div class="custom-container tip"><p class="custom-container-title">Suggestion</p><p>Please configure <strong>YukiHookAPI</strong> in the <strong>onInit</strong> method and set the <strong>isDebug</strong> mode to the following form.</p><blockquote><p>The following example</p></blockquote><div class="language-kotlin line-numbers-mode" data-ext="kt"><pre class="shiki github-dark-dimmed" style="background-color:#22272e;" tabindex="0"><code><span class="line"><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;">onInit</span><span style="color:#ADBAC7;">() </span><span style="color:#F47067;">=</span><span style="color:#ADBAC7;"> </span><span style="color:#DCBDFB;">configs</span><span style="color:#ADBAC7;"> {</span></span>
|
|
<span class="line"><span style="color:#ADBAC7;"> isDebug </span><span style="color:#F47067;">=</span><span style="color:#ADBAC7;"> BuildConfig.DEBUG</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>You can also extends <strong>Application</strong> of your Module App from <strong>ModuleApplication</strong> to achieve a complete user experience.</p><p>For more functions, please refer to <a href="../api/public/com/highcapable/yukihookapi/hook/xposed/application/ModuleApplication">ModuleApplication</a>.</p></div><p>Then, you can start writing Hook code.</p><p>For configuration details related to use as an Xposed Module, you can <a href="../config/xposed-using">click here</a> to continue reading.</p><p>If you are currently using Hook APIs such as Rovo89 Xposed API, you can refer to <a href="../guide/move-to-new-api">Migrate from Other Hook APIs</a>.</p><h3 id="use-as-hook-api" tabindex="-1"><a class="header-anchor" href="#use-as-hook-api" aria-hidden="true">#</a> Use as Hook API</h3><h4 id="integration" tabindex="-1"><a class="header-anchor" href="#integration" aria-hidden="true">#</a> Integration</h4><p>Create your custom <code>Application</code>.</p><div class="custom-container danger"><p class="custom-container-title">Pay Attention</p><p>Regardless of the <strong>Hook Framework</strong> you use, you need to add its docking Xposed dependency support.</p><p>If the target <strong>Hook Framework</strong> does not integrate Rovo89 Xposed API, you need to implement and connect <strong>XposedBridge</strong> by yourself.</p></div><p>Add <code>YukiHookAPI.encase</code> method to <code>attachBaseContext</code>.</p><blockquote><p>The following example</p></blockquote><div class="language-kotlin line-numbers-mode" data-ext="kt"><pre class="shiki github-dark-dimmed" style="background-color:#22272e;" tabindex="0"><code><span class="line"><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;">attachBaseContext</span><span style="color:#ADBAC7;">(base: </span><span style="color:#F69D50;">Context</span><span style="color:#ADBAC7;">?) {</span></span>
|
|
<span class="line"><span style="color:#ADBAC7;"> </span><span style="color:#768390;">// Load Hook Framework</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 style="color:#768390;">// Your code here.</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 style="color:#768390;">// Load YukiHookAPI</span></span>
|
|
<span class="line"><span style="color:#ADBAC7;"> YukiHookAPI.</span><span style="color:#DCBDFB;">encase</span><span style="color:#ADBAC7;">(base) {</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 style="color:#ADBAC7;"> </span><span style="color:#6CB6FF;">super</span><span style="color:#ADBAC7;">.</span><span style="color:#DCBDFB;">attachBaseContext</span><span style="color:#ADBAC7;">(base)</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></div><p>Then, you can start writing Hook code in much the same way you would use it as an Xposed Module.</p><p>For configuration details related to use as a Hook API, you can <a href="../config/api-using">click here</a> to continue reading.</p><div class="custom-container warning"><p class="custom-container-title">Notice</p><p><strong>YukiHookPrefsBridge</strong>, <strong>YukiHookDataChannel</strong> and Resources Hook functionality will not work when using a custom Hook Framework instead of the full Xposed Module.</p></div>`,29);function F(f,q){const a=p("ExternalLinkIcon");return i(),t("div",null,[c,n("ul",null,[n("li",null,[n("p",null,[s("Android Studio (It is recommended to get the latest version from "),n("a",d,[s("here"),e(a)]),s(")")])]),n("li",null,[n("p",null,[s("IntelliJ IDEA (It is recommended to get the latest version from "),n("a",u,[s("here"),e(a)]),s(")")])]),y]),A,n("p",null,[s("We recommend using Kotlin DSL as the Gradle build script language and "),n("a",v,[s("SweetDependency"),e(a)]),s(" to manage dependencies.")]),D,n("p",null,[s("Please modify "),m,s(" to the latest version found "),n("a",b,[s("here"),e(a)]),s(),B,s(".")]),C,n("p",null,[s("Please change "),h,s(" to the latest version "),n("a",k,[s("here"),e(a)]),s(".")]),g])}const w=o(r,[["render",F],["__file","quick-start.html.vue"]]);export{w as default};
|