前段时间看了戴铭大神的一篇《App 如何通过注入动态库的方式实现极速编译调试?》学到了怎么使用InjectionIII进行热重载来提高开发效率。觉得很实用,所以来分享给大家。(想看戴铭大神其他文章的朋友,可以扫一扫最下方的二维码进行购买)
先解释一下什么是热重载,相信写过Weex或者Flutter的小伙伴知道,在更改了代码的时候,比如换个颜色,只要使用command + s就不需要重新运行项目就能看到修改后的效果。但是在原生代码里面却无法使用,每次都需要重新运行才可以看到修改,在写一些复杂的页面就会很头疼。
今天介绍的就是如何在原生代码下进行热重载。
首先我们去App Store下载InjectionIII
也可去去GitHup直接clone或者下载Zip包。
https://github.com/johnno1962/InjectionIII
然后打开InjectionIII,是一个蓝色的针筒图标。
接着Open Project 选择你需要添加的项目。
image.png
然后在AppDelegate的- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions
方法中添加代码
#if DEBUG
[[NSBundle bundleWithPath:@"/Applications/InjectionIII.app/Contents/Resources/iOSInjection.bundle"] load];
#endif
Xcode 10 及以上
#if DEBUG
[[NSBundle bundleWithPath:@"/Applications/InjectionIII.app/Contents/Resources/iOSInjection10.bundle"] load];
#endif
接着运行项目,针筒图标会变为橙色。这时候InjectionIII已经起作用啦。
可以试着更改颜色,添加点击事件,添加新的View。先使用control+= 以后用 command + s进行热重载,如果是添加View,需要重新进入这个页面才能起作用。
我的demo中已经写好了一些控件和点击事件,可以直接下载尝试。
https://github.com/Yanemperor/SmallTools
由于iOS10之后由于沙盒的限制, 应用无法加载自身bundle之外的动态库 ,这个工具只能在模拟器上使用。
问题
1.编译时碰到Pod问题
把 file -> Workspace Setting -> Build System, 改为Legacy Build System模式,默认的New Build System(Default)模式
推荐
戴铭大神的《iOS开发高手课》
IMG_2091.JPG
网友评论