Theos 制作插件流程

Theos 安裝流程

  • 在安裝的過程中, 也算踩了不少小坑, 所以這里做個(gè)記錄, 以后再次安裝也可以進(jìn)行對(duì)比和避免再次踩坑.
  • 安裝 Theos 必須先裝 Xcodecommand 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è)備
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末衣赶,一起剝皮案震驚了整個(gè)濱河市,隨后出現(xiàn)的幾起案子厚满,更是在濱河造成了極大的恐慌府瞄,老刑警劉巖,帶你破解...
    沈念sama閱讀 218,682評(píng)論 6 507
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件碘箍,死亡現(xiàn)場(chǎng)離奇詭異遵馆,居然都是意外死亡,警方通過查閱死者的電腦和手機(jī)丰榴,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,277評(píng)論 3 395
  • 文/潘曉璐 我一進(jìn)店門货邓,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人多艇,你說我怎么就攤上這事逻恐。” “怎么了峻黍?”我有些...
    開封第一講書人閱讀 165,083評(píng)論 0 355
  • 文/不壞的土叔 我叫張陵复隆,是天一觀的道長。 經(jīng)常有香客問我姆涩,道長挽拂,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 58,763評(píng)論 1 295
  • 正文 為了忘掉前任骨饿,我火速辦了婚禮亏栈,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘宏赘。我一直安慰自己绒北,他們只是感情好,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,785評(píng)論 6 392
  • 文/花漫 我一把揭開白布察署。 她就那樣靜靜地躺著闷游,像睡著了一般。 火紅的嫁衣襯著肌膚如雪贴汪。 梳的紋絲不亂的頭發(fā)上脐往,一...
    開封第一講書人閱讀 51,624評(píng)論 1 305
  • 那天,我揣著相機(jī)與錄音扳埂,去河邊找鬼业簿。 笑死,一個(gè)胖子當(dāng)著我的面吹牛阳懂,可吹牛的內(nèi)容都是我干的梅尤。 我是一名探鬼主播柜思,決...
    沈念sama閱讀 40,358評(píng)論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場(chǎng)噩夢(mèng)啊……” “哼巷燥!你這毒婦竟也來了酝蜒?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 39,261評(píng)論 0 276
  • 序言:老撾萬榮一對(duì)情侶失蹤矾湃,失蹤者是張志新(化名)和其女友劉穎亡脑,沒想到半個(gè)月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體邀跃,經(jīng)...
    沈念sama閱讀 45,722評(píng)論 1 315
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡霉咨,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,900評(píng)論 3 336
  • 正文 我和宋清朗相戀三年,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了拍屑。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片途戒。...
    茶點(diǎn)故事閱讀 40,030評(píng)論 1 350
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡,死狀恐怖僵驰,靈堂內(nèi)的尸體忽然破棺而出喷斋,到底是詐尸還是另有隱情,我是刑警寧澤蒜茴,帶...
    沈念sama閱讀 35,737評(píng)論 5 346
  • 正文 年R本政府宣布星爪,位于F島的核電站,受9級(jí)特大地震影響粉私,放射性物質(zhì)發(fā)生泄漏顽腾。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,360評(píng)論 3 330
  • 文/蒙蒙 一诺核、第九天 我趴在偏房一處隱蔽的房頂上張望抄肖。 院中可真熱鬧,春花似錦窖杀、人聲如沸漓摩。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,941評(píng)論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽管毙。三九已至,卻和暖如春痊项,著一層夾襖步出監(jiān)牢的瞬間锅风,已是汗流浹背酥诽。 一陣腳步聲響...
    開封第一講書人閱讀 33,057評(píng)論 1 270
  • 我被黑心中介騙來泰國打工鞍泉, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留,地道東北人肮帐。 一個(gè)月前我還...
    沈念sama閱讀 48,237評(píng)論 3 371
  • 正文 我出身青樓咖驮,卻偏偏與公主長得像边器,于是被迫代替她去往敵國和親。 傳聞我的和親對(duì)象是個(gè)殘疾皇子托修,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 44,976評(píng)論 2 355

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