APatch 中文文档 下载 App

APatch 和 KernelSU 的区别 — 要不要内核源码

共同祖先:都是内核级 root

APatch 和 KernelSU 都是内核级 root 方案——它们都不修改 init 系统,而是直接在内核层面授予 root 权限。APatch 管理器界面甚至直接从 KernelSU 复制修改而来,模块系统也基本兼容。

这两个方案从外观上看非常相似,但安装前提和核心技术完全不同。

最大的区别:要不要内核源码

KernelSU 的 root 获取需要一个前提条件:必须有设备的内核源码。

KernelSU 的开发者 tiann 需要在源码层面做修改、编译新内核、刷入 boot 分区。如果 OEM 没有公开内核源码(Android 内核 GPL 要求厂商公开,但很多厂商以"没有修改内核"为借口回避),KernelSU 就没法用。

APatch 则完全不同:只需要一份原厂 boot.img,不需要内核源码。

KernelPatch 框架通过分析内核的符号表(CONFIG_KALLSYMS),在运行时动态 patch 内核二进制。整个过程不需要源代码,只需要编译好的产物。这对 OEM 生态来说是一个巨大的自由度提升——几乎所有 Android 设备都能通过某种方式拿到 boot.img(开发者模式、刷机包提取、adb 备份),但不是所有设备都有内核源码。

技术实现差异

维度KernelSUAPatch
安装前提OEM 公开内核源码有原厂 boot.img 即可
内核修改方式源码级修改 + 重编译KernelPatch 二进制级补丁
内核版本支持取决于设备3.18 – 6.12(覆盖绝大多数)
是否支持旧内核取决于设备支持非 GKI 内核设备
SELinux 处理需要 patch可 hook 绕过,不强制 patch
模块系统KSU 模块APM(兼容 Magisk)+ KPM

谁先出谁后出

时间线上 KernelSU(2022)比 APatch(2023)早约一年。APatch 可以看作在 KernelSU 的基础上,引入 KernelPatch 这个动态补丁框架,把"需要内核源码"这个门槛给去掉了。

生态现状

截至目前,KernelSU 和 APatch 的开发者社区和模块生态基本是共享的:

两者的关系更像是"同根生出的两种实现"而不是"两个独立的竞争方案"。