iOS越狱开发环境搭建 theos
2016-01-12 17:30
537 查看
iOS越狱开发环境搭建 theos
http://www.devdiv.com/home.php?mod=space&uid=54&do=blog&id=7596前段时间在开发一个越狱应用,用于在通知中心显示阳历和阴历,名为Chinese Calendar for Notification Center。第一次研究越狱开发,四月七号开始编码到昨天,在这两周里,从无到有,接触了Notification Center Widget和Preference Bunlde应用的开发,深切地感觉到越狱文档的稀少和零散,以及找资料的痛苦,期间甚至有“没人提供文档,我来提供!”的想法。文档是个浩大的工程,目前的水平也无法做到。所以一点点来,先从开发任何应用都必经的环境搭建开始。
废话已经说的够多了,下面进入正题
需要什么知识?
ObjectiveC。ObjectiveC是iOS开发的官方唯一语言,了解它肯定只会对iOS开发有好处没坏处。但对于越狱开发,ObjectiveC并不是唯一选择,由Lua语言开发的Wax框架也可用于开发iOSApp。注意:本文介绍的环境是用来编译ObjectiveC程序的,如果你想使用Wax进行开发,请参考这篇教程。
iOS Framework。需要对iOS常用的框架有了解。
Make。了解即可。
需要什么软件?
iOS SDK。我们是要开发iOS平台上的应用,SDK自然必不可少。Theos。Theos是一个基于Make的编译环境,我们正是用它来编译生成deb文件的。
ssh。本机中需要装有ssh-client,设备中需要装有ssh-server。
如何安装?
iOS SDK。如果你有台Mac,并且安装了xCode,那么iOS SDK也就已经随之一起安装了。如果你想在Linux中开发,那也没有问题!前提是你的系统中装有iPhone Toolchain。如果已经安装了Toolchain,那就不需要再做其他工作了。如果没有,Github上已经有人写了一段脚本,在Linux上运行它就可以安装Toolchain和Theos。想在Windows上开发?装个Linux吧!Theos。运行下面的脚本把Theos从库中下载到本地(你可以修改/opt/theos为任意你想要的路径)。
git clone https://github.com/DHowett/theos /opt/theos
下载完成之后,为了方便起见,我们再配置一下THEOS环境变量:
export THEOS=/opt/theos
如何创建应用?
Thoes提供了一个叫做NIC(New Instance Creator)的工具,它会根据模板文件(.nic)创建与之对应的应用模板(在这里,模板中包含了源文件、Makefile、plist文件等)。Theos自带有5个模板:application, library, preference bundle, tool, tweak,这肯定是不够的,但是没有关系,已经有人为我们提供了其他的模板,例如:NotificationCenter Widget的模板和SBSettings Toggle的模板。
下面我们以开发Notification Center Widget为例。
首先我们需要安装Notification Center Widget模板至theos,运行下面的脚本,把.nic文件下载到theos目录下的nic/iphone目录,顾名思义,这个目录是用来放置iphone相关模板文件的。
curl -O https://raw.github.com/WillFour20/Notification-Widget-NIC-Template/master/notification_center_widget.nic $THEOS/templates/iphone/
接下来我们只需运行nic来创建Notification Center Widget的应用模板:
$ $THEOS/bin/nic.pl
NIC 1.0 – New Instance Creator
——————————
[1.] iphone/application
[2.] iphone/library
[3.] iphone/notification_center_widget
[4.] iphone/preference_bundle
[5.] iphone/tool
[6.] iphone/tweak
Choose a Template (required): 3
Project Name (required): Hello World
Package Name [com.yourcompany.helloworld]: com.crazytonyli.widget.helloworld
Author/Maintainer Name [Tony Li]: Tony Li
Instantiating iphone/notification_center_widget in helloworld/…
Done.
首先进入helloworld项目目录,看看nic为我们生成了什么文件:
BBWeeAppController-Protocol.h,这个头文件中声明了一个名为BBWeeAppController的protocol,编译生成的Bundle中必须要有一个类实现了该协议。
HelloWorldController.m,这就是上面提到的实现BBWeeAppController协议的类。生成的模板类提供的实现只是简单显示了一张通知中心的背景图片。
Makefile,上文中提到了:theos是基于Make的编译系统,自然少不了Makefile。
control,这是对deb包的描述,例如package的名称、作者、package的依赖等,以键值对的形式存在。在Cydia的作者Jay Saurik的这篇博客中对control的键值做了详细的说明。
theos,这是一个软连接文件,指向的是theos的路径。
Resource,这个目录下用于存放资源文件。其中包含了Bundle的描述文件:Info.plist。如果你的应用有图片,那么你应该把图片放到这个目录下。
由于要通过ssh把deb package安装到设备中,所以我们需要向theos提供设备的IP地址。theos提供了一个变量,THEOS_DEVICE_IP,用于指定设备的IP地址。下面我们在Makefile文件的头部增加一行设置该变量(变量的值取决于设备的IP地址):
THEOS_DEVICE_IP = 192.168.1.110
由于theos在发送deb至设备并安装的过程中,使用了ssh远程执行了几个命令,所以会经常提示输入密码,为了避免频繁地输入密码。你可以生成一个ssh public key,并将其加到设备的authorized keys中。具体请参见这篇教程。
那么我们编译运行一下吧。执行下面的命令来编译打包并将package安装到设备中:
make package install
命令执行完之后,设备会Respring,这是正常现象(参见Makefile的最后一行),是因为Notification Center Widget的安装/卸载都需要Respring才能生效。
SpringBoard启动后,拉下通知中心,其中出现了一块内容空空的部分,那就是你的Widget了。
接下来,你就可以向这个Hello World中增加你想要的功能了。Enjoy!
from:http://crazytonyli.com/2012/04/how-to-build-ios-jailbreak-development-enviroment/
相关文章推荐
- theos创建越狱工程时链接第三方动态库出错及解决办法
- 关于 clang 将 -Wunused-variable warning 视为 error 的问题
- 第二章:iOS应用安全与测试环境——2.2 iOS越狱
- 基于Theos越狱开发
- Theos的安装
- iOS_逆向_第一个tweak
- iOS逆向 dumpdecrypted
- iOS越狱程序开发框架
- 我的第一个TWEAK
- IOS逆向学习之路之iPod touch4 越狱心得
- Ios越狱心得
- IOS逆向笔记之HOOK实现(非越狱)
- iOS越狱开发那些事儿之一
- IOS应用逆向工程之App砸壳:通过dumpdecrypted.dylib
- iOS 越狱开发环境搭建
- 《iOS应用安全攻防实战》读书笔记(二)
- class-dump 的安装与使用
- iOS APP 目录
- ios 基础攻略
- Paths - 2