美文网首页程序员
iOS开发-InjectionIII(热重载)

iOS开发-InjectionIII(热重载)

作者: 镜花水月忆存逝兮 | 来源:发表于2019-04-11 11:05 被阅读0次

    前段时间看了戴铭大神的一篇《App 如何通过注入动态库的方式实现极速编译调试?》学到了怎么使用InjectionIII进行热重载来提高开发效率。觉得很实用,所以来分享给大家。(想看戴铭大神其他文章的朋友,可以扫一扫最下方的二维码进行购买)

    先解释一下什么是热重载,相信写过Weex或者Flutter的小伙伴知道,在更改了代码的时候,比如换个颜色,只要使用command + s就不需要重新运行项目就能看到修改后的效果。但是在原生代码里面却无法使用,每次都需要重新运行才可以看到修改,在写一些复杂的页面就会很头疼。

    今天介绍的就是如何在原生代码下进行热重载。

    首先我们去App Store下载InjectionIII
    也可去去GitHup直接clone或者下载Zip包。
    https://github.com/johnno1962/InjectionIII

    image.png
    然后打开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已经起作用啦。

    image.png
    可以试着更改颜色,添加点击事件,添加新的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

    如果你喜欢我的文章,请支持一下作者,欢迎打赏,点赞,Star,留言。

    IMG_2239.JPG IMG_2238.PNG

    相关文章

      网友评论

        本文标题:iOS开发-InjectionIII(热重载)

        本文链接:https://www.haomeiwen.com/subject/vsiziqtx.html