Injectionlll 快速調(diào)試工具

使Xcode可以進(jìn)行運(yùn)行時(shí)調(diào)試功能的工具饿肺,可以理解為把項(xiàng)目變成了Playground。
本文主要針對(duì)戴銘專欄中“App 如何通過注入動(dòng)態(tài)庫(kù)的方式實(shí)現(xiàn)極速編譯調(diào)試斩跌?”進(jìn)行的總結(jié)桩警。
注意:需要注意第4節(jié)中提到的問題,修改過多地方的話膘滨,盡量還是重啟App來調(diào)試甘凭。

1 安裝和使用

1-1 安裝

最簡(jiǎn)單的方法是從App Store下載安裝InjectionIII,想體驗(yàn)最新feature的也可以從github上下載源碼injectionforxcode

1-2 配置

//appDelegate.m
- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions {
//...
[[NSBundle bundleWithPath:@"/Applications/InjectionIII.app/Contents/Resources/iOSInjection.bundle"] load];
return YES;
}

啟動(dòng)App后火邓,會(huì)讓我們選擇項(xiàng)目路徑丹弱,選擇后就可以使用了。
修改后不會(huì)立刻生效铲咨,保存才能生效躲胳。
每次保存后,會(huì)自動(dòng)調(diào)用當(dāng)前controller的- (void)injected方法(如果重寫了的話)纤勒。

1-3 查看修改

  1. 手動(dòng)觸發(fā)
    如點(diǎn)擊效果:點(diǎn)一下坯苹。
    如布局變化,或網(wǎng)絡(luò)請(qǐng)求:退出當(dāng)前controller摇天,再重新進(jìn)入粹湃。
  2. 代碼觸發(fā)恐仑,在- (void)injected中手動(dòng)調(diào)用
    如布局變了,或網(wǎng)絡(luò)請(qǐng)求:- (void)injected中調(diào)用viewWillLayoutSubviews为鳄、發(fā)送網(wǎng)絡(luò)請(qǐng)求裳仆。

2 原理

  1. 啟動(dòng)了一個(gè)Mac App監(jiān)聽項(xiàng)目目錄下的文件變化,并與模擬器建立通信
  2. 項(xiàng)目目錄下的文件發(fā)生變化后孤钦,就重新打包動(dòng)態(tài)鏈接庫(kù)(多個(gè)單文件對(duì)應(yīng)多個(gè)dylib動(dòng)態(tài)庫(kù))
  3. 項(xiàng)目中InjectionIII Client端歧斟,收到Server端(Mac App)打包完成的socket消息,加載dylib司训,并執(zhí)行Xcode焦點(diǎn)所在.m文件的inject方法构捡。

對(duì)于項(xiàng)目來說,只記錄了動(dòng)態(tài)鏈接庫(kù)的名字和路徑壳猜,而不需要重新編譯和鏈接勾徽。
鏈接器都做了什么

3 注意事項(xiàng)

  1. 只對(duì)模擬器有效。
  2. 支持OC和Swift统扳。
  3. 使用了cocoapods的項(xiàng)目喘帚,如果希望監(jiān)聽pod中源碼的修改,需要設(shè)置Legacy Build System咒钟。

默認(rèn)的New Build System(Default)模式吹由,不編譯pod 里面的改動(dòng)
設(shè)置方法:File -> Workspace Setting -> Build System, 改為L(zhǎng)egacy Build System模式朱嘴。

  1. 監(jiān)聽另一個(gè)項(xiàng)目時(shí)倾鲫,通過InjectionIII重新選擇監(jiān)聽目錄。
  2. 不要修改進(jìn)行了swizzling的類萍嬉,否則二次交換乌昔,會(huì)造成死循環(huán)。

4 值得注意的問題

  1. 不支持方法的刪除:刪除后壤追,方法調(diào)用仍然有效磕道,不拋異常。
  2. 不支持新增類:新增類引入后使用無(wú)效行冰。但類的重命名是有效的溺蕉。
  3. 屬性新增、刪除悼做、修改:反射上體現(xiàn)不出來疯特。

在我看來,

問題原因贿堰,可能與蘋果動(dòng)態(tài)庫(kù)調(diào)用的實(shí)現(xiàn)有關(guān)辙芍,不是InjectionIII工具的問題。
因?yàn)檫@些問題在動(dòng)態(tài)庫(kù)打包時(shí)也會(huì)出現(xiàn):修改動(dòng)態(tài)庫(kù)源碼,不修改版本號(hào)故硅,重新打包(清過緩存也一樣)庶灿。
另外,問題原因應(yīng)該與加載時(shí)機(jī)無(wú)關(guān)吃衅,雖然動(dòng)態(tài)庫(kù)的路徑綁定是在main之前進(jìn)行的往踢,而Injection是在didLaunch中才加載的。但是重命名類有效徘层,說明這個(gè)路徑綁定是有效的峻呕。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個(gè)濱河市趣效,隨后出現(xiàn)的幾起案子瘦癌,更是在濱河造成了極大的恐慌,老刑警劉巖跷敬,帶你破解...
    沈念sama閱讀 218,546評(píng)論 6 507
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件讯私,死亡現(xiàn)場(chǎng)離奇詭異,居然都是意外死亡西傀,警方通過查閱死者的電腦和手機(jī)斤寇,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,224評(píng)論 3 395
  • 文/潘曉璐 我一進(jìn)店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來拥褂,“玉大人娘锁,你說我怎么就攤上這事〗染椋” “怎么了莫秆?”我有些...
    開封第一講書人閱讀 164,911評(píng)論 0 354
  • 文/不壞的土叔 我叫張陵,是天一觀的道長(zhǎng)悔详。 經(jīng)常有香客問我馏锡,道長(zhǎng),這世上最難降的妖魔是什么伟端? 我笑而不...
    開封第一講書人閱讀 58,737評(píng)論 1 294
  • 正文 為了忘掉前任,我火速辦了婚禮匪煌,結(jié)果婚禮上责蝠,老公的妹妹穿的比我還像新娘。我一直安慰自己萎庭,他們只是感情好霜医,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,753評(píng)論 6 392
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著驳规,像睡著了一般肴敛。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 51,598評(píng)論 1 305
  • 那天医男,我揣著相機(jī)與錄音砸狞,去河邊找鬼。 笑死镀梭,一個(gè)胖子當(dāng)著我的面吹牛刀森,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播报账,決...
    沈念sama閱讀 40,338評(píng)論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼研底,長(zhǎng)吁一口氣:“原來是場(chǎng)噩夢(mèng)啊……” “哼!你這毒婦竟也來了透罢?” 一聲冷哼從身側(cè)響起榜晦,我...
    開封第一講書人閱讀 39,249評(píng)論 0 276
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤,失蹤者是張志新(化名)和其女友劉穎羽圃,沒想到半個(gè)月后乾胶,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 45,696評(píng)論 1 314
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡统屈,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,888評(píng)論 3 336
  • 正文 我和宋清朗相戀三年胚吁,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片愁憔。...
    茶點(diǎn)故事閱讀 40,013評(píng)論 1 348
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡腕扶,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出吨掌,到底是詐尸還是另有隱情半抱,我是刑警寧澤,帶...
    沈念sama閱讀 35,731評(píng)論 5 346
  • 正文 年R本政府宣布膜宋,位于F島的核電站窿侈,受9級(jí)特大地震影響,放射性物質(zhì)發(fā)生泄漏秋茫。R本人自食惡果不足惜史简,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,348評(píng)論 3 330
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望肛著。 院中可真熱鬧圆兵,春花似錦、人聲如沸枢贿。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,929評(píng)論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)局荚。三九已至超凳,卻和暖如春愈污,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背轮傍。 一陣腳步聲響...
    開封第一講書人閱讀 33,048評(píng)論 1 270
  • 我被黑心中介騙來泰國(guó)打工暂雹, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留,地道東北人金麸。 一個(gè)月前我還...
    沈念sama閱讀 48,203評(píng)論 3 370
  • 正文 我出身青樓擎析,卻偏偏與公主長(zhǎng)得像,于是被迫代替她去往敵國(guó)和親挥下。 傳聞我的和親對(duì)象是個(gè)殘疾皇子揍魂,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 44,960評(píng)論 2 355