InjectionIII

前言

随着项目越来越大,每次build的时间也是在变长。当只是修改一个UI上的小问题时,为了看到效果,需要再次build等待很长的时间,无疑是件很糟糕的事情。尤其对比flutter的热重载,这样的开发体验尤其难受。

InjectionIII 的出现,完美解决了这样的困境。修改完之后,只需要保存,即可看到修改完的效果。

有一点很纳闷,这么好用的工具,为什么之前不但是我,身边的朋友也从来没有提及过,怪哉怪哉!

效果图

只支持模拟器!只支持模拟器!只支持模拟器!

一、下载

App Store搜索 InjectionIII 并下载

Injection下载

二、打开工程

下载完成后打开此软件,Mac状态点击 InjectionIII -> Open Project ,选择你的工程文件夹然后确定 Select Project Directory 。操作完成后再用Xcode打开工程。

工程选择

具体选择

三、配置

Xcode 打开工程后,在 AppDelegatedidFinishLaunchingWithOptions 方法内注入 InjectionIII

Xcode版本大于等于10.2 如下注入:

1
2
3
4
5
6
7
#if DEBUG
Bundle(path: "/Applications/InjectionIII.app/Contents/Resources/iOSInjection.bundle")?.load()
//for tvOS:
Bundle(path: "/Applications/InjectionIII.app/Contents/Resources/tvOSInjection.bundle")?.load()
//Or for macOS:
Bundle(path: "/Applications/InjectionIII.app/Contents/Resources/macOSInjection.bundle")?.load()
#endif

Xcode版本10.1的如下注入:

1
2
3
4
5
6
7
#if DEBUG
Bundle(path: "/Applications/InjectionIII.app/Contents/Resources/iOSInjection10.bundle")?.load()
//for tvOS:
Bundle(path: "/Applications/InjectionIII.app/Contents/Resources/tvOSInjection10.bundle")?.load()
//Or for macOS:
Bundle(path: "/Applications/InjectionIII.app/Contents/Resources/macOSInjection10.bundle")?.load()
#endif

注意,文件路径不能有错,如果你有什么骚操作下载的软件被你移动到其它文件夹,就要用你自己的路径。

四、看Xcode日志

配置完成后年,run你的项目,注意查看Xcode日志。如果有如下输出,则成功注入了。

1
? Injection connected, watching /Users/zhouqiang/Desktop/Project/AnXinCollege/**

比如我修改了 SettingViewController 文件,并保存(command + S),日志输出如下,代表成功

1
2
3
4
5
? *** Compiling /Users/zhouqiang/Desktop/Project/AnXinCollege/AnXinCollege/Modules/Mine/Setting/SettingViewController.swift ***
? Loading .dylib ...
objc[10121]: Class _TtC12AnXinCollege21SettingViewController is implemented in both /Users/zhouqiang/Library/Developer/CoreSimulator/Devices/A12F878C-ACF9-4D62-A82E-4D260EE7E08A/data/Containers/Bundle/Application/ABBB9C03-F6EE-4354-816E-9537D729FC8F/AnXinCollege.app/AnXinCollege (0x10709ed28) and /Users/zhouqiang/Library/Containers/com.johnholdsworth.InjectionIII/Data/eval101.dylib (0x1266d5da0). One of the two will be used. Which one is undefined.
? Loaded .dylib - Ignore any duplicate class warning ^
? Injected 'SettingViewController'

Tips

一定要保存,只需要保存,快捷键Command + S ,看到如上日志输出即可

要想看到修改后的效果,一定要确保操作执行到你修改的代码。比如cell的改动,保存后,你需要滑动cell触发你修改的代码。比如页面UI的修改,修改完如果没有其它按钮能触发到,则需要返回上一页再进来,以此确保执行到你修改的代码

不仅仅看UI上的变化,逻辑上的更改也是可以的

参考链接