文档白名单配置
白名单配置
预计阅读时间:5 分钟
什么是白名单?
白名单用于指定不需要混淆的类、方法、属性或前缀。合理配置白名单可以避免混淆导致的运行时问题, 同时保持代码的兼容性。
白名单类型
类名白名单
指定不混淆的类名
"classes": ["AppDelegate", "SceneDelegate", "MyModel"]方法白名单
指定不混淆的方法名
"methods": ["handleNotification:", "performSelector:"]前缀白名单
指定不混淆的类名前缀(通常用于第三方库)
"prefixes": ["AF", "SD", "MJ", "YY", "Masonry"]正则表达式
使用正则表达式匹配
"patterns": [".*Model$", ".*ViewModel$", ".*Manager$"]配置文件示例
{
"whitelist": {
"classes": [
"AppDelegate",
"SceneDelegate",
"UserModel",
"OrderModel"
],
"methods": [
"handleNotification:",
"performSelector:",
"setValue:forKey:",
"valueForKey:"
],
"prefixes": [
"AF", // AFNetworking
"SD", // SDWebImage
"MJ", // MJRefresh
"YY", // YYKit
"Masonry", // Masonry
"RX", // RxSwift
"Alamofire"
],
"patterns": [
".*Model$",
".*Entity$",
".*DTO$"
]
}
}常见需要加入白名单的场景
使用反射的类
NSClassFromString()、NSSelectorFromString() 引用的类和方法
JSON 序列化模型
Codable/Decodable 模型类,属性名需要与 JSON 键匹配
KVO 观察
使用 KVO 观察的属性及其 getter/setter
第三方库
CocoaPods/SPM 引入的第三方库类
运行时方法交换
使用 Method Swizzling 的方法