ORPatchFile 1.2.3

ORPatchFile 1.2.3

Silver 维护。



  • SilverFruity

项目介绍

1. oc2mango

将 Objective-C 转换为 MangoFix 脚本。

  • 输入 Objective-C 源码文件夹,通过 oc2mangoLib 转换为 AST,再将其转换为 mongo 脚本。

使用示例

# 先在releases中下载最新的oc2mango.zip
# 解压文件夹
unzip ~/Downloads/oc2mango.zip -d ~/Downloads/
# 执行oc2mango
~/Downloads/oc2mango input_dir[包含Objective-C .h .m的文件夹] output_dir[.mg的输出文件夹]
# 例如: ~/Downloads/oc2mango ~/Desktop/InputOCFilesDir ~/Desktop/OuputMongoFilesDir

2. PatchGenerator

将 Objective-C 转换为 OCRunner 热更新补丁。

  • 输入 Objective-C 文件集合或文件夹,通过 oc2mangoLib 转换为 AST,然后使用 ORPatchFile,将 AST 序列化成 OCRunner 可以执行的二进制补丁或 JSON 补丁。

使用示例

  • -files:Objective-C源文件列表或文件夹
  • -refs:外部引用的文件列表或文件夹。例如:OCRunnerDemo/Scripts.bundle中的UIKit、GCD引用。主要包含一些结构体声明、枚举声明、typedef、系统函数声明。
  • -output:补丁文件最终保存的路径
# 1: -files: files
PatchGenerator -files ~/OCRunnerDemo/ViewController1 ~/OCRunnerDemo/ViewController2 ~/OCRunnerDemo/ViewController3 -refs  ~/Scripts.bundle -output ~/OCRunnerDemo/binarypatch

PatchGenerator -files ~/OCRunnerDemo/ViewController1 -refs  ~/Scripts.bundle -output ~/OCRunnerDemo/binarypatch

# 2: -files: dir
PatchGenerator -files ~/OCRunnerDemo/ViewController1/ -refs ~/Scripts.bundle -output ~/OCRunnerDemo/binarypatch

3. oc2mangoLib

  • 将Objective-C源码,通过flex&bsion转换为语法树

4. ORPatchFile

  • oc2mango、oc2mangoLib、OCRunner、PatchGenerator的基础库。
  • 包含了所有的语法节点类,以及补丁文件的序列化与反序列化。(RunnerClasses、ORPatchFile)。
  • 包含两种补丁:二进制补丁和JSON形式的补丁。
  • 其中二进制补丁,反序列化速度和文件大小都是最优。

5. BinaryPatchCodeGenerator

  • 输入RunnerClasses.h文件,然后生成BinaryPatchHelper.h,BinaryPatchHelper.m两个文件。

不支持

  1. 预编译相关
  2. 编译器内置函数以及属性__attribute__等
  3. a[x], {x,y,z}, a->x
  4. id a = ( identifier )object; 类型转换。但支持id a = (identifier *)object;

除以上列表,其余语法都已支持。如有问题,欢迎提交issue。