返回

iOS 热重载:Injection 使用指南

IOS

前提条件

  • Xcode 10.0 或更高版本
  • 适用于 iOS 8.0 或更高版本的 iOS 设备

安装 Injection

  1. 使用 Homebrew(推荐): ```bash
    brew tap wix/brew
    brew install injection

2. **手动安装:** 
   * 从 GitHub 下载最新版本:https://github.com/wix/Injection/releases
   *`Injection.xcframework` 文件添加到您的 Xcode 项目

## 配置您的应用程序

1. **添加运行脚本:** 在 Xcode 中,转到 **Build Phases**  选项卡并单击 **+**  按钮。选择 **New Run Script Phase**2. **设置脚本:****Run Script**  字段中,输入以下内容:
   ```bash
export INJECTION_ENABLED="YES"
/usr/local/bin/injection inject -p $TARGET_NAME
  1. 将脚本移动到“Pre-action”阶段:Phase 下拉菜单中,选择 Pre-action

使用热重载

  1. 连接到您的设备: 使用 USB 数据线将您的 iOS 设备连接到计算机。
  2. 构建并运行: 在 Xcode 中构建并运行您的应用程序。
  3. 启用热重载: 在模拟器中,通过摇晃设备或通过菜单栏中的 Debug > Enable Injection 来启用热重载。

高级用法

自定义热重载行为

您可以通过设置以下环境变量来自定义热重载行为:

  • INJECTION_EXCLUDED_FILES: 以逗号分隔的文件模式列表,这些文件将被排除在热重载之外。
  • INJECTION_FORK_ATTACHED_PROCESSES: 是否为附加进程注入。这允许在真机上热重载。
  • INJECTION_DISABLE_GUI_RELOAD: 是否禁用 GUI 重新加载。

热重载脚本

Injection 还允许您创建自定义脚本,以便在热重载事件发生时执行。这对于自动执行任务(例如重新加载数据或更新 UI 状态)非常有用。

要创建热重载脚本,请创建包含以下代码的 Swift 文件:

import Foundation

@objcMembers
public class MyHotReloadScript: InjectionScript {

    public func onInjection(context: InjectionContext) {
        // 在此处执行您的自定义代码
    }

}

然后,在您的 Xcode 项目中注册脚本:

let hotReloadScript = MyHotReloadScript()
Injection.default.register(script: hotReloadScript)

注意

  • 注解类型必须与您应用程序的目标平台匹配(例如,对于 Objective-C 应用程序,使用 @objc)。
  • 确保 MyHotReloadScript 类实现 InjectionScript 协议。
  • onInjection 方法将在热重载事件发生时被调用。

优势

Injection 热重载提供了以下优势:

  • 提高开发效率: 无需重新编译或重新启动,即可立即查看 UI 更改。
  • 简化调试: 可以更轻松地隔离并修复布局问题。
  • 增强敏捷性: 允许快速迭代并试验不同 UI 设计。

总结

Injection 是一个强大的工具,可为 iOS 开发人员提供热重载功能。通过遵循本指南,您可以轻松地将热重载集成到您的应用程序中,并享受它带来的效率和敏捷性好处。