InjectionIII , iOS模拟器热更新

InjectionIII

概述

injectionIII 工具可以动态加载Swift、Objective-C代码到已经在运行的程序中执行,热加载。该项目由John Holdsworth 提供,是一个开源项目

效果

效果来自源项目


injected.gif

安装使用

  1. App Store 下载 InjectionIII(或到源项目clone 进行构建)
    2.Open file -> Project path
    3.select File Watcher
    openfile.png

    4.添加如下代码到项目的AppDelegate中的func application(_ application: UIApplication, didFinishLaunchingWithOptions launchOptions: [UIApplication.LaunchOptionsKey: Any]?) -> Bool
    Before Xcode 10:(swift)
#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

After Xcode 10:

#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

5.在项目需要修改的代码类中添加如下代码

 @objc func injected(){
        
        print("I've been injected: \(self)")
        
    }

6.修改运行中的程序的代码时,只需要按下Command + S saved, 就所修改的代码就会显示在simulator上

注意⚠️

亲测的该工具适用Simulator

原理

感兴趣的可以看一下这篇文章

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

友情链接更多精彩内容