效果:
代碼在保存之后,立馬在模擬器上看到修改后的效果微驶,
避免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保存。
注意: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步是不是對了突梦。
在需要修改的頁面诫舅,修改控件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 直接下載