Theos 安裝流程
- 在安裝的過程中, 也算踩了不少小坑, 所以這里做個記錄, 以后再次安裝也可以進行對比和避免再次踩坑.
- 安裝
Theos
必須先裝Xcode
的command line tools
, 一般只要你安裝了Xcode
打開過一次, 應該就會自動提示你安裝了. - 安裝多個
Xcode
的坑, 這個坑我自己沒有遇到, 但是書上有提到, 就做個記錄. 在安裝了多個Xcode
的情況下, 需要使用xcode-select
命令指定一個活動Xcode
,命令如下:
sudo xcode-select -s /Applications/Xcode8.app/Contents/Developer
- 開始安裝
Theos
, 從 Github 上下載Theos
, 命令如下:
// 創(chuàng)建臨時的環(huán)境變量
export THEOS=/opt/theos
// clone 項目到/opt/theos目錄下
sudo git clone git://github.com/DHowett/theos.git $THEOS
/*
上面這個命令是書上寫的命令, 但是發(fā)現(xiàn)貌似這樣下載不會把依賴下載下載, 所以建議用下面這個命令
因為我在后面打包時, 會出現(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 這個命令才解決無法使用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í)行權限:
sudo chmod 777 /opt/theos/bin/ldid
配置CydiaSubstrate
- 由于
Theos
中 沒有綁定Substrate
庫,所以需要手動將Substrate
配置到Theos
環(huán)境中. - 書上在這一步時說的是需要運行
Theos
的自動化配置腳本, 但是最新版的Theos
已經(jīng)沒有這個腳本, 所以運行腳本這一步可以跳過. 但是CydiaSubstrate還是得從越獄手機上導出來. - 從越獄設備的
/Library/Frameworks/CydiaSubstrate.framework
下把CydiaSubstrate
導出到電腦上, 并且將其重新命名為libsubstrate.dylib
放到/opt/theos/lib/libsubstrate.dylib
中, 如果這里有文件直接替換即可
配置dpkg-deb
- deb是越獄開發(fā)安裝包的標準格式,
dpkg-deb
是 一個用于操作deb文件的工具,有了這個工具,Theos 才能正確地把工程打包成為deb文件 - 使用迅雷直接添加該鏈接https://raw.githubusercontent.com/DHowett/dm.pl/master/dm.pl 下載, 下載完更名為
dpkg-deb
, 然后放到/opt/theos/bin/
下, 并重新賦予權限:
sudo chmod 777 /opt/theos/bin/dpkg-deb
自此就全部操作完成, 可以開始用 Theos
開發(fā)插件了
創(chuàng)建工程
- 隨便切換到自己任意的工作目錄下, 使用以下命令創(chuàng)建工程:
// $THEOS 是一開始設置好的環(huán)境變量
// test 是工程名
$THEOS/bin/nic.pl test - New Instance Creator
- 這時終端會提示讓你選擇一個想要創(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
- 因為我們這里主要是做tweak, 所以選擇第11個
- 選完后會讓我們輸入一些列tweak的工程名稱, 還有deb包的名字, 還有作者, tweak作用對象的bundle identifier, 例如
com.apple.springboard
, 最后就是tweak安裝完成后需要重啟的應用, 以進程名表示, 例如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完成了預處理、編譯、 簽名等一系列動作,此時會發(fā)現(xiàn)當前目錄下多了一個 新的“obj”文件夾
- 打包使用的
make package
命令來自于Theos本身,其實就是先執(zhí)行make
命令,然后再執(zhí)行dpkg-deb
命令 -
make package install
使用該命令將deb包安裝到越獄設備上, 但是需要先用SSH
連接, 可以在終端使用ssh root@IP
來訪問設備