在做熱更技術(shù)調(diào)研的時候剂公,無意中在GitHub發(fā)現(xiàn)這個模擬器界面調(diào)試hotfix的方案,就做了進一步的了解典挑,這個工具是開源的酥宴,用好這個能提升你的開發(fā)效率。By the way您觉,xib上面修改界面后command+S沒起作用拙寡,只能拉到VC里邊用代碼控制才生效。
想用它主要有以下4個步驟:
1.下載安裝Injectionlll
B307E006-13A5-4319-9317-C1629D620FBD.png
2.在調(diào)試項目的AppDelegate添加鏈接InjectionIII代碼
- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions {
#if DEBUG
//InjectionIII調(diào)試app路徑鏈接
[[NSBundle bundleWithPath:@"/Applications/InjectionIII.app/Contents/Resources/iOSInjection.bundle"] load];
#endif
// Override point for customization after application launch.
self.window = [[UIWindow alloc]initWithFrame:[UIScreen mainScreen].bounds];
[self.window makeKeyAndVisible];
self.window.rootViewController = [[ViewController alloc]init];
return YES;
}
3.添加響應(yīng)Injectionlll app的injected方法(我直接把它放到了VC 的父類中琳水,免得每個要調(diào)試的頁面都要添加一遍)
#if DEBUG
//InjectionIII調(diào)試響應(yīng)方法
- (void)injected {
//重新加載view
[self loadView];
[self viewDidLoad];
[self viewWillLayoutSubviews];
[self viewWillAppear:YES];
[self viewDidDisappear:YES];
}
#endif
4.開始調(diào)試肆糕,command+R運行工程后成功鏈接后是橙色,沒鏈接成功是藍色的在孝,UI 頁面的代碼修改完畢后command+s保存诚啃,即可刷新頁面改動的元素
0FCB468E-0DF4-453A-BF14-6255970ECB18.png
F4E9DF66-D118-45DE-8815-4412121A1102.png
附上Injectionlll 運行原理
Injectionlll 通過Fill Watcher檢測到項目源碼改動,Injectionlll Server就會編譯私沮、打包成動態(tài)庫始赎,也就是.dylib, 動態(tài)庫用writeToString方法通過socket通知運行的app,Injectionlll client接收到消息injected(tmpfile: String)方法仔燕,運行時進行動態(tài)類替換造垛,類方法被替換后,進行界面重新繪制界面涨享, 整個過程無需重啟和編譯APP筋搏,達到了動態(tài)庫極速調(diào)試的目的。