Theos--定制工程文件(MakeFile篇)
来源:互联网 发布:setcookie js 编辑:程序博客网 时间:2024/06/05 21:56
介绍
MakeFile文件指定工程用到的文件、框架、库等信息,将整个过程进行自动化。
theos中.mk的说明
这里我就拿theos生成的模板中的 MakeFile文件进行对应的介绍、
include theos/makefiles/common.mk #固定写法TWEAK_NAME = iOSREProject #项目创建时候的项目名称iOSREProject_FILES = Tweak.xm #tweak 包含的源文件(不包括头文件)include $(THEOS_MAKE_PATH)/tweak.mkafter-install:: #当tweak安装成功后杀掉SpringBoard进程,好让我们写的程序hook到对应代码上 install.exec "killall -9 SpringBoard"
接下来我们进行介绍,如何指定SDK的版本,导入什么framework, lib文件在哪里的链接。
- 指定处理器架构
ARCHS = armv7 arm64
这里指定了两种不同的处理器架构,中间必须存在空格进行分割。
注意:采用arm64架构的App不兼容armv7/armv7s架构,必须适配arm64架构的dylib。
* 指定SDK版本
TARGET = iphone:Base SDK:Deployment Target
比如
TARGET = iphone:8.1:8.0
这句语法的含义为:指定采用8.1版本的SDK,并发布对象为IOS 8.0及以上版本。也可以吧“Base SDK”设置为“latest”,指定以Xcode附带的最新版本SDK编译,如:
TARGET = iphone:lastest:8.0
- 导入framework
iOSREProject_FRAMEWORKS = framework name
例如:
iOSREProject_FRAMEWORKS = UIKit CoreTelephony CoreAudio
上面语句是增加AppStore级别的共有API接口,而我们是进行theos开发当然是想要拿到“PRIVATE”中的方法。在使用时候,需要明白 每个IOS版本之间可能发生变化,再导入之前,一定要确认好 导入的private framework 确实存在
iOSREProject_PRIVATE_FRAMEWORKS = private framework name
例如:
iOSREProject_PRIVATE_FRAMEWORKS = AppSupport ChatKit IMCore
接下来我们进行看一个实际案例文件进行了解其中的注意点:
ARCHS = armv7 arm64TARGET = iphone:latest:7.0include theos/makefiles/common.mkTWEAK_NAME = iOSREProjectiOSREProject_FILES = Tweak.mkiOSREProject_PRIVATE_FRAMEWORK = BaseBoardincluce $(THEOS_MAKE_PATH)/tweak.mkafter-install:: install.exec "killall -9 SpringBoard"
上面的语句可以编译和链接,并不会报错。但是,因为BaseBoard这个private framework只存在于8.0以上的版本的SDK中,在IOS7 里并没有,所以这个tweak在IOS 7 中因为不会找到framework 而无法进行工作。这种情况可以通过弱引用(谷歌搜索 “makefile weak linking”)或dlopen()、dlsym() 和 dlclose()系列函数动态调用private framework来解决。
- 链接Match-o对象(Match-O object)
iOSREProject_LDFLAGS = -lx
theos 采用GUN Linker来链接Mach-O对象,包括.dylib
、 .a
和 .o
。
这样,链接Mach-O对象就很方便了,例如,要链接libsqlite3.0.dylib 、libz.dylib 和dylib1.0
像下面这样写就OK
iOSREProject_LDFLAGS = -lz -lsqlite3.0 -dylib1.o
- Theos--定制工程文件(MakeFile篇)
- iOS逆向工程---OS工具(Theos)
- Theos 的Makefile 以及部署文件的IP 配置细节
- Theos MakeFile的内容
- 工程文件vs MAKEFile
- iOS逆向工程之Theos
- Theos--语法篇
- linux makefile文件管理工程
- iOS逆向工程工具之Theos
- eclipse c 编译工程(已有makefile文件的完整工程)
- 如何得到VC工程的makefile文件
- Makefile来编译多文件工程
- 工程管理——makefile文件
- 工程管理之makefile与自动创建makefile文件过程
- 工程管理之makefile与自动创建makefile文件过程
- theos创建工程后不能编译的问题
- Theos的安装和使用-iOS逆向工程
- 利用visual studio创建只有makefile文件的工程文件
- 【51nod 教程】0-1背包问题(动态规划)
- 2724:围棋(3.8数据结构之图)
- C# List<>集合基础操作
- 小白学 tableview分页
- [月报]实验室
- Theos--定制工程文件(MakeFile篇)
- 初识Redis的五种类型
- logback
- C++ 获取进程内存占用和CPU利用率等信息
- 教大家使用PS合成逼真的下雨效果(8)
- SequenceFile与MapFile &hdfs的主要API类--FileSystem FSDataInputStream
- 设计模式之适配器模式
- 监听器过滤器拦截器在web项目中的作用位置
- 深入class文件结构