iOS: Xcode熱加載/部署-無侵入配置

效果:

代碼在保存之后,立馬在模擬器上看到修改后的效果微驶,
避免Command+R重新編譯耗費時間的問題婚度;
如果APP頁面層級太深的話,傳統(tǒng)調(diào)試要一步步點進到指定頁面,
使用該方案直接就能看到效果抹恳,所見即所得。


昨天被同事用flutter項目的熱部署效果給刺激了一下,被秀之余想到:他用個雜交品種能熱部署,而我用蘋果親兒子沒道理不行耙虑恕!
所以花了一個上午時間铜邮,俺終于找到了這個成噸減少工作量的方案。

超級簡單胁后,只有三步:
1、一個工具
2殖演、選定項目目錄
3搔确、把一個文件放到項目中

無需其他任何配置,不對項目結(jié)構(gòu)造成任何侵害。


1瘦真、工具下載 InjectionIII

InjectionIII 是我們需要用到個一個工具您机,不要因為要用一個工具而厭煩這個方案屑彻,它很簡單。
它是免費的巡揍,app store 搜索:InjectionIII痛阻,Icon是 一個針筒菌瘪。
也是開源的腮敌,GitHub鏈接: https://github.com/johnno1962/injectionforxcode

2阱当、配置路徑

打開InjectionIII工具,選擇Open Project糜工,選擇你的代碼所在的路徑弊添,然后點擊Select Project Directory保存。

image.png
image.png

注意:InjectionIII 的File Watcher選項要保持選中狀態(tài)捌木。

3油坝、導(dǎo)入配置文件(可選)

這步我簡單寫了一個配置文件,直接 GitHub下載 導(dǎo)入項目即可刨裆。

如果你比較反感下載文件也可以自己處理:

1.設(shè)置AppDelegate.m
打開你的工程澈圈,在AppDelegate.m的didFinishLaunchingWithOptions方法按類型添加兩行代碼:

#if DEBUG
    // iOS
    [[NSBundle bundleWithPath:@"/Applications/InjectionIII.app/Contents/Resources/iOSInjection.bundle"] load];
    // tvOS
    //[[NSBundle bundleWithPath:@"/Applications/InjectionIII.app/Contents/Resources/tvOSInjection.bundle"] load];
    // macOS
    //[[NSBundle bundleWithPath:@"/Applications/InjectionIII.app/Contents/Resources/macOSInjection.bundle"] load];
#endif

2.設(shè)置ViewController

在的修改界面ViewController添加方法- (void)injected,或者給ViewController類擴展添加方法- (void)injected帆啃。

方法里寫上刷新的動作:viewDidLoad 或者 其他更多方法瞬女。

- (void)injected
{    
  //自定義修改...
  //重新加載view    
  [self loadView];
  [self viewDidLoad];
  [self viewWillLayoutSubviews];
  [self viewWillAppear:NO];
}

3、懶加載和其他異常的處理

  • 配置包做了修改view的刷新努潘,代碼不多诽偷,但是比你自己寫方便,推薦你下載了拖進去疯坤。
  • 因為適用范圍的關(guān)系[self loadView] 需要慎重調(diào)用报慕。
  • 懶加載的view 配置包是識別不了,需要自己在VC里手動處理压怠,事例代碼:
- (void)injected {
    [_tableView removeFromSuperview];
    _tableView = nil;
    [self viewDidLoad];
}

4眠冈、啟動項目,修改驗證

在Xcode Command+R運行項目 刑峡,看到Injection connected 提示即表示配置成功洋闽。
如果沒有,確實一下 第2步是不是對了突梦。

image.png

在需要修改的頁面诫舅,修改控件UI,然后Command+S保存一下代碼宫患,立刻就在模擬器上顯示修改的信息了刊懈。

??注

  • 工程路徑中最好不要有中文,目前只處理了view和vc中的保存刷新娃闲,并且對部分xib控件無效虚汛。
  • Bundle 路徑跟xcode路徑和工具路徑相關(guān),不過一般不用更換皇帮。
  • 編譯復(fù)雜的項目可能會崩潰卷哩,不要放棄,調(diào)整一下injected時調(diào)用的方法属拾,調(diào)通后效率提升不止一倍将谊。
  • 有朋友反應(yīng)使用RAC + MVVM injected 方法注冊會崩潰冷溶,可使用 INJECTION_BUNDLE_NOTIFICATION 通知來監(jiān)聽 編譯更新,后續(xù)我會完善更新尊浓。

工具使用中如有問題可以參考github上的過往經(jīng)驗逞频,也歡迎留言我們一起討論。

配置文件git:https://github.com/ZHSY/InjectionIIIHelper

工具git地址:https://github.com/johnno1962/injectionforxcode 也可appstore 直接下載

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末栋齿,一起剝皮案震驚了整個濱河市苗胀,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌瓦堵,老刑警劉巖基协,帶你破解...
    沈念sama閱讀 218,755評論 6 507
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異菇用,居然都是意外死亡堡掏,警方通過查閱死者的電腦和手機,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,305評論 3 395
  • 文/潘曉璐 我一進店門刨疼,熙熙樓的掌柜王于貴愁眉苦臉地迎上來泉唁,“玉大人,你說我怎么就攤上這事揩慕⊥ば螅” “怎么了?”我有些...
    開封第一講書人閱讀 165,138評論 0 355
  • 文/不壞的土叔 我叫張陵迎卤,是天一觀的道長拴鸵。 經(jīng)常有香客問我,道長蜗搔,這世上最難降的妖魔是什么劲藐? 我笑而不...
    開封第一講書人閱讀 58,791評論 1 295
  • 正文 為了忘掉前任,我火速辦了婚禮樟凄,結(jié)果婚禮上聘芜,老公的妹妹穿的比我還像新娘。我一直安慰自己缝龄,他們只是感情好汰现,可當(dāng)我...
    茶點故事閱讀 67,794評論 6 392
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著叔壤,像睡著了一般瞎饲。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上炼绘,一...
    開封第一講書人閱讀 51,631評論 1 305
  • 那天嗅战,我揣著相機與錄音,去河邊找鬼俺亮。 笑死驮捍,一個胖子當(dāng)著我的面吹牛形庭,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播厌漂,決...
    沈念sama閱讀 40,362評論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼斟珊!你這毒婦竟也來了苇倡?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 39,264評論 0 276
  • 序言:老撾萬榮一對情侶失蹤囤踩,失蹤者是張志新(化名)和其女友劉穎旨椒,沒想到半個月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體堵漱,經(jīng)...
    沈念sama閱讀 45,724評論 1 315
  • 正文 獨居荒郊野嶺守林人離奇死亡综慎,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 37,900評論 3 336
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發(fā)現(xiàn)自己被綠了勤庐。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片示惊。...
    茶點故事閱讀 40,040評論 1 350
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖愉镰,靈堂內(nèi)的尸體忽然破棺而出米罚,到底是詐尸還是另有隱情,我是刑警寧澤丈探,帶...
    沈念sama閱讀 35,742評論 5 346
  • 正文 年R本政府宣布录择,位于F島的核電站,受9級特大地震影響碗降,放射性物質(zhì)發(fā)生泄漏隘竭。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點故事閱讀 41,364評論 3 330
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望劳吠。 院中可真熱鬧匠童,春花似錦、人聲如沸弧圆。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,944評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽搔预。三九已至,卻和暖如春叶组,著一層夾襖步出監(jiān)牢的瞬間拯田,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 33,060評論 1 270
  • 我被黑心中介騙來泰國打工甩十, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留船庇,地道東北人吭产。 一個月前我還...
    沈念sama閱讀 48,247評論 3 371
  • 正文 我出身青樓,卻偏偏與公主長得像鸭轮,于是被迫代替她去往敵國和親臣淤。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點故事閱讀 44,979評論 2 355

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

  • # Python 資源大全中文版 我想很多程序員應(yīng)該記得 GitHub 上有一個 Awesome - XXX 系列...
    小邁克閱讀 2,989評論 1 3
  • 自用收藏 原文:http://www.th7.cn/Program/IOS/201606/884245.shtml...
    西瓜皮奧特曼閱讀 2,185評論 0 16
  • 圖文/蘭妮.逞 我家小子10歲了,又黑又瘦卻愛笑按厘。自行車滑板輪滑樣樣愛医吊,在家只把電視開,就是不把書來看逮京。 10歲的...
    lannychen閱讀 801評論 11 13
  • 成長是一道傷痕卿堂,沒有傷疤,卻更加深刻懒棉。 時間總是會給我們解答所有迷惘的不解的草描。就像是高聳的老樹,都是在風(fēng)雨中晃來晃...
    浮夢生閱讀 503評論 0 1
  • 一策严、那么我們就從最簡單的環(huán)境搭建開始: 安裝node.js陶珠,從node.js官網(wǎng)下載并安裝node,安裝過程很簡單...
    world_7735閱讀 8,826評論 0 2