《iOS-LLVM框架【2】》

 

《iOS-LLVM框架【2】》

 

 

 《iOS-LLVM框架【2】》

 

 

 《iOS-LLVM框架【2】》

 

《iOS-LLVM框架【2】》

 

 

 双击 xcodeproj 打开

 《iOS-LLVM框架【2】》

 

 

 《iOS-LLVM框架【2】》

 

 

 《iOS-LLVM框架【2】》

 

 

 《iOS-LLVM框架【2】》

 

点击 Play 按钮开始编译
编译完成以后在 Products 目录,show in Finder

 《iOS-LLVM框架【2】》

 

 

 《iOS-LLVM框架【2】》

 

 

 《iOS-LLVM框架【2】》

 

 

 《iOS-LLVM框架【2】》

 

 

 

《iOS-LLVM框架【2】》

 

 

 

 

 《iOS-LLVM框架【2】》

 

《iOS-LLVM框架【2】》

 

 

 《iOS-LLVM框架【2】》

 

 

《iOS-LLVM框架【2】》

 

 

 

《iOS-LLVM框架【2】》

 

 

《iOS-LLVM框架【2】》

 

 

 

《iOS-LLVM框架【2】》

 

 

《iOS-LLVM框架【2】》

 

写完cpp文件后要编译 MJPlugin 

 

《iOS-LLVM框架【2】》

 

 

《iOS-LLVM框架【2】》

 

 

 

 《iOS-LLVM框架【2】》

 

 注册插件,Add Action

 

《iOS-LLVM框架【2】》

 

《iOS-LLVM框架【2】》

 

 

 

自定义 Consumer 类,继承自ASTConsumer 类

《iOS-LLVM框架【2】》

 

 

 

 

编译

 

《iOS-LLVM框架【2】》

 

 

 

重写HandleTranslationUnit 方法:

《iOS-LLVM框架【2】》

 

 

这个方法在clang编译完 一棵语法树(如mj_person.m 文件编译完成)后调用

 

《iOS-LLVM框架【2】》

 

 

《iOS-LLVM框架【2】》

 

 

《iOS-LLVM框架【2】》

 

 

《iOS-LLVM框架【2】》

 

 

 

《iOS-LLVM框架【2】》

 

 《iOS-LLVM框架【2】》

 

 

《iOS-LLVM框架【2】》

 

   《iOS-LLVM框架【2】》

 

 《iOS-LLVM框架【2】》

 

 

《iOS-LLVM框架【2】》

 

 

《iOS-LLVM框架【2】》

 

 

《iOS-LLVM框架【2】》

 

 

 

《iOS-LLVM框架【2】》

 

 换我们自己用Ninja 编译好的编译器

 

《iOS-LLVM框架【2】》

 

 

XCodeHacking.zip

 

《iOS-LLVM框架【2】》

 

 

.xcplugin 右键,显示内容

《iOS-LLVM框架【2】》

 

 

HackedClang.xcspec文件中 ExecPath 换成自己的编译器全路径:

《iOS-LLVM框架【2】》

 

 

《iOS-LLVM框架【2】》

 

 
《iOS-LLVM框架【2】》

 

 

《iOS-LLVM框架【2】》

 

 

《iOS-LLVM框架【2】》

 

 

 《iOS-LLVM框架【2】》

 

 

《iOS-LLVM框架【2】》

 

 

《iOS-LLVM框架【2】》

 

 

《iOS-LLVM框架【2】》

 

 

Command + Shift + K:Clean 操作,清除上一次插件缓存

《iOS-LLVM框架【2】》

 

 

《iOS-LLVM框架【2】》

 

 

 接下来,指定某一行报这错误信息:

《iOS-LLVM框架【2】》

 

 

《iOS-LLVM框架【2】》

 

 

《iOS-LLVM框架【2】》

 

 

如何扫描类名?==> 扫描语法树 

《iOS-LLVM框架【2】》

 

 

《iOS-LLVM框架【2】》

 

 

《iOS-LLVM框架【2】》

 

 

 《iOS-LLVM框架【2】》

 

 

《iOS-LLVM框架【2】》

 

 

效果已经出来了

 

来解释来龙去脉:

《iOS-LLVM框架【2】》

 

 

 《iOS-LLVM框架【2】》

 

 

《iOS-LLVM框架【2】》

 

 

 《iOS-LLVM框架【2】》

 

 

《iOS-LLVM框架【2】》

 

 

 如果要开发更高级的插件:

1)深入了解语法树;

2)C++;

 

推荐:龙书 + LLVM Cookbook 中文版

 

《iOS-LLVM框架【2】》

 

 

《iOS-LLVM框架【2】》

 

 

 

 

 

 

 

 

 

 

 

 

 

《iOS-LLVM框架【2】》

上一篇:真机Android 8.0版本以上uiautomator定位元素-Unsupported protocol: 2/Unexpected error while obtaining UI hierarchy错误处理


下一篇:Appium自动化环境搭建