Repository navigation
NoCompile v0.2.9
·
57 commits
to c5219fa4f25798a9d3775baca6257eb551f97ce5
since this release
NoCompile 0.2.9
本版本是一次全面的代码审查与加固:修复了连接、日志解析、资源热重载、注入中的多处缺陷,补齐了单元测试,并改进了按芯片分发的安装包。
修复
- 私有类的改动不生效:
private/fileprivate的 Swift 类,以及开启-fvisibility=hidden或EXPORTED_SYMBOLS_FILE的工程里的 ObjC 类,改了方法体后注入报「未替换任何实现」。现在改用符号表中的地址定位这些类 - 真机上修改颜色集(.colorset)必定失败,提示「资源包缺少文件」
- 名称带设备后缀的资源(如
icon@2x~ipad.png、Main~iphone.xib)保存后不触发热重载 - 颜色集以 0–255 整数填写分量时颜色错误
swiftc -###输出中单引号包裹的参数(如-Xcc '-DM=a\b')里的反斜杠被吞掉,宏值被改写- 推送途中连接断开时,改动被误记为「已应用」,同一进程重连后不再补推。现在收到 App 回报后才登记
- Wi-Fi 连接在 Mac 休眠或设备断网后变成半开连接,两端都不会重连。两端已开启 TCP 保活,约 1 分钟内判定断开并自动重连
- 模拟器 App 刚连上就崩溃等情况下,Mac 端停止接受所有新连接,之后的 App 都连不上
- 切换工程的瞬间连上的连接不会被关闭、一直占着设备
- 构建日志解析中途失败(超时、Xcode 正在写入)后被记为已解析,之后一直提示「请先完整构建」
- 偏好设置在主线程修改、在引擎线程读取的数据竞争,可能导致崩溃
- tvOS 真机的编译命令被归为未知平台,无法热重载
- 自定义了带连字符配置名(如
Debug-Staging)的 macOS 工程,资源找不到所属的 bundle - 消息中含无法序列化为 JSON 的内容时 App 或 Mac 端崩溃
- 在主线程发起注入时可能死锁;
+load中用method_setImplementation/class_replaceMethod写的 hook 在注入时被重复安装 - 方法实现的符号被剥离时,新实现可能被写到无关的方法上
- 真机写入 dylib 失败(存储空间不足)时给出误导性的错误
- 打开已被移动或删除的最近工程时没有任何提示;恢复默认设置后 DerivedData、排除规则不生效;「登录时自动启动」开关会重复注册 / 注销;系统睡眠唤醒后被误判为主线程卡顿
- 命令行工具静默忽略拼错的参数,现在报错退出;支持
nocompile <工程路径>、--version,Ctrl+C 时先停止引擎再退出
新功能
- 注入记录右键「在 Xcode 中打开」,编译失败时直接定位到第一条错误所在的行
- Mac Catalyst App(实验性):与 macOS App 一样连接本机 NoCompile
- 在 Apple 芯片的 Mac 上运行 Intel 版时给出提示,检查更新时自动换成 arm64 版本
- 最近工程菜单标出已不存在的工程,并可一键清空
- 偏好设置显示当前安装包的架构
分发
- 每个 Release 额外提供不带版本号的
NoCompile_arm64.dmg/NoCompile_x86_64.dmg,README 中的下载链接始终指向最新版,并附SHA256SUMS.txt - arm64 包中的 Sparkle 等依赖也精简为单一架构,打包时逐个校验所有二进制的架构、客户端 bundle 的完整性与版本
- Sparkle feed 保留全部历史版本,发布后自动校验下载地址
测试
- 新增单元测试(
swift test):构建日志解析、命令分词、协议帧编解码、构建清单、头文件改动分析、版本号一致性,以及客户端的帧收发、ObjC 方法替换、布局变化保护等
升级提示
- 客户端修订号没有变化,已编译的 App 仍可正常热重载。要用上客户端侧的修复(私有类、颜色集、Wi-Fi 保活等),请重新编译运行 App;用「拷贝 bundle」方式接入的,确认这次构建执行了
nocompile_copy_bundle.sh
详见 接入指南。
下载
| 芯片 | 文件 | 大小 | SHA-256 |
|---|---|---|---|
| Apple 芯片(M 系列) | NoCompile_v0.2.9_arm64.dmg | 3.5M | 94ba16555aa57ee48580b6470ed94a6448a3ae17dfd6f45182af347be750cca7 |
| Intel | NoCompile_v0.2.9_x86_64.dmg | 4.7M | 10a62a8db0d6f03cce6d24934028a66ad8c9bb0e18827577fc3eede59237065a |
不确定芯片类型:点击屏幕左上角的苹果菜单 → 关于本机,「芯片」一栏显示 Apple M 系列即选 arm64,显示 Intel 即选 x86_64。