越狱后 tweak 总是不生效?ElleKit 与 PreferenceLoader 注入环境一次讲透

越狱之后最常听到的一句吐槽,不是「工具不好用」,而是「我明明装了插件,怎么一点反应都没有」。要么是设置里找不到那个 tweak 的开关,要么是插件装上就进安全模式,要么干脆什么都没发生。

出现这种情况,多数时候不是那个 tweak 本身的问题,而是底层的「注入环境」没装好。现代无根(rootless)越狱里,负责让 tweak 跑起来的两块基石,一个叫 ElleKit,一个叫 PreferenceLoader。这篇就把它们讲清楚,并给出最常见的几种故障怎么排查。

先分清:ElleKit 和 PreferenceLoader 各管什么

这俩名字经常一起出现,但分工完全不同,搞混了就容易瞎折腾。

  • ElleKit:一个「tweak 注入器 / 函数钩子库」。它的作用是让 tweak 的代码真正注入到系统进程和 App 进程里——换句话说,没有它,你装的 tweak 就是一堆躺在手机里的死文件,根本跑不起来。它直接对内存页做补丁,实现了 Substrate 和 libhooker 两套 API,所以兼容绝大多数老 tweak。
  • PreferenceLoader:负责「把 tweak 的设置项加载到系统设置里」。它去扫描 /Library/PreferenceLoader/ 目录下的 plist 文件,把这些定义好的设置界面挂到「设置」App 里。没有它,即使 tweak 正常注入了,你在「设置」里也看不到它的开关和选项。

一句话概括:ElleKit 管「跑不跑得起来」,PreferenceLoader 管「设置里看不看得见」。两者缺一个,tweak 就会表现异常。

为什么无根越狱时代这俩成了标配

在早期的有根(rootful)越狱里,注入依赖的是 Cydia Substrate,设置加载走 PreferenceLoader,这一套已经很成熟。但到了无根越狱(rootless jailbreak)时代,文件系统结构变了,很多老组件不能直接用,于是有了新的注入方案。

现在主流的无根越狱——Dopamine、palera1n 这些——底层注入基本都是 ElleKit 系的。所以你会看到,越狱完成后进 Sileo,首要任务往往就是确认 ElleKit 和 PreferenceLoader 这两样已经装好、并且更新到最新。

顺带提一句同类:除了 ElleKit,无根环境里还有 libhooker、Substitute 等注入器,不同越狱工具默认带的可能不一样。但共同点是——你当前环境用哪个注入器,就必须确保它完整、版本匹配,否则 tweak 一律不生效。

常见故障一:tweak 装了但没反应

这是最高频的问题。按下面顺序排查:

  • 先确认注入器在不在:打开 Sileo(或 Zebra),在「已安装」里搜 ElleKit(或你环境对应的注入器),确认它已安装、状态正常。没有的话直接装上,装完通常要重启或重新越狱一次让它生效。
  • 确认 tweak 是 rootless 版:很多老 tweak 只有 rootful 版,直接装到无根环境里不生效甚至报错。安装时留意包名或说明里有没有 rootless 标记,优先选明确支持无根环境的版本。
  • 确认 iOS 版本兼容:tweak 描述里一般会写支持的 iOS 版本范围,别装了一个只支持到 iOS 16 的插件到自己 iOS 18 的设备上。

常见故障二:设置里找不到 tweak 的开关

tweak 明明装了,但进「设置」怎么都翻不到它的选项,这是 PreferenceLoader 缺失或损坏的典型表现。

  • 检查 PreferenceLoader 是否已装:在包管理器里搜 PreferenceLoader,确认已安装。它通常作为 tweak 的依赖自动装上,但有时会被误删。
  • 重新安装关键组件:如果确认缺失,重新装上 PreferenceLoader 和注入器(如 ElleKit),然后执行一次 ldrestart(或直接重启设备)让改动生效。
  • 重新越狱 / Respring:改完组件后,很多环境需要重新 Respring 或重新跑一次越狱,设置项才会刷新出来。

底层机制其实很简单:PreferenceLoader 负责扫描 plist 并生成设置入口,注入器负责让 tweak 代码活起来。这俩一断,整个「tweak 设置加载链」就断了,设置里自然什么都不显示。

常见故障三:一装 tweak 就进安全模式

安全模式(Safe Mode)通常是某个 tweak 跟系统或其它插件冲突导致的。

  • 定位肇事插件:如果问题是在装完某个 tweak 之后立刻出现的,先进包管理器把那个 tweak 卸载或禁用,再测试是否恢复正常。
  • 别一次性装一堆:一个个装、装一个测一下,能大幅降低排查难度。一次装七八个,出问题都不知道是哪个引起的。
  • 检查依赖版本:有些 tweak 依赖特定版本的注入器或其它库,版本对不上也会崩溃进安全模式。

核心组件从哪下载

这几个组件都不要去乱七八糟的第三方源,走官方渠道最稳:

  • ElleKit:官方源码在 GitHub github.com/tealbathingsuit/ellekit,但实际安装一般不用自己编译——越狱完成后在 Sileo/Zebra 里通过默认源直接搜 ElleKit 安装即可(Dopamine、palera1n 等工具自带的源里就有)。
  • PreferenceLoader:同样在包管理器里直接搜 PreferenceLoader 安装,属于 tweak 的常规依赖,绝大多数情况下会被自动拉取。

如果你用的是 Dopamine 无根越狱,它自带的包管理器(Sileo/Zebra)里这几个组件通常都已经预装好了,你只需在装 tweak 时留意别误删它们、并及时更新即可。

写在最后:把环境理顺,比装一百个 tweak 都重要

很多新手越狱后的第一反应是疯狂装插件,结果环境没理顺,装多少都白搭。真正的顺序应该是:先把 ElleKit(或你的注入器)和 PreferenceLoader 确认到位、更新到最新,再一个个装 tweak、装一个测一个。这样出了问题也能很快定位。

这篇文章里的组件名、作用、路径都是客观事实,但「怎么排查」这部分带了我自己折腾的经验——实际用下来,80% 的「tweak 不生效」都能靠上面这几步解决。