一、tweak 工程
1、创建步骤
a) terminal cd 到想要存放项目的目录下
b) 按图步骤完成即可
二、工程文件描述
1、control
记录 deb 包管理系统所需的基本信息。
2、appInfo.plist 描述 tweak 的作用范围,以下可混合使用
a) bubdles,tweak 控制的应用 bundle id
b) classed, tweak 控制的 class
c) executables tweak 控制的
注意:如果 Filter 下的类别超过一个,需要加上 "Mode String Any"
3、makefile
a) ProjectName = Tweak.xm,多个文件的时候改为 "= Tweakxm New.mm Objc.m"
b) ProjectName_FRAMEWORKS = UIKit 所依赖的框架
c) 指定 ios sdk 版本,安装要求的版本
下面两段意思是: 开发框架为 armv7,采用 7.1 版本的 sdk,且发布要求在 ios 7.1以上版本。
ARCHS = armv7 TARGET = iphone:7.1:7.1
d) 安装的时候需要指定设备的 ip address,故在最上面加上
THEOS_DEVICE_IP = 192.168.2.117
4、Tweak.xm
a) %hook
%hook ClassName // 要 hook 的方法名 %end
b) %log, 多个表达的时候加上 ","
%log((NSString*)@"abc", (NSString*)@"efg");
c) %orig:调用原来的方法
d) %group: 将 hook 分组, 如果不指定默认是 %group _ungrouped
%group name % hook className %end %end
e) %init(groupName): 不带参数等价于 %init(_ungrouped)
f) %ctor {}: tweak 的构造完成初始化工作。
%ctor { %init; // 如果此处没有初始化 _ungrouped,则所有属于 _ungrouped 的 hook 将不工作。 %init(custom group); }
三、部署和安装
a) cd 到项目目录
b) make:编译操作
多次后会有提示 "make[2]: Nothing to be done for ",执行 "$ make clean"
c) make package:打包
出现错误:
Making stage for tweak FirstTweak...
/Applications/Xcode.app/Contents/Developer/usr/bin/make package requires you to have a layout/ directory in the project root, containing the basic package structure, or a control file in the project root describing the package.
make: *** [internal-package] Error 1
原因:文件路径含有空格
d) 在 makefile 中填写好设备的 ip address,并 ssh 连接设备 "$ ssh [email protected]" 再执行 "make package install" 。
四、清理编译打包产生的工程文件
$ make clean $ rm -rf ./obj $ rm -rf /Users/...../tweak project/_