Files
KernelSU/zh_TW/guide/module.html
2023-11-13 03:46:43 +00:00

189 lines
72 KiB
HTML
Raw Blame History

This file contains invisible Unicode characters
This file contains invisible Unicode characters that are indistinguishable to humans but may be processed differently by a computer. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
<!DOCTYPE html>
<html lang="zh-TW" dir="ltr">
<head>
<meta charset="utf-8">
<meta name="viewport" content="width=device-width,initial-scale=1">
<title>模組指南 | KernelSU</title>
<meta name="description" content="一個以核心為基礎,適用於 Android GKI 的 Root 解決方案。">
<link rel="preload stylesheet" href="/assets/style.aaa90101.css" as="style">
<script type="module" src="/assets/app.a2c23f3d.js"></script>
<link rel="preload" href="/assets/inter-roman-latin.2ed14f66.woff2" as="font" type="font/woff2" crossorigin="">
<link rel="modulepreload" href="/assets/chunks/framework.ec8f7e8e.js">
<link rel="modulepreload" href="/assets/chunks/theme.4b73f3e8.js">
<link rel="modulepreload" href="/assets/zh_TW_guide_module.md.57647aec.lean.js">
<script id="check-dark-mode">(()=>{const e=localStorage.getItem("vitepress-theme-appearance")||"auto",a=window.matchMedia("(prefers-color-scheme: dark)").matches;(!e||e==="auto"?a:e==="dark")&&document.documentElement.classList.add("dark")})();</script>
<script id="check-mac-os">document.documentElement.classList.toggle("mac",/Mac|iPhone|iPod|iPad/i.test(navigator.platform));</script>
</head>
<body>
<div id="app"><div class="Layout" data-v-5a346dfe><!--[--><!--]--><!--[--><span tabindex="-1" data-v-0f60ec36></span><a href="#VPContent" class="VPSkipLink visually-hidden" data-v-0f60ec36> Skip to content </a><!--]--><!----><header class="VPNav" data-v-5a346dfe data-v-ae24b3ad><div class="VPNavBar has-sidebar" data-v-ae24b3ad data-v-a0fd61f4><div class="container" data-v-a0fd61f4><div class="title" data-v-a0fd61f4><div class="VPNavBarTitle has-sidebar" data-v-a0fd61f4 data-v-86d1bed8><a class="title" href="/zh_TW/" data-v-86d1bed8><!--[--><!--]--><!----><!--[-->KernelSU<!--]--><!--[--><!--]--></a></div></div><div class="content" data-v-a0fd61f4><div class="curtain" data-v-a0fd61f4></div><div class="content-body" data-v-a0fd61f4><!--[--><!--]--><div class="VPNavBarSearch search" data-v-a0fd61f4><!----></div><nav aria-labelledby="main-nav-aria-label" class="VPNavBarMenu menu" data-v-a0fd61f4 data-v-7f418b0f><span id="main-nav-aria-label" class="visually-hidden" data-v-7f418b0f>Main Navigation</span><!--[--><!--[--><a class="VPLink link VPNavBarMenuLink" href="/zh_TW/guide/what-is-kernelsu.html" tabindex="0" data-v-7f418b0f data-v-42ef59de><!--[--><span data-v-42ef59de>指南</span><!--]--></a><!--]--><!--[--><a class="VPLink link vp-external-link-icon VPNavBarMenuLink" href="https://github.com/tiann/KernelSU" target="_blank" rel="noreferrer" tabindex="0" data-v-7f418b0f data-v-42ef59de><!--[--><span data-v-42ef59de>Github</span><!--]--></a><!--]--><!--]--></nav><div class="VPFlyout VPNavBarTranslations translations" data-v-a0fd61f4 data-v-74abcbb9 data-v-9c007e85><button type="button" class="button" aria-haspopup="true" aria-expanded="false" aria-label="Change language" data-v-9c007e85><span class="text" data-v-9c007e85><svg xmlns="http://www.w3.org/2000/svg" aria-hidden="true" focusable="false" viewbox="0 0 24 24" class="option-icon" data-v-9c007e85><path d="M0 0h24v24H0z" fill="none"></path><path d=" M12.87 15.07l-2.54-2.51.03-.03c1.74-1.94 2.98-4.17 3.71-6.53H17V4h-7V2H8v2H1v1.99h11.17C11.5 7.92 10.44 9.75 9 11.35 8.07 10.32 7.3 9.19 6.69 8h-2c.73 1.63 1.73 3.17 2.98 4.56l-5.09 5.02L4 19l5-5 3.11 3.11.76-2.04zM18.5 10h-2L12 22h2l1.12-3h4.75L21 22h2l-4.5-12zm-2.62 7l1.62-4.33L19.12 17h-3.24z " class="css-c4d79v"></path></svg><!----><svg xmlns="http://www.w3.org/2000/svg" aria-hidden="true" focusable="false" viewbox="0 0 24 24" class="text-icon" data-v-9c007e85><path d="M12,16c-0.3,0-0.5-0.1-0.7-0.3l-6-6c-0.4-0.4-0.4-1,0-1.4s1-0.4,1.4,0l5.3,5.3l5.3-5.3c0.4-0.4,1-0.4,1.4,0s0.4,1,0,1.4l-6,6C12.5,15.9,12.3,16,12,16z"></path></svg></span></button><div class="menu" data-v-9c007e85><div class="VPMenu" data-v-9c007e85 data-v-e7ea1737><!----><!--[--><!--[--><div class="items" data-v-74abcbb9><p class="title" data-v-74abcbb9>繁體中文</p><!--[--><div class="VPMenuLink" data-v-74abcbb9 data-v-43f1e123><a class="VPLink link" href="/guide/module.html" data-v-43f1e123><!--[-->English<!--]--></a></div><div class="VPMenuLink" data-v-74abcbb9 data-v-43f1e123><a class="VPLink link" href="/zh_CN/guide/module.html" data-v-43f1e123><!--[-->简体中文<!--]--></a></div><div class="VPMenuLink" data-v-74abcbb9 data-v-43f1e123><a class="VPLink link" href="/ja_JP/guide/module.html" data-v-43f1e123><!--[-->日本語<!--]--></a></div><div class="VPMenuLink" data-v-74abcbb9 data-v-43f1e123><a class="VPLink link" href="/vi_VN/guide/module.html" data-v-43f1e123><!--[-->Tiếng Việt<!--]--></a></div><div class="VPMenuLink" data-v-74abcbb9 data-v-43f1e123><a class="VPLink link" href="/id_ID/guide/module.html" data-v-43f1e123><!--[-->Bahasa<!--]--></a></div><div class="VPMenuLink" data-v-74abcbb9 data-v-43f1e123><a class="VPLink link" href="/ru_RU/guide/module.html" data-v-43f1e123><!--[-->Русский<!--]--></a></div><div class="VPMenuLink" data-v-74abcbb9 data-v-43f1e123><a class="VPLink link" href="/pt_BR/guide/module.html" data-v-43f1e123><!--[-->Português (Brasil)<!--]--></a></div><!--]--></div><!--]--><!--]--></div></div></div><div class="VPNavBarAppearance appearance" data-v-a0fd61f4 data-v-e6aabb21><button class="VPSwitch VPSwitchAppearance" type="button" role="switch" title="toggle dark mode" aria-checked="false" data-v-e6aabb21 data-v-ce54a7d1 data-v-b1685198><span class="check" data-v-b1685198><span class="icon" data-v-b1685198><!--[--><svg xmlns="http://www.w3.org/2000/svg" aria-hidden="true" focusable="false" viewbox="0 0 24 24" class="sun" data-v-ce54a7d1><path d="M12,18c-3.3,0-6-2.7-6-6s2.7-6,6-6s6,2.7,6,6S15.3,18,12,18zM12,8c-2.2,0-4,1.8-4,4c0,2.2,1.8,4,4,4c2.2,0,4-1.8,4-4C16,9.8,14.2,8,12,8z"></path><path d="M12,4c-0.6,0-1-0.4-1-1V1c0-0.6,0.4-1,1-1s1,0.4,1,1v2C13,3.6,12.6,4,12,4z"></path><path d="M12,24c-0.6,0-1-0.4-1-1v-2c0-0.6,0.4-1,1-1s1,0.4,1,1v2C13,23.6,12.6,24,12,24z"></path><path d="M5.6,6.6c-0.3,0-0.5-0.1-0.7-0.3L3.5,4.9c-0.4-0.4-0.4-1,0-1.4s1-0.4,1.4,0l1.4,1.4c0.4,0.4,0.4,1,0,1.4C6.2,6.5,5.9,6.6,5.6,6.6z"></path><path d="M19.8,20.8c-0.3,0-0.5-0.1-0.7-0.3l-1.4-1.4c-0.4-0.4-0.4-1,0-1.4s1-0.4,1.4,0l1.4,1.4c0.4,0.4,0.4,1,0,1.4C20.3,20.7,20,20.8,19.8,20.8z"></path><path d="M3,13H1c-0.6,0-1-0.4-1-1s0.4-1,1-1h2c0.6,0,1,0.4,1,1S3.6,13,3,13z"></path><path d="M23,13h-2c-0.6,0-1-0.4-1-1s0.4-1,1-1h2c0.6,0,1,0.4,1,1S23.6,13,23,13z"></path><path d="M4.2,20.8c-0.3,0-0.5-0.1-0.7-0.3c-0.4-0.4-0.4-1,0-1.4l1.4-1.4c0.4-0.4,1-0.4,1.4,0s0.4,1,0,1.4l-1.4,1.4C4.7,20.7,4.5,20.8,4.2,20.8z"></path><path d="M18.4,6.6c-0.3,0-0.5-0.1-0.7-0.3c-0.4-0.4-0.4-1,0-1.4l1.4-1.4c0.4-0.4,1-0.4,1.4,0s0.4,1,0,1.4l-1.4,1.4C18.9,6.5,18.6,6.6,18.4,6.6z"></path></svg><svg xmlns="http://www.w3.org/2000/svg" aria-hidden="true" focusable="false" viewbox="0 0 24 24" class="moon" data-v-ce54a7d1><path d="M12.1,22c-0.3,0-0.6,0-0.9,0c-5.5-0.5-9.5-5.4-9-10.9c0.4-4.8,4.2-8.6,9-9c0.4,0,0.8,0.2,1,0.5c0.2,0.3,0.2,0.8-0.1,1.1c-2,2.7-1.4,6.4,1.3,8.4c2.1,1.6,5,1.6,7.1,0c0.3-0.2,0.7-0.3,1.1-0.1c0.3,0.2,0.5,0.6,0.5,1c-0.2,2.7-1.5,5.1-3.6,6.8C16.6,21.2,14.4,22,12.1,22zM9.3,4.4c-2.9,1-5,3.6-5.2,6.8c-0.4,4.4,2.8,8.3,7.2,8.7c2.1,0.2,4.2-0.4,5.8-1.8c1.1-0.9,1.9-2.1,2.4-3.4c-2.5,0.9-5.3,0.5-7.5-1.1C9.2,11.4,8.1,7.7,9.3,4.4z"></path></svg><!--]--></span></span></button></div><div class="VPSocialLinks VPNavBarSocialLinks social-links" data-v-a0fd61f4 data-v-0394ad82 data-v-7bc22406><!--[--><a class="VPSocialLink no-icon" href="https://github.com/tiann/KernelSU" aria-label="github" target="_blank" rel="noopener" data-v-7bc22406 data-v-f80f8133><svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>GitHub</title><path d="M12 .297c-6.63 0-12 5.373-12 12 0 5.303 3.438 9.8 8.205 11.385.6.113.82-.258.82-.577 0-.285-.01-1.04-.015-2.04-3.338.724-4.042-1.61-4.042-1.61C4.422 18.07 3.633 17.7 3.633 17.7c-1.087-.744.084-.729.084-.729 1.205.084 1.838 1.236 1.838 1.236 1.07 1.835 2.809 1.305 3.495.998.108-.776.417-1.305.76-1.605-2.665-.3-5.466-1.332-5.466-5.93 0-1.31.465-2.38 1.235-3.22-.135-.303-.54-1.523.105-3.176 0 0 1.005-.322 3.3 1.23.96-.267 1.98-.399 3-.405 1.02.006 2.04.138 3 .405 2.28-1.552 3.285-1.23 3.285-1.23.645 1.653.24 2.873.12 3.176.765.84 1.23 1.91 1.23 3.22 0 4.61-2.805 5.625-5.475 5.92.42.36.81 1.096.81 2.22 0 1.606-.015 2.896-.015 3.286 0 .315.21.69.825.57C20.565 22.092 24 17.592 24 12.297c0-6.627-5.373-12-12-12"/></svg></a><!--]--></div><div class="VPFlyout VPNavBarExtra extra" data-v-a0fd61f4 data-v-d0bd9dde data-v-9c007e85><button type="button" class="button" aria-haspopup="true" aria-expanded="false" aria-label="extra navigation" data-v-9c007e85><svg xmlns="http://www.w3.org/2000/svg" aria-hidden="true" focusable="false" viewbox="0 0 24 24" class="icon" data-v-9c007e85><circle cx="12" cy="12" r="2"></circle><circle cx="19" cy="12" r="2"></circle><circle cx="5" cy="12" r="2"></circle></svg></button><div class="menu" data-v-9c007e85><div class="VPMenu" data-v-9c007e85 data-v-e7ea1737><!----><!--[--><!--[--><div class="group translations" data-v-d0bd9dde><p class="trans-title" data-v-d0bd9dde>繁體中文</p><!--[--><div class="VPMenuLink" data-v-d0bd9dde data-v-43f1e123><a class="VPLink link" href="/guide/module.html" data-v-43f1e123><!--[-->English<!--]--></a></div><div class="VPMenuLink" data-v-d0bd9dde data-v-43f1e123><a class="VPLink link" href="/zh_CN/guide/module.html" data-v-43f1e123><!--[-->简体中文<!--]--></a></div><div class="VPMenuLink" data-v-d0bd9dde data-v-43f1e123><a class="VPLink link" href="/ja_JP/guide/module.html" data-v-43f1e123><!--[-->日本語<!--]--></a></div><div class="VPMenuLink" data-v-d0bd9dde data-v-43f1e123><a class="VPLink link" href="/vi_VN/guide/module.html" data-v-43f1e123><!--[-->Tiếng Việt<!--]--></a></div><div class="VPMenuLink" data-v-d0bd9dde data-v-43f1e123><a class="VPLink link" href="/id_ID/guide/module.html" data-v-43f1e123><!--[-->Bahasa<!--]--></a></div><div class="VPMenuLink" data-v-d0bd9dde data-v-43f1e123><a class="VPLink link" href="/ru_RU/guide/module.html" data-v-43f1e123><!--[-->Русский<!--]--></a></div><div class="VPMenuLink" data-v-d0bd9dde data-v-43f1e123><a class="VPLink link" href="/pt_BR/guide/module.html" data-v-43f1e123><!--[-->Português (Brasil)<!--]--></a></div><!--]--></div><div class="group" data-v-d0bd9dde><div class="item appearance" data-v-d0bd9dde><p class="label" data-v-d0bd9dde>Appearance</p><div class="appearance-action" data-v-d0bd9dde><button class="VPSwitch VPSwitchAppearance" type="button" role="switch" title="toggle dark mode" aria-checked="false" data-v-d0bd9dde data-v-ce54a7d1 data-v-b1685198><span class="check" data-v-b1685198><span class="icon" data-v-b1685198><!--[--><svg xmlns="http://www.w3.org/2000/svg" aria-hidden="true" focusable="false" viewbox="0 0 24 24" class="sun" data-v-ce54a7d1><path d="M12,18c-3.3,0-6-2.7-6-6s2.7-6,6-6s6,2.7,6,6S15.3,18,12,18zM12,8c-2.2,0-4,1.8-4,4c0,2.2,1.8,4,4,4c2.2,0,4-1.8,4-4C16,9.8,14.2,8,12,8z"></path><path d="M12,4c-0.6,0-1-0.4-1-1V1c0-0.6,0.4-1,1-1s1,0.4,1,1v2C13,3.6,12.6,4,12,4z"></path><path d="M12,24c-0.6,0-1-0.4-1-1v-2c0-0.6,0.4-1,1-1s1,0.4,1,1v2C13,23.6,12.6,24,12,24z"></path><path d="M5.6,6.6c-0.3,0-0.5-0.1-0.7-0.3L3.5,4.9c-0.4-0.4-0.4-1,0-1.4s1-0.4,1.4,0l1.4,1.4c0.4,0.4,0.4,1,0,1.4C6.2,6.5,5.9,6.6,5.6,6.6z"></path><path d="M19.8,20.8c-0.3,0-0.5-0.1-0.7-0.3l-1.4-1.4c-0.4-0.4-0.4-1,0-1.4s1-0.4,1.4,0l1.4,1.4c0.4,0.4,0.4,1,0,1.4C20.3,20.7,20,20.8,19.8,20.8z"></path><path d="M3,13H1c-0.6,0-1-0.4-1-1s0.4-1,1-1h2c0.6,0,1,0.4,1,1S3.6,13,3,13z"></path><path d="M23,13h-2c-0.6,0-1-0.4-1-1s0.4-1,1-1h2c0.6,0,1,0.4,1,1S23.6,13,23,13z"></path><path d="M4.2,20.8c-0.3,0-0.5-0.1-0.7-0.3c-0.4-0.4-0.4-1,0-1.4l1.4-1.4c0.4-0.4,1-0.4,1.4,0s0.4,1,0,1.4l-1.4,1.4C4.7,20.7,4.5,20.8,4.2,20.8z"></path><path d="M18.4,6.6c-0.3,0-0.5-0.1-0.7-0.3c-0.4-0.4-0.4-1,0-1.4l1.4-1.4c0.4-0.4,1-0.4,1.4,0s0.4,1,0,1.4l-1.4,1.4C18.9,6.5,18.6,6.6,18.4,6.6z"></path></svg><svg xmlns="http://www.w3.org/2000/svg" aria-hidden="true" focusable="false" viewbox="0 0 24 24" class="moon" data-v-ce54a7d1><path d="M12.1,22c-0.3,0-0.6,0-0.9,0c-5.5-0.5-9.5-5.4-9-10.9c0.4-4.8,4.2-8.6,9-9c0.4,0,0.8,0.2,1,0.5c0.2,0.3,0.2,0.8-0.1,1.1c-2,2.7-1.4,6.4,1.3,8.4c2.1,1.6,5,1.6,7.1,0c0.3-0.2,0.7-0.3,1.1-0.1c0.3,0.2,0.5,0.6,0.5,1c-0.2,2.7-1.5,5.1-3.6,6.8C16.6,21.2,14.4,22,12.1,22zM9.3,4.4c-2.9,1-5,3.6-5.2,6.8c-0.4,4.4,2.8,8.3,7.2,8.7c2.1,0.2,4.2-0.4,5.8-1.8c1.1-0.9,1.9-2.1,2.4-3.4c-2.5,0.9-5.3,0.5-7.5-1.1C9.2,11.4,8.1,7.7,9.3,4.4z"></path></svg><!--]--></span></span></button></div></div></div><div class="group" data-v-d0bd9dde><div class="item social-links" data-v-d0bd9dde><div class="VPSocialLinks social-links-list" data-v-d0bd9dde data-v-7bc22406><!--[--><a class="VPSocialLink no-icon" href="https://github.com/tiann/KernelSU" aria-label="github" target="_blank" rel="noopener" data-v-7bc22406 data-v-f80f8133><svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>GitHub</title><path d="M12 .297c-6.63 0-12 5.373-12 12 0 5.303 3.438 9.8 8.205 11.385.6.113.82-.258.82-.577 0-.285-.01-1.04-.015-2.04-3.338.724-4.042-1.61-4.042-1.61C4.422 18.07 3.633 17.7 3.633 17.7c-1.087-.744.084-.729.084-.729 1.205.084 1.838 1.236 1.838 1.236 1.07 1.835 2.809 1.305 3.495.998.108-.776.417-1.305.76-1.605-2.665-.3-5.466-1.332-5.466-5.93 0-1.31.465-2.38 1.235-3.22-.135-.303-.54-1.523.105-3.176 0 0 1.005-.322 3.3 1.23.96-.267 1.98-.399 3-.405 1.02.006 2.04.138 3 .405 2.28-1.552 3.285-1.23 3.285-1.23.645 1.653.24 2.873.12 3.176.765.84 1.23 1.91 1.23 3.22 0 4.61-2.805 5.625-5.475 5.92.42.36.81 1.096.81 2.22 0 1.606-.015 2.896-.015 3.286 0 .315.21.69.825.57C20.565 22.092 24 17.592 24 12.297c0-6.627-5.373-12-12-12"/></svg></a><!--]--></div></div></div><!--]--><!--]--></div></div></div><!--[--><!--]--><button type="button" class="VPNavBarHamburger hamburger" aria-label="mobile navigation" aria-expanded="false" aria-controls="VPNavScreen" data-v-a0fd61f4 data-v-e5dd9c1c><span class="container" data-v-e5dd9c1c><span class="top" data-v-e5dd9c1c></span><span class="middle" data-v-e5dd9c1c></span><span class="bottom" data-v-e5dd9c1c></span></span></button></div></div></div></div><!----></header><div class="VPLocalNav reached-top" data-v-5a346dfe data-v-79c8c1df><button class="menu" aria-expanded="false" aria-controls="VPSidebarNav" data-v-79c8c1df><svg xmlns="http://www.w3.org/2000/svg" aria-hidden="true" focusable="false" viewbox="0 0 24 24" class="menu-icon" data-v-79c8c1df><path d="M17,11H3c-0.6,0-1-0.4-1-1s0.4-1,1-1h14c0.6,0,1,0.4,1,1S17.6,11,17,11z"></path><path d="M21,7H3C2.4,7,2,6.6,2,6s0.4-1,1-1h18c0.6,0,1,0.4,1,1S21.6,7,21,7z"></path><path d="M21,15H3c-0.6,0-1-0.4-1-1s0.4-1,1-1h18c0.6,0,1,0.4,1,1S21.6,15,21,15z"></path><path d="M17,19H3c-0.6,0-1-0.4-1-1s0.4-1,1-1h14c0.6,0,1,0.4,1,1S17.6,19,17,19z"></path></svg><span class="menu-text" data-v-79c8c1df>Menu</span></button><div class="VPLocalNavOutlineDropdown" style="--vp-vh:0px;" data-v-79c8c1df data-v-1c15a60a><button data-v-1c15a60a>Return to top</button><!----></div></div><aside class="VPSidebar" data-v-5a346dfe data-v-b00e2fdd><div class="curtain" data-v-b00e2fdd></div><nav class="nav" id="VPSidebarNav" aria-labelledby="sidebar-aria-label" tabindex="-1" data-v-b00e2fdd><span class="visually-hidden" id="sidebar-aria-label" data-v-b00e2fdd> Sidebar Navigation </span><!--[--><!--]--><!--[--><div class="group" data-v-b00e2fdd><section class="VPSidebarItem level-0 has-active" data-v-b00e2fdd data-v-e31bd47b><div class="item" role="button" tabindex="0" data-v-e31bd47b><div class="indicator" data-v-e31bd47b></div><h2 class="text" data-v-e31bd47b>Guide</h2><!----></div><div class="items" data-v-e31bd47b><!--[--><div class="VPSidebarItem level-1 is-link" data-v-e31bd47b data-v-e31bd47b><div class="item" data-v-e31bd47b><div class="indicator" data-v-e31bd47b></div><a class="VPLink link link" href="/zh_TW/guide/what-is-kernelsu.html" data-v-e31bd47b><!--[--><p class="text" data-v-e31bd47b>什麼是 KernelSU</p><!--]--></a><!----></div><!----></div><div class="VPSidebarItem level-1 is-link" data-v-e31bd47b data-v-e31bd47b><div class="item" data-v-e31bd47b><div class="indicator" data-v-e31bd47b></div><a class="VPLink link link" href="/zh_TW/guide/installation.html" data-v-e31bd47b><!--[--><p class="text" data-v-e31bd47b>安裝</p><!--]--></a><!----></div><!----></div><div class="VPSidebarItem level-1 is-link" data-v-e31bd47b data-v-e31bd47b><div class="item" data-v-e31bd47b><div class="indicator" data-v-e31bd47b></div><a class="VPLink link link" href="/zh_TW/guide/how-to-build.html" data-v-e31bd47b><!--[--><p class="text" data-v-e31bd47b>如何建置?</p><!--]--></a><!----></div><!----></div><div class="VPSidebarItem level-1 is-link" data-v-e31bd47b data-v-e31bd47b><div class="item" data-v-e31bd47b><div class="indicator" data-v-e31bd47b></div><a class="VPLink link link" href="/zh_TW/guide/how-to-integrate-for-non-gki.html" data-v-e31bd47b><!--[--><p class="text" data-v-e31bd47b>如何為非 GKI 核心整合 KernelSU</p><!--]--></a><!----></div><!----></div><div class="VPSidebarItem level-1 is-link" data-v-e31bd47b data-v-e31bd47b><div class="item" data-v-e31bd47b><div class="indicator" data-v-e31bd47b></div><a class="VPLink link link" href="/zh_TW/guide/unofficially-support-devices.html" data-v-e31bd47b><!--[--><p class="text" data-v-e31bd47b>非官方支援裝置</p><!--]--></a><!----></div><!----></div><div class="VPSidebarItem level-1 is-link" data-v-e31bd47b data-v-e31bd47b><div class="item" data-v-e31bd47b><div class="indicator" data-v-e31bd47b></div><a class="VPLink link link" href="/zh_TW/guide/module.html" data-v-e31bd47b><!--[--><p class="text" data-v-e31bd47b>模組指南</p><!--]--></a><!----></div><!----></div><div class="VPSidebarItem level-1 is-link" data-v-e31bd47b data-v-e31bd47b><div class="item" data-v-e31bd47b><div class="indicator" data-v-e31bd47b></div><a class="VPLink link link" href="/zh_TW/guide/rescue-from-bootloop.html" data-v-e31bd47b><!--[--><p class="text" data-v-e31bd47b>搶救開機迴圈</p><!--]--></a><!----></div><!----></div><div class="VPSidebarItem level-1 is-link" data-v-e31bd47b data-v-e31bd47b><div class="item" data-v-e31bd47b><div class="indicator" data-v-e31bd47b></div><a class="VPLink link link" href="/zh_TW/guide/faq.html" data-v-e31bd47b><!--[--><p class="text" data-v-e31bd47b>常見問題</p><!--]--></a><!----></div><!----></div><div class="VPSidebarItem level-1 is-link" data-v-e31bd47b data-v-e31bd47b><div class="item" data-v-e31bd47b><div class="indicator" data-v-e31bd47b></div><a class="VPLink link link" href="/zh_TW/guide/hidden-features.html" data-v-e31bd47b><!--[--><p class="text" data-v-e31bd47b>隱藏功能</p><!--]--></a><!----></div><!----></div><!--]--></div></section></div><!--]--><!--[--><!--]--></nav></aside><div class="VPContent has-sidebar" id="VPContent" data-v-5a346dfe data-v-669faec9><div class="VPDoc has-sidebar has-aside" data-v-669faec9 data-v-6b87e69f><!--[--><!--]--><div class="container" data-v-6b87e69f><div class="aside" data-v-6b87e69f><div class="aside-curtain" data-v-6b87e69f></div><div class="aside-container" data-v-6b87e69f><div class="aside-content" data-v-6b87e69f><div class="VPDocAside" data-v-6b87e69f data-v-3f215769><!--[--><!--]--><!--[--><!--]--><div class="VPDocAsideOutline" role="navigation" data-v-3f215769 data-v-d330b1bb><div class="content" data-v-d330b1bb><div class="outline-marker" data-v-d330b1bb></div><div class="outline-title" role="heading" aria-level="2" data-v-d330b1bb>On this page</div><nav aria-labelledby="doc-outline-aria-label" data-v-d330b1bb><span class="visually-hidden" id="doc-outline-aria-label" data-v-d330b1bb> Table of Contents for current page </span><ul class="root" data-v-d330b1bb data-v-d0ee3533><!--[--><!--]--></ul></nav></div></div><!--[--><!--]--><div class="spacer" data-v-3f215769></div><!--[--><!--]--><!----><!--[--><!--]--><!--[--><!--]--></div></div></div></div><div class="content" data-v-6b87e69f><div class="content-container" data-v-6b87e69f><!--[--><!--]--><!----><main class="main" data-v-6b87e69f><div style="position:relative;" class="vp-doc _zh_TW_guide_module" data-v-6b87e69f><div><h1 id="introduction" tabindex="-1">模組指南 <a class="header-anchor" href="#introduction" aria-label="Permalink to &quot;模組指南 {#introduction}&quot;"></a></h1><p>KernelSU 提供了一個模組機制,它可以在保持系統分割區完整性的同時達到修改系統分割區的效果;這種機制一般被稱為 systemless。</p><p>KernelSU 的模組運作機制與 Magisk 幾乎相同,如果您熟悉 Magisk 模組的開發,那麼開發 KernelSU 的模組大同小異,您可以跳過下列有關模組的介紹,只需要瞭解 <a href="./difference-with-magisk.html">KernelSU 模組與 Magisk 模組的異同</a></p><h2 id="busybox" tabindex="-1">Busybox <a class="header-anchor" href="#busybox" aria-label="Permalink to &quot;Busybox&quot;"></a></h2><p>KernelSU 提供了一個完備的 BusyBox 二進位檔案 (包括完整的 SELinux 支援)。可執行檔位於 <code>/data/adb/ksu/bin/busybox</code>。 KernelSU 的 BusyBox 支援同時執行時可切換的 &quot;ASH Standalone Shell Mode&quot;。 這種讀了模式意味著在執行 BusyBox 的 ash shell 時,每個命令都會直接使用 BusyBox 中內建的應用程式,而不論 PATH 的設定為何。 例如,<code>ls</code><code>rm</code><code>chmod</code> 等命令將不會使用 PATH 中設定的命令 (在 Android 的狀況下,預設狀況下分別為 <code>/system/bin/ls</code><code>/system/bin/rm</code><code>/system/bin/chmod</code>),而是直接呼叫 BusyBox 內建的應用程式。 這確保了指令碼始終在可預測的環境中執行,並始終具有完整的命令套件,不論它執行在哪個 Android 版本上。 要強制下一個命令不使用 BusyBox您必須使用完整路徑呼叫可執行檔。</p><p>在 KernelSU 上下文中執行的每個 shell 指令碼都將在 BusyBox 的 ash shell 中以獨立模式執行。對於第三方開發人員相關的內容,包括所有開機指令碼和模組安裝指令碼。</p><p>對於想要在 KernelSU 之外使用這個「獨立模式」功能的使用者,有兩種啟用方法:</p><ol><li>將環境變數 <code>ASH_STANDALONE</code> 設為 <code>1</code>。例如:<code>ASH_STANDALONE=1 /data/adb/ksu/bin/busybox sh &lt;script&gt;</code></li><li>使用命令列選項切換:<code>/data/adb/ksu/bin/busybox sh -o standalone &lt;script&gt;</code></li></ol><p>為了確保所有後續的 <code>sh</code> shell 都在獨立模式下執行,第一種是首選方法 (這也是 KernelSU 和 KernelSU 管理員內部使用的方法),因為環境變數會被繼承到子處理程序中。</p><div class="tip custom-block"><p class="custom-block-title">與 Magisk 的差異</p><p>KernelSU 的 BusyBox 現在是直接使用 Magisk 專案編譯的二進位檔案,<strong>感謝 Magisk</strong> 因此,您完全不必擔心 BusyBox 指令碼與在 Magisk 和 KernelSU 之間的相容性問題,因為它們完全相同!</p></div><h2 id="kernelsu-modules" tabindex="-1">KernelSU 模組 <a class="header-anchor" href="#kernelsu-modules" aria-label="Permalink to &quot;KernelSU 模組 {#kernelsu-modules}&quot;"></a></h2><p>KernelSU 模組是一個放置於 <code>/data/adb/modules</code> 且滿足下列結構的資料夾:</p><div class="language-txt vp-adaptive-theme"><button title="Copy Code" class="copy"></button><span class="lang">txt</span><pre class="shiki github-dark vp-code-dark"><code><span class="line"><span style="color:#e1e4e8;">/data/adb/modules</span></span>
<span class="line"><span style="color:#e1e4e8;">├── .</span></span>
<span class="line"><span style="color:#e1e4e8;">├── .</span></span>
<span class="line"><span style="color:#e1e4e8;">|</span></span>
<span class="line"><span style="color:#e1e4e8;">├── $MODID &lt;--- 模組的資料夾名稱與模組 ID 相同</span></span>
<span class="line"><span style="color:#e1e4e8;">│ │</span></span>
<span class="line"><span style="color:#e1e4e8;">│ │ *** 模組識別 ***</span></span>
<span class="line"><span style="color:#e1e4e8;">│ │</span></span>
<span class="line"><span style="color:#e1e4e8;">│ ├── module.prop &lt;--- 這個檔案儲存與模組相關的中繼資料,例如模組 ID、版本等</span></span>
<span class="line"><span style="color:#e1e4e8;">│ │</span></span>
<span class="line"><span style="color:#e1e4e8;">│ │ *** 主要內容 ***</span></span>
<span class="line"><span style="color:#e1e4e8;">│ │</span></span>
<span class="line"><span style="color:#e1e4e8;">│ ├── system &lt;--- 這個資料夾會在 skip_mount 不存在時被掛接至系統</span></span>
<span class="line"><span style="color:#e1e4e8;">│ │ ├── ...</span></span>
<span class="line"><span style="color:#e1e4e8;">│ │ ├── ...</span></span>
<span class="line"><span style="color:#e1e4e8;">│ │ └── ...</span></span>
<span class="line"><span style="color:#e1e4e8;">│ │</span></span>
<span class="line"><span style="color:#e1e4e8;">│ │ *** 狀態旗標 ***</span></span>
<span class="line"><span style="color:#e1e4e8;">│ │</span></span>
<span class="line"><span style="color:#e1e4e8;">│ ├── skip_mount &lt;--- 如果這個檔案存在,那麼 KernelSU 將不會掛接您的系統資料夾</span></span>
<span class="line"><span style="color:#e1e4e8;">│ ├── disable &lt;--- 如果這個檔案存在,那麼模組將會被停用</span></span>
<span class="line"><span style="color:#e1e4e8;">│ ├── remove &lt;--- 如果這個檔案存在,那麼模組將會在下次重新開機時被移除</span></span>
<span class="line"><span style="color:#e1e4e8;">│ │</span></span>
<span class="line"><span style="color:#e1e4e8;">│ │ *** 選用檔案 ***</span></span>
<span class="line"><span style="color:#e1e4e8;">│ │</span></span>
<span class="line"><span style="color:#e1e4e8;">│ ├── post-fs-data.sh &lt;--- 這個指令碼將會在 post-fs-data 中執行</span></span>
<span class="line"><span style="color:#e1e4e8;">│ ├── service.sh &lt;--- 這個指令碼將會在 late_start 服務中執行</span></span>
<span class="line"><span style="color:#e1e4e8;">| ├── uninstall.sh &lt;--- 這個指令碼將會在 KernelSU 移除模組時執行</span></span>
<span class="line"><span style="color:#e1e4e8;">│ ├── system.prop &lt;--- 這個檔案中指定的屬性將會在系統啟動時透過 resetprop 變更</span></span>
<span class="line"><span style="color:#e1e4e8;">│ ├── sepolicy.rule &lt;--- 這個檔案中的 SELinux 原則將會在系統開機時載入</span></span>
<span class="line"><span style="color:#e1e4e8;">│ │</span></span>
<span class="line"><span style="color:#e1e4e8;">│ │ *** 自動產生的目錄,不要手動建立或修改! ***</span></span>
<span class="line"><span style="color:#e1e4e8;">│ │</span></span>
<span class="line"><span style="color:#e1e4e8;">│ ├── vendor &lt;--- A symlink to $MODID/system/vendor</span></span>
<span class="line"><span style="color:#e1e4e8;">│ ├── product &lt;--- A symlink to $MODID/system/product</span></span>
<span class="line"><span style="color:#e1e4e8;">│ ├── system_ext &lt;--- A symlink to $MODID/system/system_ext</span></span>
<span class="line"><span style="color:#e1e4e8;">│ │</span></span>
<span class="line"><span style="color:#e1e4e8;">│ │ *** 允許的其他額外檔案/資料夾 ***</span></span>
<span class="line"><span style="color:#e1e4e8;">│ │</span></span>
<span class="line"><span style="color:#e1e4e8;">│ ├── ...</span></span>
<span class="line"><span style="color:#e1e4e8;">│ └── ...</span></span>
<span class="line"><span style="color:#e1e4e8;">|</span></span>
<span class="line"><span style="color:#e1e4e8;">├── another_module</span></span>
<span class="line"><span style="color:#e1e4e8;">│ ├── .</span></span>
<span class="line"><span style="color:#e1e4e8;">│ └── .</span></span>
<span class="line"><span style="color:#e1e4e8;">├── .</span></span>
<span class="line"><span style="color:#e1e4e8;">├── .</span></span></code></pre><pre class="shiki github-light vp-code-light"><code><span class="line"><span style="color:#24292e;">/data/adb/modules</span></span>
<span class="line"><span style="color:#24292e;">├── .</span></span>
<span class="line"><span style="color:#24292e;">├── .</span></span>
<span class="line"><span style="color:#24292e;">|</span></span>
<span class="line"><span style="color:#24292e;">├── $MODID &lt;--- 模組的資料夾名稱與模組 ID 相同</span></span>
<span class="line"><span style="color:#24292e;">│ │</span></span>
<span class="line"><span style="color:#24292e;">│ │ *** 模組識別 ***</span></span>
<span class="line"><span style="color:#24292e;">│ │</span></span>
<span class="line"><span style="color:#24292e;">│ ├── module.prop &lt;--- 這個檔案儲存與模組相關的中繼資料,例如模組 ID、版本等</span></span>
<span class="line"><span style="color:#24292e;">│ │</span></span>
<span class="line"><span style="color:#24292e;">│ │ *** 主要內容 ***</span></span>
<span class="line"><span style="color:#24292e;">│ │</span></span>
<span class="line"><span style="color:#24292e;">│ ├── system &lt;--- 這個資料夾會在 skip_mount 不存在時被掛接至系統</span></span>
<span class="line"><span style="color:#24292e;">│ │ ├── ...</span></span>
<span class="line"><span style="color:#24292e;">│ │ ├── ...</span></span>
<span class="line"><span style="color:#24292e;">│ │ └── ...</span></span>
<span class="line"><span style="color:#24292e;">│ │</span></span>
<span class="line"><span style="color:#24292e;">│ │ *** 狀態旗標 ***</span></span>
<span class="line"><span style="color:#24292e;">│ │</span></span>
<span class="line"><span style="color:#24292e;">│ ├── skip_mount &lt;--- 如果這個檔案存在,那麼 KernelSU 將不會掛接您的系統資料夾</span></span>
<span class="line"><span style="color:#24292e;">│ ├── disable &lt;--- 如果這個檔案存在,那麼模組將會被停用</span></span>
<span class="line"><span style="color:#24292e;">│ ├── remove &lt;--- 如果這個檔案存在,那麼模組將會在下次重新開機時被移除</span></span>
<span class="line"><span style="color:#24292e;">│ │</span></span>
<span class="line"><span style="color:#24292e;">│ │ *** 選用檔案 ***</span></span>
<span class="line"><span style="color:#24292e;">│ │</span></span>
<span class="line"><span style="color:#24292e;">│ ├── post-fs-data.sh &lt;--- 這個指令碼將會在 post-fs-data 中執行</span></span>
<span class="line"><span style="color:#24292e;">│ ├── service.sh &lt;--- 這個指令碼將會在 late_start 服務中執行</span></span>
<span class="line"><span style="color:#24292e;">| ├── uninstall.sh &lt;--- 這個指令碼將會在 KernelSU 移除模組時執行</span></span>
<span class="line"><span style="color:#24292e;">│ ├── system.prop &lt;--- 這個檔案中指定的屬性將會在系統啟動時透過 resetprop 變更</span></span>
<span class="line"><span style="color:#24292e;">│ ├── sepolicy.rule &lt;--- 這個檔案中的 SELinux 原則將會在系統開機時載入</span></span>
<span class="line"><span style="color:#24292e;">│ │</span></span>
<span class="line"><span style="color:#24292e;">│ │ *** 自動產生的目錄,不要手動建立或修改! ***</span></span>
<span class="line"><span style="color:#24292e;">│ │</span></span>
<span class="line"><span style="color:#24292e;">│ ├── vendor &lt;--- A symlink to $MODID/system/vendor</span></span>
<span class="line"><span style="color:#24292e;">│ ├── product &lt;--- A symlink to $MODID/system/product</span></span>
<span class="line"><span style="color:#24292e;">│ ├── system_ext &lt;--- A symlink to $MODID/system/system_ext</span></span>
<span class="line"><span style="color:#24292e;">│ │</span></span>
<span class="line"><span style="color:#24292e;">│ │ *** 允許的其他額外檔案/資料夾 ***</span></span>
<span class="line"><span style="color:#24292e;">│ │</span></span>
<span class="line"><span style="color:#24292e;">│ ├── ...</span></span>
<span class="line"><span style="color:#24292e;">│ └── ...</span></span>
<span class="line"><span style="color:#24292e;">|</span></span>
<span class="line"><span style="color:#24292e;">├── another_module</span></span>
<span class="line"><span style="color:#24292e;">│ ├── .</span></span>
<span class="line"><span style="color:#24292e;">│ └── .</span></span>
<span class="line"><span style="color:#24292e;">├── .</span></span>
<span class="line"><span style="color:#24292e;">├── .</span></span></code></pre></div><div class="tip custom-block"><p class="custom-block-title">與 Magisk 的差異</p><p>KernelSU 沒有內建的針對 Zygisk 的支援,因此模組中沒有與 Zygisk 相關的內容,但您可以透過 <a href="https://github.com/Dr-TSNG/ZygiskNext" target="_blank" rel="noreferrer">ZygiskNext</a> 以支援 Zygisk 模組,此時 Zygisk 模組的內容與 Magisk 所支援的 Zygisk 完全相同。</p></div><h3 id="module-prop" tabindex="-1">module.prop <a class="header-anchor" href="#module-prop" aria-label="Permalink to &quot;module.prop&quot;"></a></h3><p>module.prop 是一個模組的組態檔案,在 KernelSU 中如果模組中不包含這個檔案,那麼它將不被認為是一個模組;這個檔案的格式如下:</p><div class="language-txt vp-adaptive-theme"><button title="Copy Code" class="copy"></button><span class="lang">txt</span><pre class="shiki github-dark vp-code-dark"><code><span class="line"><span style="color:#e1e4e8;">id=&lt;string&gt;</span></span>
<span class="line"><span style="color:#e1e4e8;">name=&lt;string&gt;</span></span>
<span class="line"><span style="color:#e1e4e8;">version=&lt;string&gt;</span></span>
<span class="line"><span style="color:#e1e4e8;">versionCode=&lt;int&gt;</span></span>
<span class="line"><span style="color:#e1e4e8;">author=&lt;string&gt;</span></span>
<span class="line"><span style="color:#e1e4e8;">description=&lt;string&gt;</span></span></code></pre><pre class="shiki github-light vp-code-light"><code><span class="line"><span style="color:#24292e;">id=&lt;string&gt;</span></span>
<span class="line"><span style="color:#24292e;">name=&lt;string&gt;</span></span>
<span class="line"><span style="color:#24292e;">version=&lt;string&gt;</span></span>
<span class="line"><span style="color:#24292e;">versionCode=&lt;int&gt;</span></span>
<span class="line"><span style="color:#24292e;">author=&lt;string&gt;</span></span>
<span class="line"><span style="color:#24292e;">description=&lt;string&gt;</span></span></code></pre></div><ul><li>id 必須與這個規則運算式相符:<code>^[a-zA-Z][a-zA-Z0-9._-]+$</code> 例如:✓ <code>a_module</code>,✓ <code>a.module</code>,✓ <code>module-101</code>,✗ <code>a module</code>,✗ <code>1_module</code>,✗ <code>-a-module</code>。這是您的模組的唯一識別碼,發表後將無法變更。</li><li>versionCode 必須是一個整數,用於比較版本。</li><li>其他未在上方提到的內容可以是任何單行字串。</li><li>請確保使用 <code>UNIX (LF)</code> 分行符號類型,而非 <code>Windows (CR + LF)</code><code>Macintosh (CR)</code></li></ul><h3 id="shell-scripts" tabindex="-1">Shell 指令碼 <a class="header-anchor" href="#shell-scripts" aria-label="Permalink to &quot;Shell 指令碼 {#shell-scripts}&quot;"></a></h3><p>請閱讀 <a href="#boot-scripts">開機指令碼</a> 章節,以瞭解 <code>post-fs-data.sh</code><code>service.sh</code> 之間的差別。對於大多數模組開發人員來說,如果您只需要執行一個開機指令碼,<code>service.sh</code> 應該已經足夠了。</p><p>在您的模組中的所有指令碼中,請使用 <code>MODDIR=${0%/*}</code> 以取得您的模組基本目錄路徑;請不要在指令碼中以硬式編碼的方式加入您的模組路徑。</p><div class="tip custom-block"><p class="custom-block-title">與 Magisk 的差異</p><p>您可以透過環境變數 <code>KSU</code> 來判斷指令碼是執行在 KernelSU 還是 Magisk 中,如果執行在 KernelSU這個值會被設為 <code>true</code></p></div><h3 id="system-directories" tabindex="-1"><code>system</code> 目錄 <a class="header-anchor" href="#system-directories" aria-label="Permalink to &quot;`system` 目錄 {#system-directories}&quot;"></a></h3><p>這個目錄的內容會在系統啟動後,以 <code>overlayfs</code> 的方式覆疊在系統的 <code>/system</code> 分割區之上,這表示:</p><ol><li>系統中對應目錄的相同名稱的檔案會被此目錄中的檔案覆寫。</li><li>系統中對應目錄的相同名稱的檔案會與此目錄的檔案合併。</li></ol><p>如果您想要刪除系統先前的目錄中的某個檔案或資料夾,您需要在模組目錄中透過 <code>mknod filename c 0 0</code> 以建立一個 <code>filename</code> 的相同名稱的檔案;這樣 overlayfs 系統會自動「whiteout」等效刪除這個檔案 (<code>/system</code> 分割區並未被變更)。</p><p>您也可以在 <code>customize.sh</code> 中宣告一個名為 <code>REMOVE</code> 並且包含一系列目錄的變數以執行移除作業KernelSU 會自動為您在模組對應目錄執行 <code>mknod &lt;TARGET&gt; c 0 0</code>。例如:</p><div class="language-sh vp-adaptive-theme"><button title="Copy Code" class="copy"></button><span class="lang">sh</span><pre class="shiki github-dark vp-code-dark"><code><span class="line"><span style="color:#E1E4E8;">REMOVE</span><span style="color:#F97583;">=</span><span style="color:#9ECBFF;">&quot;</span></span>
<span class="line"><span style="color:#9ECBFF;">/system/app/YouTube</span></span>
<span class="line"><span style="color:#9ECBFF;">/system/app/Bloatware</span></span>
<span class="line"><span style="color:#9ECBFF;">&quot;</span></span></code></pre><pre class="shiki github-light vp-code-light"><code><span class="line"><span style="color:#24292E;">REMOVE</span><span style="color:#D73A49;">=</span><span style="color:#032F62;">&quot;</span></span>
<span class="line"><span style="color:#032F62;">/system/app/YouTube</span></span>
<span class="line"><span style="color:#032F62;">/system/app/Bloatware</span></span>
<span class="line"><span style="color:#032F62;">&quot;</span></span></code></pre></div><p>上方的清單將會執行:<code>mknod $MODPATH/system/app/YouTuBe c 0 0</code><code>mknod $MODPATH/system/app/Bloatware c 0 0</code>;並且 <code>/system/app/YouTube</code><code>/system/app/Bloatware</code> 將會在模組生效前移除。</p><p>如果您想要取代系統的某個目錄,您需要在模組目錄中建立一個相同路徑的目錄,然後為此目錄設定此屬性:<code>setfattr -n trusted.overlay.opaque -v y &lt;TARGET&gt;</code>;這樣 overlayfs 系統會自動將對應目錄取代 (<code>/system</code> 分割區並未被變更)。</p><p>您可以在 <code>customize.sh</code> 中宣告一個名為 <code>REMOVE</code> 並且包含一系列目錄的變數以執行移除作業KernelSU 會自動為您在模組對應目錄執行相關作業。例如:</p><div class="language-sh vp-adaptive-theme"><button title="Copy Code" class="copy"></button><span class="lang">sh</span><pre class="shiki github-dark vp-code-dark"><code><span class="line"><span style="color:#E1E4E8;">REPLACE</span><span style="color:#F97583;">=</span><span style="color:#9ECBFF;">&quot;</span></span>
<span class="line"><span style="color:#9ECBFF;">/system/app/YouTube</span></span>
<span class="line"><span style="color:#9ECBFF;">/system/app/Bloatware</span></span>
<span class="line"><span style="color:#9ECBFF;">&quot;</span></span></code></pre><pre class="shiki github-light vp-code-light"><code><span class="line"><span style="color:#24292E;">REPLACE</span><span style="color:#D73A49;">=</span><span style="color:#032F62;">&quot;</span></span>
<span class="line"><span style="color:#032F62;">/system/app/YouTube</span></span>
<span class="line"><span style="color:#032F62;">/system/app/Bloatware</span></span>
<span class="line"><span style="color:#032F62;">&quot;</span></span></code></pre></div><p>上方的清單將會執行:自動建立目錄 <code>$MODPATH/system/app/YouTube</code><code>$MODPATH//system/app/Bloatware</code>,然後執行 <code>setfattr -n trusted.overlay.opaque -v y $$MODPATH/system/app/YouTube</code><code>setfattr -n trusted.overlay.opaque -v y $$MODPATH/system/app/Bloatware</code>;並且 <code>/system/app/YouTube</code><code>/system/app/Bloatware</code> 將會在模組生效後被取代為空白目錄。</p><div class="tip custom-block"><p class="custom-block-title">與 Magisk 的差異</p><p>KernelSU 的 systemless 機制透過核心的 overlayfs 實作,而 Magisk 目前則是透過 magic mount (bind mount),兩者的實作方式有很大的差別,但最終的目標是一致的:不修改實際的 <code>/system</code> 分割區但修改 <code>/system</code> 檔案。</p></div><p>如果您對 overlayfs 感興趣,建議閱讀 Linux Kernel 關於 <a href="https://docs.kernel.org/filesystems/overlayfs.html" target="_blank" rel="noreferrer">overlayfs 的文件</a></p><h3 id="system-prop" tabindex="-1">system.prop <a class="header-anchor" href="#system-prop" aria-label="Permalink to &quot;system.prop&quot;"></a></h3><p>這個檔案的格式與 <code>build.prop</code> 完全相同:每一行都是由 <code>[key]=[value]</code> 組成。</p><h3 id="sepolicy-rule" tabindex="-1">sepolicy.rule <a class="header-anchor" href="#sepolicy-rule" aria-label="Permalink to &quot;sepolicy.rule&quot;"></a></h3><p>如果您的模組需要一些額外 SELinux 原則修補程式,請將這些原則新增至這個檔案中。這個檔案的每一行都將被視為一個原則陳述。</p><h2 id="module-installer" tabindex="-1">模組安裝程式 <a class="header-anchor" href="#module-installer" aria-label="Permalink to &quot;模組安裝程式 {#module-installer}&quot;"></a></h2><p>KernelSU 的模組安裝程式就是一個可以透過 KernelSU 管理員應用程式刷新的 Zip 檔案,這個 Zip 檔案的格式如下:</p><div class="language-txt vp-adaptive-theme"><button title="Copy Code" class="copy"></button><span class="lang">txt</span><pre class="shiki github-dark vp-code-dark"><code><span class="line"><span style="color:#e1e4e8;">module.zip</span></span>
<span class="line"><span style="color:#e1e4e8;"></span></span>
<span class="line"><span style="color:#e1e4e8;">├── customize.sh &lt;--- (Optional, more details later)</span></span>
<span class="line"><span style="color:#e1e4e8;">│ This script will be sourced by update-binary</span></span>
<span class="line"><span style="color:#e1e4e8;">├── ...</span></span>
<span class="line"><span style="color:#e1e4e8;">├── ... /* 其他模块文件 */</span></span>
<span class="line"><span style="color:#e1e4e8;"></span></span></code></pre><pre class="shiki github-light vp-code-light"><code><span class="line"><span style="color:#24292e;">module.zip</span></span>
<span class="line"><span style="color:#24292e;"></span></span>
<span class="line"><span style="color:#24292e;">├── customize.sh &lt;--- (Optional, more details later)</span></span>
<span class="line"><span style="color:#24292e;">│ This script will be sourced by update-binary</span></span>
<span class="line"><span style="color:#24292e;">├── ...</span></span>
<span class="line"><span style="color:#24292e;">├── ... /* 其他模块文件 */</span></span>
<span class="line"><span style="color:#24292e;"></span></span></code></pre></div><div class="warning custom-block"><p class="custom-block-title">WARNING</p><p>KernelSU 模組不支援在 Recovery 中安裝!!</p></div><h3 id="customizing-installation" tabindex="-1">自訂安裝程序 <a class="header-anchor" href="#customizing-installation" aria-label="Permalink to &quot;自訂安裝程序 {#customizing-installation}&quot;"></a></h3><p>如果您想要控制模組的安裝程序,可以在模組的目錄下建立一個名為 <code>customize.sh</code> 的檔案,這個檔案將會在模組被解壓縮後<strong>匯入</strong>至目前的 shell 中,如果您的模組需要依據裝置的 API 版本或裝置架構執行一些額外的作業,這個指令碼將非常有用。</p><p>如果您想完全控制指令碼的安裝程序,您可以在 <code>customize.sh</code> 中宣告 <code>SKIPUNZIP=1</code> 以跳過所有的預設安裝步驟;此時,您需要自行處理所有的安裝程序 (例如解壓縮模組、設定權限等)</p><p><code>customize.sh</code> 指令碼以「獨立模式」執行在 KernelSU 的 BusyBox <code>ash</code> shell 中。您可以使用下列變數和函式:</p><h4 id="variables" tabindex="-1">變數 <a class="header-anchor" href="#variables" aria-label="Permalink to &quot;變數 {#variables}&quot;"></a></h4><ul><li><code>KSU</code> (bool): 標示此指令碼執行於 KernelSU 環境中,此變數的值將永遠為 <code>true</code>,您可以透過它與 Magisk 進行區分。</li><li><code>KSU_VER</code> (string): KernelSU 目前的版本名稱 (例如 <code>v0.4.0</code>)</li><li><code>KSU_VER_CODE</code> (int): KernelSU 使用者空間目前的版本代碼 (例如 <code>10672</code>)</li><li><code>KSU_KERNEL_VER_CODE</code> (int): KernelSU 核心空間目前的版本代碼 (例如 <code>10672</code>)</li><li><code>BOOTMODE</code> (bool): 此變數在 KernelSU 中永遠為 <code>true</code></li><li><code>MODPATH</code> (path): 目前模組的安裝目錄</li><li><code>TMPDIR</code> (path): 可以存放暫存檔的位置</li><li><code>ZIPFILE</code> (path): 目前模組的安裝程式 Zip</li><li><code>ARCH</code> (string): 裝置的 CPU 架構,有這幾種:<code>arm</code>, <code>arm64</code>, <code>x86</code>, or <code>x64</code></li><li><code>IS64BIT</code> (bool): 是否為 64 位元裝置</li><li><code>API</code> (int): 目前裝置的 Android API 版本 (例如 Android 6.0 上為 <code>23</code>)</li></ul><div class="warning custom-block"><p class="custom-block-title">WARNING</p><p><code>MAGISK_VER_CODE</code> 在 KernelSU 永遠為 <code>25200</code><code>MAGISK_VER</code> 則為 <code>v25.2</code>,請不要透過這兩個變數來判斷是否為 KernelSU</p></div><h4 id="functions" tabindex="-1">函式 <a class="header-anchor" href="#functions" aria-label="Permalink to &quot;函式 {#functions}&quot;"></a></h4><div class="language-txt vp-adaptive-theme"><button title="Copy Code" class="copy"></button><span class="lang">txt</span><pre class="shiki github-dark vp-code-dark"><code><span class="line"><span style="color:#e1e4e8;">ui_print &lt;msg&gt;</span></span>
<span class="line"><span style="color:#e1e4e8;"> print &lt;msg&gt; to console</span></span>
<span class="line"><span style="color:#e1e4e8;"> Avoid using &#39;echo&#39; as it will not display in custom recovery&#39;s console</span></span>
<span class="line"><span style="color:#e1e4e8;"></span></span>
<span class="line"><span style="color:#e1e4e8;">abort &lt;msg&gt;</span></span>
<span class="line"><span style="color:#e1e4e8;"> print error message &lt;msg&gt; to console and terminate the installation</span></span>
<span class="line"><span style="color:#e1e4e8;"> Avoid using &#39;exit&#39; as it will skip the termination cleanup steps</span></span>
<span class="line"><span style="color:#e1e4e8;"></span></span>
<span class="line"><span style="color:#e1e4e8;">set_perm &lt;target&gt; &lt;owner&gt; &lt;group&gt; &lt;permission&gt; [context]</span></span>
<span class="line"><span style="color:#e1e4e8;"> if [context] is not set, the default is &quot;u:object_r:system_file:s0&quot;</span></span>
<span class="line"><span style="color:#e1e4e8;"> this function is a shorthand for the following commands:</span></span>
<span class="line"><span style="color:#e1e4e8;"> chown owner.group target</span></span>
<span class="line"><span style="color:#e1e4e8;"> chmod permission target</span></span>
<span class="line"><span style="color:#e1e4e8;"> chcon context target</span></span>
<span class="line"><span style="color:#e1e4e8;"></span></span>
<span class="line"><span style="color:#e1e4e8;">set_perm_recursive &lt;directory&gt; &lt;owner&gt; &lt;group&gt; &lt;dirpermission&gt; &lt;filepermission&gt; [context]</span></span>
<span class="line"><span style="color:#e1e4e8;"> if [context] is not set, the default is &quot;u:object_r:system_file:s0&quot;</span></span>
<span class="line"><span style="color:#e1e4e8;"> for all files in &lt;directory&gt;, it will call:</span></span>
<span class="line"><span style="color:#e1e4e8;"> set_perm file owner group filepermission context</span></span>
<span class="line"><span style="color:#e1e4e8;"> for all directories in &lt;directory&gt; (including itself), it will call:</span></span>
<span class="line"><span style="color:#e1e4e8;"> set_perm dir owner group dirpermission context</span></span></code></pre><pre class="shiki github-light vp-code-light"><code><span class="line"><span style="color:#24292e;">ui_print &lt;msg&gt;</span></span>
<span class="line"><span style="color:#24292e;"> print &lt;msg&gt; to console</span></span>
<span class="line"><span style="color:#24292e;"> Avoid using &#39;echo&#39; as it will not display in custom recovery&#39;s console</span></span>
<span class="line"><span style="color:#24292e;"></span></span>
<span class="line"><span style="color:#24292e;">abort &lt;msg&gt;</span></span>
<span class="line"><span style="color:#24292e;"> print error message &lt;msg&gt; to console and terminate the installation</span></span>
<span class="line"><span style="color:#24292e;"> Avoid using &#39;exit&#39; as it will skip the termination cleanup steps</span></span>
<span class="line"><span style="color:#24292e;"></span></span>
<span class="line"><span style="color:#24292e;">set_perm &lt;target&gt; &lt;owner&gt; &lt;group&gt; &lt;permission&gt; [context]</span></span>
<span class="line"><span style="color:#24292e;"> if [context] is not set, the default is &quot;u:object_r:system_file:s0&quot;</span></span>
<span class="line"><span style="color:#24292e;"> this function is a shorthand for the following commands:</span></span>
<span class="line"><span style="color:#24292e;"> chown owner.group target</span></span>
<span class="line"><span style="color:#24292e;"> chmod permission target</span></span>
<span class="line"><span style="color:#24292e;"> chcon context target</span></span>
<span class="line"><span style="color:#24292e;"></span></span>
<span class="line"><span style="color:#24292e;">set_perm_recursive &lt;directory&gt; &lt;owner&gt; &lt;group&gt; &lt;dirpermission&gt; &lt;filepermission&gt; [context]</span></span>
<span class="line"><span style="color:#24292e;"> if [context] is not set, the default is &quot;u:object_r:system_file:s0&quot;</span></span>
<span class="line"><span style="color:#24292e;"> for all files in &lt;directory&gt;, it will call:</span></span>
<span class="line"><span style="color:#24292e;"> set_perm file owner group filepermission context</span></span>
<span class="line"><span style="color:#24292e;"> for all directories in &lt;directory&gt; (including itself), it will call:</span></span>
<span class="line"><span style="color:#24292e;"> set_perm dir owner group dirpermission context</span></span></code></pre></div><h2 id="boot-scripts" tabindex="-1">開機指令碼 <a class="header-anchor" href="#boot-scripts" aria-label="Permalink to &quot;開機指令碼 {#boot-scripts}&quot;"></a></h2><p>在 KernelSU 中依據指令碼執行模式的不同分為兩種post-fs-data 模式和 late_start 服務模式。</p><ul><li><p>post-fs-data 模式</p><ul><li>這個階段是「封鎖」的。在執行完成之前或 10 秒鐘之後,開機程序會被暫停。</li><li>指令碼在任何模組被掛接之前執行。這使模組開發人員可以在模組被掛接之前動態調整他們的模組。</li><li>這個階段發生在 Zygote 啟動之前,這意味著 Android 中的一切。</li><li>使用 setprop 會導致開機程序死鎖!請使用 <code>resetprop -n &lt;prop_name&gt; &lt;prop_value&gt;</code> 替代。</li><li><strong>僅在必要時在此模式中執行指令碼</strong></li></ul></li><li><p>late_start 服務模式</p><ul><li>這個階段是「非封鎖」的。您的指令碼會與其餘的啟動程序<strong>平行</strong>執行。</li><li><strong>大多数脚本都建议在这种模式下运行</strong></li></ul></li></ul><p>在 KernelSU 中,開機指令碼依據存放位置的不同還分為兩種:一般指令碼和模組指令碼。</p><ul><li><p>一般指令碼</p><ul><li>放置於 <code>/data/adb/post-fs-data.d</code><code>/data/adb/service.d</code> 中。</li><li>僅有指令碼被設為可執行 (<code>chmod +x script.sh</code>) 時才會被執行。</li><li><code>post-fs-data.d</code> 中的指令碼以 post-fs-data 模式執行,在 <code>service.d</code> 中的指令碼以 late_start 服務模式執行。</li><li>模組<strong>不應</strong>在安裝程序中新增一般指令碼。</li></ul></li><li><p>模組指令碼</p><ul><li>放置於模組自己的資料夾中。</li><li>僅有在模組啟用時才會執行。</li><li><code>post-fs-data.sh</code> 以 post-fs-data 模式執行,而 <code>service.sh</code> 則以 late_start 服務模式執行。</li></ul></li></ul><p>所有启动脚本都将在 KernelSU 的 BusyBox ash shell 中运行,并启用“独立模式”。</p></div></div></main><footer class="VPDocFooter" data-v-6b87e69f data-v-ef5dee53><!--[--><!--]--><div class="edit-info" data-v-ef5dee53><div class="edit-link" data-v-ef5dee53><a class="VPLink link vp-external-link-icon no-icon edit-link-button" href="https://github.com/tiann/KernelSU/edit/main/website/docs/zh_TW/guide/module.md" target="_blank" rel="noreferrer" data-v-ef5dee53><!--[--><svg xmlns="http://www.w3.org/2000/svg" viewbox="0 0 24 24" class="edit-link-icon" aria-label="edit icon" data-v-ef5dee53><path d="M18,23H4c-1.7,0-3-1.3-3-3V6c0-1.7,1.3-3,3-3h7c0.6,0,1,0.4,1,1s-0.4,1-1,1H4C3.4,5,3,5.4,3,6v14c0,0.6,0.4,1,1,1h14c0.6,0,1-0.4,1-1v-7c0-0.6,0.4-1,1-1s1,0.4,1,1v7C21,21.7,19.7,23,18,23z"></path><path d="M8,17c-0.3,0-0.5-0.1-0.7-0.3C7,16.5,6.9,16.1,7,15.8l1-4c0-0.2,0.1-0.3,0.3-0.5l9.5-9.5c1.2-1.2,3.2-1.2,4.4,0c1.2,1.2,1.2,3.2,0,4.4l-9.5,9.5c-0.1,0.1-0.3,0.2-0.5,0.3l-4,1C8.2,17,8.1,17,8,17zM9.9,12.5l-0.5,2.1l2.1-0.5l9.3-9.3c0.4-0.4,0.4-1.1,0-1.6c-0.4-0.4-1.2-0.4-1.6,0l0,0L9.9,12.5z M18.5,2.5L18.5,2.5L18.5,2.5z"></path></svg> 在 GitHub 中編輯本頁面<!--]--></a></div><!----></div><nav class="prev-next" data-v-ef5dee53><div class="pager" data-v-ef5dee53><a class="pager-link prev" href="/zh_TW/guide/unofficially-support-devices.html" data-v-ef5dee53><span class="desc" data-v-ef5dee53>Previous page</span><span class="title" data-v-ef5dee53>非官方支援裝置</span></a></div><div class="pager" data-v-ef5dee53><a class="pager-link next" href="/zh_TW/guide/rescue-from-bootloop.html" data-v-ef5dee53><span class="desc" data-v-ef5dee53>Next page</span><span class="title" data-v-ef5dee53>搶救開機迴圈</span></a></div></nav></footer><!--[--><!--]--></div></div></div><!--[--><!--]--></div></div><footer class="VPFooter has-sidebar" data-v-5a346dfe data-v-e03eb2e1><div class="container" data-v-e03eb2e1><p class="message" data-v-e03eb2e1>係依據 GPL3 授權發行。</p><p class="copyright" data-v-e03eb2e1>Copyright © 2022-目前 KernelSU 開發人員</p></div></footer><!--[--><!--]--></div></div>
<script>window.__VP_HASH_MAP__=JSON.parse("{\"ja_jp_guide_difference-with-magisk.md\":\"665d74c8\",\"ja_jp_guide_faq.md\":\"b51546fa\",\"ja_jp_guide_hidden-features.md\":\"cdaa1636\",\"ja_jp_guide_installation.md\":\"7f4d5495\",\"id_id_guide_rescue-from-bootloop.md\":\"5cce45dd\",\"guide_app-profile.md\":\"27f6816c\",\"ja_jp_index.md\":\"474a6e1c\",\"guide_hidden-features.md\":\"469c34a7\",\"guide_installation.md\":\"f81e59f3\",\"guide_how-to-integrate-for-non-gki.md\":\"5ad8c015\",\"guide_rescue-from-bootloop.md\":\"656e5988\",\"guide_unofficially-support-devices.md\":\"692e1ce3\",\"id_id_guide_difference-with-magisk.md\":\"24526677\",\"id_id_guide_how-to-build.md\":\"f09b7a1a\",\"id_id_guide_module.md\":\"068bf86d\",\"id_id_guide_installation.md\":\"2d1e9f50\",\"ja_jp_guide_module.md\":\"dbefd5cf\",\"id_id_guide_unofficially-support-devices.md\":\"78d9391e\",\"id_id_guide_what-is-kernelsu.md\":\"b6c7dc2f\",\"guide_how-to-build.md\":\"83e45bdd\",\"id_id_index.md\":\"06fbc917\",\"index.md\":\"133d8307\",\"pt_br_guide_rescue-from-bootloop.md\":\"ee15e0d3\",\"ru_ru_guide_app-profile.md\":\"084a5687\",\"ru_ru_guide_faq.md\":\"1d543e4d\",\"id_id_guide_faq.md\":\"a19560c6\",\"guide_module.md\":\"fcc5d1bb\",\"pt_br_guide_app-profile.md\":\"dd333014\",\"guide_what-is-kernelsu.md\":\"f089de90\",\"zh_tw_index.md\":\"419b5e06\",\"pt_br_guide_module.md\":\"dc3df57b\",\"zh_cn_guide_how-to-integrate-for-non-gki.md\":\"fc1a10e8\",\"ru_ru_guide_hidden-features.md\":\"6c681acf\",\"ru_ru_guide_how-to-build.md\":\"3ac4fa09\",\"ja_jp_guide_rescue-from-bootloop.md\":\"7bb5da8e\",\"ja_jp_guide_unofficially-support-devices.md\":\"e12c36fa\",\"ja_jp_guide_what-is-kernelsu.md\":\"10b56327\",\"pt_br_guide_faq.md\":\"01a58b64\",\"pt_br_guide_how-to-build.md\":\"df81a6ce\",\"guide_difference-with-magisk.md\":\"6bc0c587\",\"ru_ru_guide_rescue-from-bootloop.md\":\"c45eb81e\",\"ru_ru_guide_unofficially-support-devices.md\":\"903ca1e7\",\"ru_ru_guide_what-is-kernelsu.md\":\"11586959\",\"ru_ru_index.md\":\"4a8cc387\",\"vi_vn_guide_app-profile.md\":\"0b09a7b5\",\"vi_vn_guide_difference-with-magisk.md\":\"57b7c7d3\",\"vi_vn_guide_faq.md\":\"510e2971\",\"vi_vn_guide_hidden-features.md\":\"f00f568c\",\"vi_vn_guide_how-to-build.md\":\"f65da7b9\",\"vi_vn_guide_how-to-integrate-for-non-gki.md\":\"f0064cd4\",\"vi_vn_guide_installation.md\":\"a6c03995\",\"vi_vn_guide_module.md\":\"d89b5b5b\",\"vi_vn_guide_rescue-from-bootloop.md\":\"dc2854ff\",\"vi_vn_guide_unofficially-support-devices.md\":\"2078077c\",\"vi_vn_guide_what-is-kernelsu.md\":\"48965b2f\",\"vi_vn_index.md\":\"f75cd4bf\",\"zh_cn_guide_app-profile.md\":\"cabe50a9\",\"zh_cn_guide_difference-with-magisk.md\":\"d3fa9085\",\"zh_cn_guide_faq.md\":\"ac23a8b3\",\"zh_cn_guide_hidden-features.md\":\"34a0e2c0\",\"pt_br_guide_unofficially-support-devices.md\":\"9d8e434d\",\"guide_faq.md\":\"89521262\",\"zh_cn_guide_installation.md\":\"b6f3f2dc\",\"zh_cn_guide_module.md\":\"95d10721\",\"zh_cn_guide_rescue-from-bootloop.md\":\"fa76b90c\",\"zh_cn_guide_how-to-build.md\":\"709f65fb\",\"zh_cn_guide_unofficially-support-devices.md\":\"4c68d324\",\"zh_cn_guide_what-is-kernelsu.md\":\"296b4e28\",\"zh_cn_index.md\":\"c6e87037\",\"zh_tw_guide_difference-with-magisk.md\":\"831b592b\",\"zh_tw_guide_faq.md\":\"e91224a7\",\"ru_ru_guide_installation.md\":\"ad88b078\",\"zh_tw_guide_hidden-features.md\":\"728dbc1c\",\"zh_tw_guide_how-to-build.md\":\"32de6944\",\"zh_tw_guide_how-to-integrate-for-non-gki.md\":\"035c5fb8\",\"ru_ru_guide_module.md\":\"19fabb40\",\"zh_tw_guide_installation.md\":\"48e9e870\",\"zh_tw_guide_module.md\":\"57647aec\",\"zh_tw_guide_rescue-from-bootloop.md\":\"499539d8\",\"zh_tw_guide_unofficially-support-devices.md\":\"e1ab05b4\",\"zh_tw_guide_what-is-kernelsu.md\":\"c73a8b16\",\"ru_ru_guide_how-to-integrate-for-non-gki.md\":\"12445e00\",\"pt_br_guide_hidden-features.md\":\"817db7e8\",\"pt_br_guide_difference-with-magisk.md\":\"c0878d2e\",\"pt_br_guide_what-is-kernelsu.md\":\"e7123691\",\"pt_br_index.md\":\"14860a0b\",\"id_id_guide_how-to-integrate-for-non-gki.md\":\"600d4255\",\"ru_ru_guide_difference-with-magisk.md\":\"928ea8b2\",\"pt_br_guide_installation.md\":\"163448ef\",\"pt_br_guide_how-to-integrate-for-non-gki.md\":\"6bd8e7c3\"}");window.__VP_SITE_DATA__=JSON.parse("{\"lang\":\"en-US\",\"dir\":\"ltr\",\"title\":\"KernelSU\",\"description\":\"A VitePress site\",\"base\":\"/\",\"head\":[],\"appearance\":true,\"themeConfig\":{},\"locales\":{\"root\":{\"label\":\"English\",\"lang\":\"en-US\",\"themeConfig\":{\"nav\":[{\"text\":\"Guide\",\"link\":\"/guide/what-is-kernelsu\"},{\"text\":\"Github\",\"link\":\"https://github.com/tiann/KernelSU\"}],\"lastUpdatedText\":\"last Updated\",\"sidebar\":{\"/guide/\":[{\"text\":\"Guide\",\"items\":[{\"text\":\"What is KernelSU?\",\"link\":\"/guide/what-is-kernelsu\"},{\"text\":\"Installation\",\"link\":\"/guide/installation\"},{\"text\":\"How to build?\",\"link\":\"/guide/how-to-build\"},{\"text\":\"Intergrate for non-GKI devices\",\"link\":\"/guide/how-to-integrate-for-non-gki\"},{\"text\":\"Unofficially supported devices\",\"link\":\"/guide/unofficially-support-devices.md\"},{\"text\":\"Module Guide\",\"link\":\"/guide/module.md\"},{\"text\":\"App Profile\",\"link\":\"/guide/app-profile.md\"},{\"text\":\"Rescue from bootloop\",\"link\":\"/guide/rescue-from-bootloop.md\"},{\"text\":\"FAQ\",\"link\":\"/guide/faq\"},{\"text\":\"Hidden features\",\"link\":\"/guide/hidden-features\"}]}]},\"socialLinks\":[{\"icon\":\"github\",\"link\":\"https://github.com/tiann/KernelSU\"}],\"footer\":{\"message\":\"Released under the GPL3 License.\",\"copyright\":\"Copyright © 2022-present KernelSU Developers\"},\"editLink\":{\"pattern\":\"https://github.com/tiann/KernelSU/edit/main/website/docs/:path\",\"text\":\"Edit this page on GitHub\"}},\"description\":\"A kernel-based root solution for Android GKI devices.\"},\"zh_CN\":{\"label\":\"简体中文\",\"lang\":\"zh-CN\",\"themeConfig\":{\"nav\":[{\"text\":\"指南\",\"link\":\"/zh_CN/guide/what-is-kernelsu\"},{\"text\":\"Github\",\"link\":\"https://github.com/tiann/KernelSU\"}],\"lastUpdatedText\":\"最后更新\",\"sidebar\":{\"/zh_CN/guide/\":[{\"text\":\"Guide\",\"items\":[{\"text\":\"什么是 KernelSU?\",\"link\":\"/zh_CN/guide/what-is-kernelsu\"},{\"text\":\"安装\",\"link\":\"/zh_CN/guide/installation\"},{\"text\":\"如何构建?\",\"link\":\"/zh_CN/guide/how-to-build\"},{\"text\":\"如何为非GKI设备集成 KernelSU\",\"link\":\"/zh_CN/guide/how-to-integrate-for-non-gki\"},{\"text\":\"非官方支持设备\",\"link\":\"/zh_CN/guide/unofficially-support-devices.md\"},{\"text\":\"模块开发指南\",\"link\":\"/zh_CN/guide/module.md\"},{\"text\":\"App Profile\",\"link\":\"/zh_CN/guide/app-profile.md\"},{\"text\":\"救砖\",\"link\":\"/zh_CN/guide/rescue-from-bootloop.md\"},{\"text\":\"常见问题\",\"link\":\"/zh_CN/guide/faq\"},{\"text\":\"隐藏功能\",\"link\":\"/zh_CN/guide/hidden-features\"}]}]},\"socialLinks\":[{\"icon\":\"github\",\"link\":\"https://github.com/tiann/KernelSU\"}],\"footer\":{\"message\":\"在 GPL3 许可证下发布。\",\"copyright\":\"Copyright © 2022-现在 KernelSU 开发者\"},\"editLink\":{\"pattern\":\"https://github.com/tiann/KernelSU/edit/main/website/docs/:path\",\"text\":\"在 GitHub 中编辑本页\"}},\"description\":\"一个基于内核,为安卓 GKI 准备的 root 方案。\"},\"zh_TW\":{\"label\":\"繁體中文\",\"lang\":\"zh-TW\",\"themeConfig\":{\"nav\":[{\"text\":\"指南\",\"link\":\"/zh_TW/guide/what-is-kernelsu\"},{\"text\":\"Github\",\"link\":\"https://github.com/tiann/KernelSU\"}],\"lastUpdatedText\":\"上次更新\",\"sidebar\":{\"/zh_TW/guide/\":[{\"text\":\"Guide\",\"items\":[{\"text\":\"什麼是 KernelSU\",\"link\":\"/zh_TW/guide/what-is-kernelsu\"},{\"text\":\"安裝\",\"link\":\"/zh_TW/guide/installation\"},{\"text\":\"如何建置?\",\"link\":\"/zh_TW/guide/how-to-build\"},{\"text\":\"如何為非 GKI 核心整合 KernelSU\",\"link\":\"/zh_TW/guide/how-to-integrate-for-non-gki\"},{\"text\":\"非官方支援裝置\",\"link\":\"/zh_TW/guide/unofficially-support-devices.md\"},{\"text\":\"模組指南\",\"link\":\"/zh_TW/guide/module.md\"},{\"text\":\"搶救開機迴圈\",\"link\":\"/zh_TW/guide/rescue-from-bootloop.md\"},{\"text\":\"常見問題\",\"link\":\"/zh_TW/guide/faq\"},{\"text\":\"隱藏功能\",\"link\":\"/zh_TW/guide/hidden-features\"}]}]},\"socialLinks\":[{\"icon\":\"github\",\"link\":\"https://github.com/tiann/KernelSU\"}],\"footer\":{\"message\":\"係依據 GPL3 授權發行。\",\"copyright\":\"Copyright © 2022-目前 KernelSU 開發人員\"},\"editLink\":{\"pattern\":\"https://github.com/tiann/KernelSU/edit/main/website/docs/:path\",\"text\":\"在 GitHub 中編輯本頁面\"}},\"description\":\"一個以核心為基礎,適用於 Android GKI 的 Root 解決方案。\"},\"ja_JP\":{\"label\":\"日本語\",\"lang\":\"ja-JP\",\"themeConfig\":{\"nav\":[{\"text\":\"ガイド\",\"link\":\"/ja_JP/guide/what-is-kernelsu\"},{\"text\":\"Github\",\"link\":\"https://github.com/tiann/KernelSU\"}],\"lastUpdatedText\":\"最終更新\",\"sidebar\":{\"/ja_JP/guide/\":[{\"text\":\"ガイド\",\"items\":[{\"text\":\"KernelSU とは?\",\"link\":\"/ja_JP/guide/what-is-kernelsu\"},{\"text\":\"インストール\",\"link\":\"/ja_JP/guide/installation\"},{\"text\":\"ビルドするには?\",\"link\":\"/guide/how-to-build\"},{\"text\":\"非 GKI デバイスでの実装\",\"link\":\"/guide/how-to-integrate-for-non-gki\"},{\"text\":\"非公式の対応デバイス\",\"link\":\"/ja_JP/guide/unofficially-support-devices.md\"},{\"text\":\"モジュールのガイド\",\"link\":\"/ja_JP/guide/module.md\"},{\"text\":\"ブートループからの復旧\",\"link\":\"/ja_JP/guide/rescue-from-bootloop.md\"},{\"text\":\"よくある質問\",\"link\":\"/ja_JP/guide/faq\"},{\"text\":\"隠し機能\",\"link\":\"/ja_JP/guide/hidden-features\"}]}]},\"socialLinks\":[{\"icon\":\"github\",\"link\":\"https://github.com/tiann/KernelSU\"}],\"footer\":{\"message\":\"GPL3 ライセンスでリリースされています。\",\"copyright\":\"Copyright © 2022-現在 KernelSU 開発者\"},\"editLink\":{\"pattern\":\"https://github.com/tiann/KernelSU/edit/main/website/docs/:path\",\"text\":\"GitHub でこのページを編集\"}},\"description\":\"Android GKI デバイス向けのカーネルベースの root ソリューション\"},\"vi_VN\":{\"label\":\"Tiếng Việt\",\"lang\":\"vi-VN\",\"themeConfig\":{\"nav\":[{\"text\":\"Hướng Dẫn\",\"link\":\"/vi_VN/guide/what-is-kernelsu\"},{\"text\":\"Github\",\"link\":\"https://github.com/tiann/KernelSU\"}],\"lastUpdatedText\":\"cập nhật lần cuối\",\"sidebar\":{\"/vi_VN/guide/\":[{\"text\":\"Hướng Dẫn\",\"items\":[{\"text\":\"KernelSU là gì?\",\"link\":\"/vi_VN/guide/what-is-kernelsu\"},{\"text\":\"Cách cài đặt\",\"link\":\"/vi_VN/guide/installation\"},{\"text\":\"Cách để build?\",\"link\":\"/vi_VN/guide/how-to-build\"},{\"text\":\"Tích hợp vào thiết bị không sử dụng GKI\",\"link\":\"/vi_VN/guide/how-to-integrate-for-non-gki\"},{\"text\":\"Thiết bị hỗ trợ không chính thức\",\"link\":\"/vi_VN/guide/unofficially-support-devices.md\"},{\"text\":\"FAQ - Câu hỏi thường gặp\",\"link\":\"/vi_VN/guide/faq\"}]}]},\"socialLinks\":[{\"icon\":\"github\",\"link\":\"https://github.com/tiann/KernelSU\"}],\"footer\":{\"message\":\"Phát hành dưới giấy phép GPL3.\",\"copyright\":\"Bản Quyền © 2022-nay KernelSU Developers\"},\"editLink\":{\"pattern\":\"https://github.com/tiann/KernelSU/edit/main/website/docs/:path\",\"text\":\"Chỉnh sửa trang này trên GitHub\"}},\"description\":\"Một giải pháp root trực tiếp trên kernel dành cho các thiết bị hỗ trợ GKI.\"},\"id_ID\":{\"label\":\"Bahasa\",\"lang\":\"id-ID\",\"themeConfig\":{\"nav\":[{\"text\":\"Petunjuk\",\"link\":\"/id_ID/guide/what-is-kernelsu\"},{\"text\":\"Github\",\"link\":\"https://github.com/tiann/KernelSU\"}],\"lastUpdatedText\":\"Update Terakhir\",\"sidebar\":{\"/id_ID/guide/\":[{\"text\":\"Petunjuk\",\"items\":[{\"text\":\"Apa itu KernelSU?\",\"link\":\"/id_ID/guide/what-is-kernelsu\"},{\"text\":\"Instalasi\",\"link\":\"/id_ID/guide/installation\"},{\"text\":\"Bagaimana cara buildnya?\",\"link\":\"/id_ID/guide/how-to-build\"},{\"text\":\"Integrasi untuk perangkat non-GKI\",\"link\":\"/id_ID/guide/how-to-integrate-for-non-gki\"},{\"text\":\"Perangkat yang didukung secara tidak resmi\",\"link\":\"/id_ID/guide/unofficially-support-devices.md\"},{\"text\":\"Petunjuk module\",\"link\":\"/id_ID/guide/module.md\"},{\"text\":\"Antisipasi dari bootloop\",\"link\":\"/id_ID/guide/rescue-from-bootloop.md\"},{\"text\":\"FAQ\",\"link\":\"/id_ID/guide/faq\"}]}]},\"socialLinks\":[{\"icon\":\"github\",\"link\":\"https://github.com/tiann/KernelSU\"}],\"footer\":{\"message\":\"Rilis Dibawah Lisensi GPL3.\",\"copyright\":\"Copyright © 2022-Sekarang pengembang KernelSU \"},\"editLink\":{\"pattern\":\"https://github.com/tiann/KernelSU/edit/main/website/docs/:path\",\"text\":\"Edit Halaman ini di GitHub\"}},\"description\":\"Solusi root kernel-based untuk perangkat Android GKI.\"},\"ru_RU\":{\"label\":\"Русский\",\"lang\":\"ru-RU\",\"themeConfig\":{\"nav\":[{\"text\":\"Руководство\",\"link\":\"/ru_RU/guide/what-is-kernelsu\"},{\"text\":\"Github\",\"link\":\"https://github.com/tiann/KernelSU\"}],\"lastUpdatedText\":\"последнее обновление\",\"sidebar\":{\"/ru_RU/guide/\":[{\"text\":\"Руководство\",\"items\":[{\"text\":\"Что такое KernelSU?\",\"link\":\"/ru_RU/guide/what-is-kernelsu\"},{\"text\":\"Установка\",\"link\":\"/ru_RU/guide/installation\"},{\"text\":\"Как собрать?\",\"link\":\"/ru_RU/guide/how-to-build\"},{\"text\":\"Реализация в устройствах, не относящихся к GKI\",\"link\":\"/ru_RU/guide/how-to-integrate-for-non-gki\"},{\"text\":\"Неофициально поддерживаемые устройства\",\"link\":\"/ru_RU/guide/unofficially-support-devices.md\"},{\"text\":\"Руководство по разработке модулей\",\"link\":\"/ru_RU/guide/module.md\"},{\"text\":\"Профиль приложений\",\"link\":\"/ru_RU/guide/app-profile.md\"},{\"text\":\"Выход из циклической загрузки\",\"link\":\"/ru_RU/guide/rescue-from-bootloop.md\"},{\"text\":\"FAQ\",\"link\":\"/ru_RU/guide/faq\"},{\"text\":\"Скрытые возможности\",\"link\":\"/ru_RU/guide/hidden-features\"}]}]},\"socialLinks\":[{\"icon\":\"github\",\"link\":\"https://github.com/tiann/KernelSU\"}],\"footer\":{\"message\":\"Выпускается под лицензией GPL3.\",\"copyright\":\"Авторские права © 2022-текущее Разработчики KernelSU\"},\"editLink\":{\"pattern\":\"https://github.com/tiann/KernelSU/edit/main/website/docs/:path\",\"text\":\"Редактировать эту страницу на GitHub\"}},\"description\":\"Решение на основе ядра root для устройств Android GKI.\"},\"pt_BR\":{\"label\":\"Português (Brasil)\",\"lang\":\"pt-BR\",\"themeConfig\":{\"nav\":[{\"text\":\"Guia\",\"link\":\"/pt_BR/guide/what-is-kernelsu\"},{\"text\":\"Github\",\"link\":\"https://github.com/tiann/KernelSU\"}],\"lastUpdatedText\":\"Última atualização\",\"sidebar\":{\"/pt_BR/guide/\":[{\"text\":\"Guia\",\"items\":[{\"text\":\"O que é KernelSU?\",\"link\":\"/pt_BR/guide/what-is-kernelsu\"},{\"text\":\"Instalação\",\"link\":\"/pt_BR/guide/installation\"},{\"text\":\"Como construir?\",\"link\":\"/pt_BR/guide/how-to-build\"},{\"text\":\"Integração para dispositivos não GKI\",\"link\":\"/pt_BR/guide/how-to-integrate-for-non-gki\"},{\"text\":\"Dispositivos com suporte não oficial\",\"link\":\"/pt_BR/guide/unofficially-support-devices.md\"},{\"text\":\"Guias de módulo\",\"link\":\"/pt_BR/guide/module.md\"},{\"text\":\"Perfil do Aplicativo\",\"link\":\"/pt_BR/guide/app-profile.md\"},{\"text\":\"Resgate do bootloop\",\"link\":\"/pt_BR/guide/rescue-from-bootloop.md\"},{\"text\":\"FAQ\",\"link\":\"/pt_BR/guide/faq\"},{\"text\":\"Recursos ocultos\",\"link\":\"/pt_BR/guide/hidden-features\"}]}]},\"socialLinks\":[{\"icon\":\"github\",\"link\":\"https://github.com/tiann/KernelSU\"}],\"footer\":{\"message\":\"Lançado sob a Licença GPL3.\",\"copyright\":\"Copyright © Desenvolvedores KernelSU atuais de 2022\"},\"editLink\":{\"pattern\":\"https://github.com/tiann/KernelSU/edit/main/website/docs/:path\",\"text\":\"Edite esta página no GitHub\"}},\"description\":\"Uma solução root baseada em kernel para dispositivos Android GKI.\"}},\"scrollOffset\":90,\"cleanUrls\":false}");</script>
</body>
</html>