Tweak及TheOS简介

在上篇介绍MobileSubstrate的文章中,说到第三方开发者通过MobileSubstrate向应用中注入自己的代码来改变应用运行时的行为表现。而这里的代码就是我们今天要说的主角--tweak。

tweak的实质就是ios平台的动态库。IOS平台上有两种形势的动态库,dylib与framework。Framework这种开发者用的比较多,而dylib这种就相对比较少一点,比如libsqlite.dylib,libz.dylib等。而tweak用的正是dylib这种形势的动态库。我们可以在/Library/MobileSubstrate/DynamicLibraries目录下查看手机上存在着的所有tweak。这个目录下除dylib外还存在着plist与bundle两种格式的文件,plist文件是用来标识该tweak的作用范围,而bundle是tweak所用到的资源文件。如下图所示:

Tweak及TheOS简介_第1张图片

与正常的APP开发使用xcode不同,Tweak的开发环境是theos或者iosopendev。iosopendev是在theos的基础上实现的基于xcode的开发环境。而theos是一种命令行式的开发编译环境,与c/c++的命令行编译形式很相象。这里也主要针对theos作简单的介绍。

Theos是由DHowett开发的,主要目的是简化越狱程序的开发流程。需要注意的是Theos不仅仅适用于MAC平台,还能够支持Linux平台哦。环境搭建的详细过程这里就不在详细说明了,主要的步骤大致就是安装iphone sdk、安装git、从github上clone theos项目并配置相关的环境变量。网上有很多这样的流程贴,大家Google一下就可以了。

使用Theos提供的nic.pl脚本创建新的tweak工程,如下图所示,theos提供了如下的几个tweak模板供开发者选择使用:

Theos创建的tweak工程目录如下图:这里面Tweak.xm、Makefile、Tweak.xm这三个文件是我们需要重点关注的。

Tweak及TheOS简介_第2张图片

Makefile是工程的编译配置文件,该文件与c/c++编译时需要配置的makefile文件比较类似。xxx.plist文件的主要功能是限制Tweak的作用范围,该文件也正是上文中提到的plist文件的来源。Tweak.xm是Tweak的源码文件,也是Tweak默认的入口文件。Tweak可以使用.m/.mm模式的源文件,但如果希望使用Theos提供的Logos语法的话,文件必须是以.xm/.x/.xi/.xmi等格式。

Theos提供了简单的Logos语法供开发者使用,从而避免让开发者接触OC中更为底层的runtime机制,降低了开发者的进入门槛。开发者最学使用的语法关键字如下:

%hook ClassName 标识需要向名为ClassName的类中注入修改代码。

%new(signature) 添加一个新的方法,signature是新方法的签名,可以省略不写。

%orig 调用方法的原有实现。

有关Logos语法、Theos的其它相关信息,请参数http://iphonedevwiki.net/index.php/Logos。

你可能感兴趣的:(Tweak及TheOS简介)