TheOS JailBreak开发环境搭建步骤及常见问题QA

时间:2021-02-16 08:55:10

TheOS JailBreak开发环境搭建步骤及常见问题QA

  1. 安装Xcode

因为开发中会使用到相应的Frameworks、头文件以及编译工具等。Xcode可以去App Store安装,或直接到苹果官网下载相应版本,文本中涉及到的Xcode是4.6版本的。


  1. 安装Command Line Tools

打开Xcode->Preferences->Downloads,如下图所示安装Command Line Tools:

TheOS JailBreak开发环境搭建步骤及常见问题QA


  1. 安装MacPorts

MacPorts是个软件包安装工具(类似Ubuntu下的apt-get),您也可以选择其他工具。使用类似的工具可以很方便的在Mac OS X平台安装一些常用软件。下载地址:www.macports.org


  1. 安装dpkg

使用MacPorts安装dpkg,命令如下:

sudo port install dpkg


  1. 安装TheOS和ldid

TheOS官方环境配置教程:

http://iphonedevwiki.net/index.php/Theos/Getting_Started


首先配置环境变量,让TheOS在开发的时候能方便找到相关资源。在˜/.bash_profile或/etc/profile下添加一行:

 export THEOS=/opt/theos

在这里这个目录路径是可任意选的,通常情况下都是放在这个目录下。

然后使用git或svn 下载到本地:

git clone https://github.com/DHowett/theos $THEOS

svn co http://svn.howett.net/svn/theos/trunk $THEOS

git和svn在安装Xcode和Command Line Tools中应该已经安装好了。


ldid是一个模拟签名的工具,可以直接从网上下已经编译好的版本,也可以自己编译。

自己编译:

git clone git://git.saurik.com/ldid.git

cd ldid

git submodule update --init

./make.sh

cp -f ./ldid $THEOS/bin/ldid

网上下载:

curl -s http://dl.dropbox.com/u/3157793/ldid > ~/Desktop/ldid

chmod +x ~/Desktop/ldid 

mv ~/Desktop/ldid $THEOS/bin/ldid


  1. iOS上安装环境

越狱的iOS中使用Cydia安装软件,而Cydia是基于apt-get的。

添加软件源:

创建文件/etc/apt/sources.list.d/coredev.nl.list,内容为:

deb http://coredev.nl/cydia iphone main

创建文件/etc/apt/sources.list.d/howett.net.list,内容为:

deb http://nix.howett.net/theos ./


以root用户在命令行下执行如下:

apt-get update

apt-get install perl net.howett.theos

安装Theos(/var/thoes/)和perl。


  1. 简单示例(Mac OS X)

$ $THEOS/bin/nic.pl

NIC 1.0 - New Instance Creator

------------------------------

  [1.] iphone/application

  [2.] iphone/library

  [3.] iphone/preference_bundle

  [4.] iphone/tool

  [5.] iphone/tweak

Choose a Template (required): 1

Project Name (required): iPhoneDevWiki

Package Name [com.yourcompany.iphonedevwiki]: net.howett.iphonedevwiki

Authour/Maintainer Name [Dustin L. Howett]:              

Instantiating iphone/application in iphonedevwiki/...

Done.

$


NIC(New Instance Creator)是创建与之对应的模板。详细请参考:

http://theos.howett.net/nic/

Makefile的编译与其他版本的类似,但有些细节不一样。详细请参考:

http://uv.howett.net/ipf.html


编译:

$ make

打包成deb:

$ package

安装到目标设备:

$ install


在进行install时,还是另外配置一个环境变量或者写在Makefile也行:

THEOS_DEVICE_IP=X.X.X.X // IP Address

这样在执行install命令时,就可自动安装到目标设备上去了。因为使用的是SSH连接目标设备,这过程中需要输入密码。如果嫌麻烦可以将SSH配置成无密码登录,可参考这里:http://geekswing.com/geek/unix/how-to-ssh-login-without-a-password-using-ssh-keygen-quick-tutorial/


  1. 注意事项

1. 在创建工程时注意Project Name和Package Name的输入,不要有空格和下划线之类的字符,会出现意想不到的错误。PS:一个空格引发的错误费了我两天时间,- -!。

  1. 在环境变量或Makefile中加入一行,指定使用的iOS SDK版本:

export SDKVERSION=5.1

这里我使用的SDK是5.1版本的,越狱机的iOS也是5.1的,要对应。

  1. 在开发过程中如果某个符号定义没的找到,请确保加入了相对应库的引入,引入库方法:

在Makefile中添加如下:

XXX_FRAMEWORKS=UIKit Foundation

XXX请使用你的Project Name替换,如果有多个Framework要引入,以空格符分开列入即可。


  1. Tweak或MobileSubstrate开发

要进行Tweak开发,还要另外下载并配置相关库。

cd $THEOS

curl -OL http://apt.saurik.com/debs/mobilesubstrate_0.9.3366-1_iphoneos-arm.deb

dpkg-deb -x mobilesubstrate_0.9.3366-1_iphoneos-arm.deb mobilesubstrate

cp mobilesubstrate/Library/Frameworks/CydiaSubstrate.framework/CydiaSubstrate  ~/theos/lib/libsubstrate.dylib

cp mobilesubstrate/Library/Frameworks/CydiaSubstrate.framework/Headers/CydiaSubstrate.h include/substrate.h

相关资源包在这里:http://apt.saurik.com/debs/

本文中选用的是mobilesubstrate_0.9.3366-1_iphoneos-arm.deb,您也可根据实际需要安装其他deb。


  1. 头文件的引用

在使用iOS库的头文件时,Theos是没有安装的,要自行安装。这里有两个方法:下载别人已经提取好的和自己使用class-dump工具提取。

下载好心人提取好的头文件地址:https://github.com/rpetrich/iphoneheaders。将所有头文件放到$THEOS/include/目录下。

自己提取比较麻烦,要一个个Framework进行,示例如下:

class-dump -H /Developer/Platforms/iPhoneSimulator.platform/Developer/SDKs/iPhoneSimulator5.1.sdk/System/Library/CoreServices/SpringBoard.app -o /Users/lkk/Desktop/Spring

这样在用户目录就会生产SPRINGBOARD目录。导出的.h都放到这了。


  1. 参考
  1. http://www.cppblog.com/AutomateProgram/archive/2013/11/11/204205.html
  2. http://www.andyibanez.com/64-how-to-create-mobilesubstrate-tweaks-for-ios
  3. http://iphonedevwiki.net/index.php/Theos/Getting_Started
  4. http://www.devdiv.com/home.php?mod=space&uid=54&do=blog&id=7596