如何在Xcode模拟器中测试Tweak (1)
先上效果图
模拟器测试的优点
- 功能基本和实机一致
- 表面没有但实际有的功能如Control Center、缺失的Settings项目也能通过Tweak解除限制显示出来
- 无需越狱
- 因此可以在新系统无法越狱时第一时间提前适配
- 测试各种iOS版本、设备
- 继承模拟器本身的优点
测试环境
- x64 macOS
- Xcode 10-12
工具
原理
- 使用Theos编译出模拟器架构的dylib,由simject加载。
步骤
-
因为坑太多了,所以不一定都能想起来,想起来了再补充
-
安装simject
git clone https://github.com/angelXwind/simject.git cd simject/ make setup
- 安装后新增目录 /opt/simject 对应实机上的/Library/MobileSubstrate/DynamicLibraries, 把dylib和plist放在这里后,simject就会帮我们加载
- 新增命令行工具 resim, 类似sbreload,可用于重启模拟器的SpringBoard。
- 每个模拟器启动后并不会自动加载simject,需要
resim
一次,之后仅需在需要sbreload
时再resim
- 每个模拟器启动后并不会自动加载simject,需要
-
安装Cydia Substrate
- simject提供了一个脚本帮我们自动安装好Cydia Substrate
- 如果是Xcode 10和以上,
sudo ./installsubstrate.sh subst
否则sudo ./installsubstrate.sh cs
-
测试
- simject提供了simjectExampleTweak这个demo供我们测试
- 打开模拟器
make setup
resim
- 可以看到模拟器已被重启,并弹出了一个AlertView
是不是很简单,不,这只是坑的开始,甚至很多人demo都跑不起来。
- 总结
- 在项目Makefile中加入
TARGET = simulator:clang::7.0
- 如果需要链接Private Frameworks可以在这下载patched Simulator SDK
- 增加一个新target
setup::
,需要安装到模拟器时就make setup
来编译+手动拷贝编译产物至/opt/simject
- 在项目Makefile中加入