返回
iOS 热重载:Injection 使用指南
IOS
2024-01-05 16:16:44
前提条件
- Xcode 10.0 或更高版本
- 适用于 iOS 8.0 或更高版本的 iOS 设备
安装 Injection
- 使用 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
- 将脚本移动到“Pre-action”阶段: 在 Phase 下拉菜单中,选择 Pre-action 。
使用热重载
- 连接到您的设备: 使用 USB 数据线将您的 iOS 设备连接到计算机。
- 构建并运行: 在 Xcode 中构建并运行您的应用程序。
- 启用热重载: 在模拟器中,通过摇晃设备或通过菜单栏中的 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 开发人员提供热重载功能。通过遵循本指南,您可以轻松地将热重载集成到您的应用程序中,并享受它带来的效率和敏捷性好处。