一.热补丁的本质 对于线上紧急的bug,重新提审AppStore的时间过长.因此,能够下发一段补丁代码到线上运行,并结合Runtime,实时改变App原有的行为,就显得极为重要.补丁代码的形式可以有很多种,比如文本形式的JS脚本,还有二进制形式的动态库.只要能执行即可,借助系统的原生能力或者外部引入的执行引擎. 二.尴尬的现状 1.众多热补丁框架,如JSPatch,被苹果爸爸禁掉. 2.动态库有签名校验,无法通过下发动态库来改变线上程序运行. 三.由Java想到的新套路 我们知道,Java从源代…
1.引言 岁月真是个养猪场,这几年,人胖了,微信代码也翻了. 记得 14 年转岗来微信时,用自己笔记本编译微信工程才十来分钟.如今用公司配的 17 年款 27-inch iMac 编译要接近半小时:偶然间更新完代码,又莫名其妙需要全新编译.在这么低的编译效率下,开发心情受到严重影响. 于是年初我向上头请示,优化微信编译效率,上头也同意了.     2.现有方案 在动手之前,先搜索目前已有方案,大概情况如下. 2.1 优化工程配置 1)将 Debug Information Format 改为 D…
google it http://www.swig.org/Doc3.0/CSharp.html http://samanbarghi.com/blog/2016/12/06/generate-c-interface-from-c-source-code-using-clang-libtooling/ https://github.com/mono/CppSharp http://szelei.me/code-generator/…
原文地址:http://clang.llvm.org/docs/InternalsManual.html 译者:史宁宁(snsn1984) "Clang"C语言前端内部手册 简介 这个文档描述了比较重要的API中的一部分API,还表述了Clang C语言前端中的一些内部设计想法.这个文档的目的是既把握住高层次的信息的同时也对这些高层次的信息背后的设计思路进行一些介绍.这篇文档面向的是打算hacking(这个词的具体含义在这里实在不好把握,感觉英文更容易表达具体含义)Clang的人,而不…
Clang中包含了非常多的关于抽象语法树(AST)的访问和操作的类和接口.我们程序开发人员可以直接通过继承其中的某些类,重写其中的关键成员方法,从而形成我们自己的对抽象语法树的操作. 那么,首先我们简要介绍几个概念: 抽象语法树(AST):抽象语法树是源代码的抽象语法结构的树状表现形式.树上的每个节点都表示源代码中的一种结构.之所以说语法是“抽象”的,是因为这里的语法并不会表示出真实语法中出现的每个细节.一般的,在源代码的翻译和编译过程中,语法分析之后会创建出抽象语法树.一旦AST被创建出来,在…
官方文档:http://clang.llvm.org/docs/ClangFormatStyleOptions.html 中文 在代码中配置样式 当使用 clang::format::reformat(...) 方法, 格式将被clang::format::FormatStyle 框架指定. 配置格式化样式选项 这一部分列出了被支持的选项. 每个操作都有指定类型. 枚举类型的可能的值,被C++枚举(一个预编译,例如:LS_Auto)和配置中的一个值(没有预编译:Auto)指定. BasedOnS…
1. 配置LLVM和Clang 在这篇文章里,我们会基于上一篇所述的方案进行展开,详细讲解如何从0开始创建一个基于Clang LibTooling的编译器前端工具.在开始之前,我们假设你已经基本了解何为抽象语法树AST,我们后面的所有内容都是基于对AST的解析完成的.如果不了解AST,请移步官方文档Introduction to the Clang AST补全基础知识,或者这篇中文文章. 此外我们还需要下载并配置好LLVM和Clang的源码环境.LLVM和Clang的源码都可从llvm.org上…
语法分析器的任务是确定某个单词流是否能够与源语言的语法适配,即设定一个称之为上下文无关语言(context-free language)的语言集合,语法分析器建立一颗与(词法分析出的)输入单词流对应的正确语法树.语法分析树的建立过程主要有两种方法:自顶向下语法分析法和自底向上分析法.AST作为语法分析树(parse tree)的一种简写方式,它独立于具体编程语言(C++.Java.C等),而且与语法分析树的建立过程无关(自顶向下和自底向上逻辑等价),是联系编译器前端.后端的重要接口.Clang的…
clang -fobjc-arc -framework Foundation helloworld.m -o helloworld.out OVERVIEW: clang LLVM compiler USAGE: clang [options] <inputs> OPTIONS: -### Print (but do not run) the commands to run for this compilation --analyze Run the static analyzer -arcm…
在iOS开发过程中, 我们可能会碰到一些系统方法弃用, weak.循环引用.不能运行之类的警告. 有代码洁癖的孩子们非常想消除他们, 今天就让我们来一次Fuck 警告.! 首先学会主要的语句 #pragma clang diagnostic push #pragma clang diagnostic ignored "-Wdeprecated-declarations" 这里写出现警告的代码 #pragma clang diagnostic pop 这样就消除了方法弃用的警告. 同理,…