Theos 制作插件流程

Theos 安裝流程

  • 在安裝的過程中, 也算踩了不少小坑, 所以這里做個記錄, 以后再次安裝也可以進行對比和避免再次踩坑.
  • 安裝 Theos 必須先裝 Xcodecommand 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 來訪問設備
最后編輯于
?著作權歸作者所有,轉載或內(nèi)容合作請聯(lián)系作者
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務。

推薦閱讀更多精彩內(nèi)容