iOS Injection极速编译

热门标签

,

特别声明:文章多为网络转载,资源使用一般不提供任何帮助,特殊资源除外,如有侵权请联系!

Injection可以做到不用重新编译代码就可以看到结果。对于调试细节能节省很多时间。

iOS Injection极速编译

Injection使用步骤、Xcode版本10.2.1
1.AppStore下载Injectionlll
2.在didFinishLaunchingWithOptions添加下面代码

#if DEBUG
    BOOL loadSuccess = [[NSBundle bundleWithPath:@"/Applications/InjectionIII.app/Contents/Resources/iOSInjection.bundle"] load];
    NSLog(@"loadSuccess");
#endif

3.在需要变更的类中添加injected

- (void)injected{
    [self viewDidLoad];
}

4.变更后直接Ctrl+S.非常方便。

实现原理
Injection会监听源代码文件的变化,如果文件被改动了,Injection Server就会执行rebuildClass重新进行编译、打包成动态库,也就是.dylib。
dlopen会把tmpfile动态库文件载入运行的App里,返回指针dl。接下来,dlsym会得到tmpfile动态库的符号地址,然后就可以处理类的替换工作。
当类的方法都被替换后,我们就可以开始重新绘制界面了。整个过程无需重新编译和重启App,至此使用动态库方式极速调试的目的就达成了。

Injection缺点
1.对于简单的变更效率是非常高的,如果是复杂的操作,还是要重新编译的。
2.对于新增文件、或xib拖入的变量,可能会产生崩溃。感觉不是很稳定。
3.对于OC与Swift混编的,支持的也不如人意。

总结:
1.对于电脑配置不是很高,而项目又比较大的同学,真是省时省力。同样对于调试细节的同学也有极大的帮助。
2.希望工具越来越完善,有任何问题欢迎留言评论

标签:

未经允许不得转载:作者:SheaYang, 转载或复制请以 超链接形式 并注明出处 技术Dog|博客
原文地址:《iOS Injection极速编译》 发布于2019-11-03

分享到:
赞(0) 打赏

评论 抢沙发

5 + 5 =


iOS Injection极速编译

长按图片转发给朋友

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

微信扫一扫打赏

Vieu4.0主题
专业打造轻量级个人企业风格博客主题!专注于前端开发,全站响应式布局自适应模板。

登录

忘记密码 ?