前言
最近在看 "戴老師" 專欄推出的 "App 如何通過注入動态庫的方式實作極速編譯調試?
" 感觸很深, 相信每個 iOS 的小夥伴在寫代碼的時候, 都存在這個煩惱, 每次修改個小功能, 都需要重新 Build 一次, 才能運作, 當項目功能不斷積累到一定程度時, 編譯時間可能超乎我們想象, 每次修改個 Color, text 等等, 都要經曆一次漫長的等待。
真羨慕寫 前端 Flutter 的同僚呀, code 一修改好, 不到 1S 就能很快的看到修改結果.
原來在 iOS 上早就有大佬推出了 注入動态庫的方式來解決由于 OC 采用 "編譯器" VS "連結器" 特性進行編譯連結導緻的 調試周期過長的問題。
使用 InjectionIII 解決項目編譯時間過長
使用 InjectionIII 可以加快調試的速度, 并且可以保證程式不需要重新開機, 即可達到源碼修改後的效果。 并且其代碼是完全開源的
InjectionIII。
其實作原理大家可以直接跳轉到 "戴老師" 專欄去檢視
App 如何通過注入動态庫的方式實作極速編譯調試?講的非常詳細.
安裝方式
- 方式一: 直接通過 github clone 項目下來, 運作。 如果遇到簽名報錯, 可直接到 Build Setting 将 Code Signing Identity 将簽名取消掉。
- 方式二: 直接到 App Store 搜尋 InjectionIII 下載下傳 運作即可。
運作之後點選應用圖示選擇 Open Project, 并且選擇我們要注入動态庫的應用.
然後在我們注入的項目中 "AppDelegate" 的 - (BOOL)application:(UIApplication )application didFinishLaunchingWithOptions:(NSDictionary )launchOptions 添加代碼
#if DEBUG
// iOS
[[NSBundle bundleWithPath:@"/Applications/InjectionIII.app/Contents/Resources/iOSInjection.bundle"] load];
#endif
XCode10 是這個
#if DEBUG
// iOS
[[NSBundle bundleWithPath:@"/Applications/InjectionIII.app/Contents/Resources/iOSInjection10.bundle"] load];
#endif
最後到我們需要監聽的頁面裡面重寫這個方法即可
OC:
- (void)injected {
[self viewDidLoad];
[self viewWillAppear:YES];
[self viewWillDisappear:YES];
}
Swift
extension UIViewController {
@objc func injected() {
viewDidLoad()
viewWillAppear(true)
viewDidAppear(true)
}
}
參考
最後
希望此篇文章對您有所幫助,如有不對的地方,希望大家能留言指出糾正。
謝謝!!!!!
學習的路上,與君共勉!!!
本文原創作者: Jersey . 歡迎轉載,請注明出處和 本文連結