第四节 Theos 安装(含 Xcode 15 兼容)
学习目标
学完本节,希望你能够:
- 在 macOS 上完成 Theos 的安装(克隆、环境变量、ldid、SDK)。
- 说出 Xcode 15 下 Theos 要特别注意的点:SDK 路径、架构 arm64e、签名用 ldid、rootless 路径。
- 能按步骤解决「SDK 找不到、架构警告、签名失败」等常见报错。
- 跑通「创建项目 → make → make package」并确认生成 dylib/deb。
- 知道去哪更新 Theos 和 SDK,以及如何验证安装成功。
阅读提示:本节以 Xcode 15 为主环境写,其他 Xcode 版本思路类似,主要差在 SDK 版本号。
常见疑问:Xcode 15 还能用 Theos 吗?------能。Theos 是命令行工具链,对 Xcode 版本依赖小,调好 SDK 和 ldid 即可。
一、Theos 在 Xcode 15 里能用吗?一句话结论
能。 Theos 在 Xcode 15 下完全可用:项目创建、Logos 编译、打包 deb、安装到越狱设备都没问题。和 MonkeyDev 不同,Theos 不依赖 Xcode 的图形界面,主要注意 SDK 路径、架构、签名 几处即可。
完全支持的功能
- 项目创建和编译
- Logos 语法
- 打包 deb、安装到越狱设备
- Makefile 构建
需要你留意的变更
- SDK 路径和版本号(如 iPhoneOS17.0.sdk)
- 代码签名更严,建议用 ldid
- 架构要包含 arm64e
二、安装与配置(一般怎么干)
全新安装步骤
记成一句话:装依赖 → 克隆 Theos → 配环境变量 → 装 ldid → 搞掂 SDK。
bash
# 1. 依赖(若无 Homebrew 先装)
brew install dpkg ldid git wget
# 2. 克隆 Theos
export THEOS=~/theos
git clone --recursive https://github.com/theos/theos.git $THEOS
# 3. SDK(关键)
# 方式 A:从本机 Xcode 拷贝
sudo cp -r /Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS.sdk \
$THEOS/sdks/iPhoneOS17.0.sdk
# 方式 B:用社区 sdks 仓库(推荐)
cd $THEOS/sdks
wget https://github.com/theos/sdks/archive/refs/heads/master.zip
unzip master.zip && cp -r sdks-master/* . && rm -rf sdks-master master.zip
环境变量
bash
# 写入 ~/.zshrc 或 ~/.bash_profile
export THEOS=~/theos
export THEOS_DEVICE_IP=127.0.0.1
export THEOS_DEVICE_PORT=2222
export THEOS_SDK_NAME=iphoneos17.0 # 按你实际 SDK 名改
export PATH=$THEOS/bin:$PATH
三、Xcode 15 下的 Makefile 与 rootless
Makefile 建议配置
makefile
ARCHS = arm64 arm64e
TARGET = iphone:clang:17.0:15.0
SDKVERSION = 17.0
SYSROOT = $(THEOS)/sdks/iPhoneOS17.0.sdk
THEOS_PACKAGE_SCHEME = rootless # iOS 15+ rootless
TARGET_CODESIGN = $(THEOS)/bin/ldid
TARGET_CODESIGN_FLAGS = -S
include $(THEOS)/makefiles/common.mk
TWEAK_NAME = MyTweak
MyTweak_FILES = Tweak.x
MyTweak_CFLAGS = -fobjc-arc -Wno-deprecated-declarations
MyTweak_INSTALL_PATH = /var/jb/Library/MobileSubstrate/DynamicLibraries
include $(THEOS_MAKE_PATH)/tweak.mk
after-install:: install.exec "killall -9 SpringBoard || true"
Rootless(iOS 15+)路径
越狱机若是 rootless (如 palera1n),dylib 装到 /var/jb/... 而不是 /Library/... 。上面 MyTweak_INSTALL_PATH 就是 rootless 路径;非 rootless 可改为 /Library/MobileSubstrate/DynamicLibraries。
四、创建项目与编译
用 nic.pl 创建项目
bash
$THEOS/bin/nic.pl
# 建议选 tweak_modern、application_modern、preference_bundle_modern 等带 modern 的模板
编译、打包、安装
bash
make clean && make
make package
make install THEOS_DEVICE_IP=localhost THEOS_DEVICE_PORT=2222
记一句:设备要先 SSH 端口转发(如 iproxy 2222 22),再 make install。
五、常见错误与解决(对照表)
| 现象/报错 | 原因 | 怎么办 |
|---|---|---|
xcrun: error: SDK "iphoneos" cannot be located |
SDK 路径变了 | xcode-select -s /Applications/Xcode.app/Contents/Developer 或 Makefile 里写死 SYSROOT = $(THEOS)/sdks/iPhoneOS17.0.sdk |
ld: warning: ignoring file ... arm64e |
缺 arm64e | Makefile 里 ARCHS = arm64 arm64e |
codesign failed |
签名问题 | 用 ldid:TARGET_CODESIGN = $(THEOS)/bin/ldid,TARGET_CODESIGN_FLAGS = -S |
make: *** No rule to make target |
Makefile/路径错 | 检查 TWEAK_FILES、路径、include 是否正确 |
dpkg-deb: error |
打包格式 | 检查 control 文件、layout 目录 |
六、验证安装成功
跑这几条心里有数即可:
bash
$THEOS/bin/nic.pl --version # 或直接 nic.pl 看模板列表
which ldid
ls $THEOS/sdks/
cd /tmp && $THEOS/bin/nic.pl # 建个测试 tweak,make 一下看是否生成 .theos/obj/.../xxx.dylib
七、社区与更新
- 更新 Theos :
cd $THEOS && git pull && git submodule update --init --recursive - 更新 SDK :
cd $THEOS/sdks && git pull(若用 theos/sdks 仓库) - 官方仓库:https://github.com/theos/theos
- Logos 等文档可查 iPhone Dev Wiki、社区 /r/jailbreakdevelopers。
本节小结
你只要记住这几条就行:
- Theos 在 Xcode 15 下完全可用,重点是 SDK 路径、arm64e、ldid 签名、rootless 路径。
- 安装流程:克隆 Theos → 环境变量 → ldid → SDK;rootless 机子装到
/var/jb/...。 - 常见坑:SDK 找不到(设 SYSROOT/xcode-select)、缺 arm64e(ARCHS)、签名失败(改用 ldid)。
- 验证:
nic.pl能选模板、make能出 dylib、make package能出 deb。
本节术语速查
| 术语 | 一句话解释 |
|---|---|
| rootless | 部分新越狱把系统文件放到 /var/jb,不再直接写 /,安装路径要跟着改。 |
| ldid | 越狱环境常用签名工具,给二进制签 entitlements,Theos 默认用它。 |
| SYSROOT | 编译时用的 SDK 根目录,指向某版本 iPhoneOS.sdk。 |
本节思考与练习
- 概念:用一句话说明「为什么 Theos 对 Xcode 版本依赖比 MonkeyDev 小」。
- 应用 :若报错
SDK "iphoneos" cannot be located,你会按什么顺序排查? - 动手 :在本机完成 Theos 安装与环境变量配置,执行
nic.pl并成功执行一次make。 - 综合:查当前 Theos 的 rootless 安装路径(/var/jb 还是 /Library),并写在你的 Makefile 注释里。
下一节预告 :下一节是 macOS 安装 Theos 完整教程,从零一步步:Command Line Tools、克隆、环境变量、ldid(Intel/Apple Silicon)、验证与第一个项目,把整条链路串起来。