Theos 安裝流程
- 在安裝的過程中, 也算踩了不少小坑, 所以這里做個(gè)記錄, 以后再次安裝也可以進(jìn)行對(duì)比和避免再次踩坑.
- 安裝
Theos
必須先裝Xcode
的command line tools
, 一般只要你安裝了Xcode
打開過一次, 應(yīng)該就會(huì)自動(dòng)提示你安裝了. - 安裝多個(gè)
Xcode
的坑, 這個(gè)坑我自己沒有遇到, 但是書上有提到, 就做個(gè)記錄. 在安裝了多個(gè)Xcode
的情況下, 需要使用xcode-select
命令指定一個(gè)活動(dòng)Xcode
景殷,命令如下:
sudo xcode-select -s /Applications/Xcode8.app/Contents/Developer
- 開始安裝
Theos
, 從 Github 上下載Theos
, 命令如下:
// 創(chuàng)建臨時(shí)的環(huán)境變量
export THEOS=/opt/theos
// clone 項(xiàng)目到/opt/theos目錄下
sudo git clone git://github.com/DHowett/theos.git $THEOS
/*
上面這個(gè)命令是書上寫的命令, 但是發(fā)現(xiàn)貌似這樣下載不會(huì)把依賴下載下載, 所以建議用下面這個(gè)命令
因?yàn)槲以诤竺娲虬鼤r(shí), 會(huì)出現(xiàn) ==> Error: The vendor/include and/or vendor/lib directories are missing. Please run `git submodule update --init --recursive` in your Theos directory. More information: https://github.com/theos/theos/wiki/Installation.
后來我在opt/theos目錄下, 用 git submodule update --init --recursive 這個(gè)命令才解決無法使用make命令打包的問題
*/
git clone --recursive git://github.com/DHowett/theos.git $THEOS
- 至此,
Theos
安裝完成了
配置ldid
-
ldid
是專門用來簽名iOS可執(zhí)行文件的工具,用以 在越獄iOS中取代Xcode
自帶的codesign, 可以從 http://joedj.net/ldid 下載, 然后放到opt/theos/bin
目錄下, 然后賦予它可執(zhí)行權(quán)限:
sudo chmod 777 /opt/theos/bin/ldid
配置CydiaSubstrate
- 由于
Theos
中 沒有綁定Substrate
庫饱亿,所以需要手動(dòng)將Substrate
配置到Theos
環(huán)境中. - 書上在這一步時(shí)說的是需要運(yùn)行
Theos
的自動(dòng)化配置腳本, 但是最新版的Theos
已經(jīng)沒有這個(gè)腳本, 所以運(yùn)行腳本這一步可以跳過. 但是CydiaSubstrate還是得從越獄手機(jī)上導(dǎo)出來. - 從越獄設(shè)備的
/Library/Frameworks/CydiaSubstrate.framework
下把CydiaSubstrate
導(dǎo)出到電腦上, 并且將其重新命名為libsubstrate.dylib
放到/opt/theos/lib/libsubstrate.dylib
中, 如果這里有文件直接替換即可
配置dpkg-deb
- deb是越獄開發(fā)安裝包的標(biāo)準(zhǔn)格式厅贪,
dpkg-deb
是 一個(gè)用于操作deb文件的工具魔慷,有了這個(gè)工具咬清,Theos 才能正確地把工程打包成為deb文件 - 使用迅雷直接添加該鏈接https://raw.githubusercontent.com/DHowett/dm.pl/master/dm.pl 下載, 下載完更名為
dpkg-deb
, 然后放到/opt/theos/bin/
下, 并重新賦予權(quán)限:
sudo chmod 777 /opt/theos/bin/dpkg-deb
自此就全部操作完成, 可以開始用 Theos
開發(fā)插件了
創(chuàng)建工程
- 隨便切換到自己任意的工作目錄下, 使用以下命令創(chuàng)建工程:
// $THEOS 是一開始設(shè)置好的環(huán)境變量
// test 是工程名
$THEOS/bin/nic.pl test - New Instance Creator
- 這時(shí)終端會(huì)提示讓你選擇一個(gè)想要?jiǎng)?chuàng)建的模板:
NIC 2.0 - New Instance Creator
------------------------------
[1.] iphone/activator_event
[2.] iphone/application_modern
[3.] iphone/cydget
[4.] iphone/flipswitch_switch
[5.] iphone/framework
[6.] iphone/ios7_notification_center_widget
[7.] iphone/library
[8.] iphone/notification_center_widget
[9.] iphone/preference_bundle_modern
[10.] iphone/tool
[11.] iphone/tweak
[12.] iphone/xpc_service
Choose a Template (required): 11
- 因?yàn)槲覀冞@里主要是做tweak, 所以選擇第11個(gè)
- 選完后會(huì)讓我們輸入一些列tweak的工程名稱, 還有deb包的名字, 還有作者, tweak作用對(duì)象的bundle identifier, 例如
com.apple.springboard
, 最后就是tweak安裝完成后需要重啟的應(yīng)用, 以進(jìn)程名表示, 例如SpringBoard
. - 使用
make
編譯, 在tweak目錄下使用該命令編譯:
> Making all for tweak test…
==> Preprocessing Tweak.xm…
==> Compiling Tweak.xm (armv7)…
==> Linking tweak test (armv7)…
==> Preprocessing Tweak.xm…
==> Compiling Tweak.xm (arm64)…
==> Linking tweak test (arm64)…
==> Merging tweak test…
==> Signing test…
- 從輸出的信息看捐凭,Theos完成了預(yù)處理记舆、編譯鸽捻、 簽名等一系列動(dòng)作,此時(shí)會(huì)發(fā)現(xiàn)當(dāng)前目錄下多了一個(gè) 新的“obj”文件夾
- 打包使用的
make package
命令來自于Theos本身,其實(shí)就是先執(zhí)行make
命令御蒲,然后再執(zhí)行dpkg-deb
命令 -
make package install
使用該命令將deb包安裝到越獄設(shè)備上, 但是需要先用SSH
連接, 可以在終端使用ssh root@IP
來訪問設(shè)備