如何避免某些对象或成员被混淆¶
当前教程是为了让你方便的排除某些iOS程序的Runtime对象被混淆引起的运行时问题,分为按文件级别和按语言级别来,文件级别影响的只有当右键查看目标文件日志中可见,才会有效果.
一. 按文件级别排除¶
一般来说假如你对这工程不熟悉,就按文件级别排除就行了,工具一般有3个标识.C(混淆), R(改名)、I(膨胀),我们只需要找到对应的文件,右键,就可以控制这些标识
或者到配置里面添加
二. 排除对象-语言(混淆配置)¶
很多时候我们希望按语言的习惯来排除对象,更简单避免一些运行时问题,就需要了解几个常用的设置,在混淆配置里面就能找到
1. ObjC Class / Swift Class
(生效对象只针对单一名称,不影响内部属性和方法)¶
设置到这个里面的名字,不管是swift还是objc对象名,将不会被排除混淆,比如说 AppController
被设置后,就不会被改名,支持通配符 **
2. ObjC Property / Swift Property
(生效对象只针对单一名称,不影响内部属性和方法)¶
设置到这个里面的名字,不管是swift还是objc属性名,都不会被改名,支持通配符 **
3. ObjC Ivar / Swift Ivar
(生效对象只针对单一名称,不影响内部属性和方法)¶
设置到这个里面的名字,不管是swift还是objc内部变量,都不会被改名,支持通配符 **
4. All Member In ObjC Class/Protocol/Category Swift Class/Protocol
(排除内部所有成员的混淆来解决运行时问题,通过名称)¶
这个分组里面的,可以直接通过通配符来用名字排除,比如说如果Json
用到的Model
对象都是有固定前缀或者后缀,写作**Model
,所有匹配这个名字的类对象的成员属性和方法都会被排除,不会被混淆
5. All Member By Extend ObjC Class/Protocol
(排除内部所有成员的混淆来解决运行时问题,通过继承链)¶
这个分组里面的表示如果某个类父类链条里面包含这个类,就会标记为需要排除内部属性和方法被混淆,或者直接实现了某个协议的类,也会被标记出来,不会被混淆
6. All Memeber By Call
(排除内部所有成员的混淆来解决运行时问题,通过源码分析调用)<已废弃>
¶
不推荐使用,不是所有项目,都能正常起效