二、-keepclasseswithmembernames 混淆效果
-keepclasseswithmembernames 与 -keep 作用类似 , 都可以保留 类名 与 成员 不被混淆 ,
-keepclasseswithmembernames 配置保留类名 : 下面的配置只会 保留类名 , 成员名会被混淆 ;
# 保留 kim.hsl.handler.Handler 类名 , 函数名会被混淆 -keepclasseswithmembernames class kim.hsl.handler.Handler
下面的混淆结果显示 , kim.hsl.handler.Handler 的类名被保留下来 , 成员被混淆 , 这是因为没有配置要保留的成员 ;
-keepclasseswithmembernames 配置保留类名 , 成员名 : 下面的配置 类名 与 成员名都会被保留 ;
# 保留 kim.hsl.handler.Handler 类名 , 成员名称 -keepclasseswithmembernames class kim.hsl.handler.Handler{ *; }
下图中展示了 , Handler 类中 , 类名 与 成员名称 都被保留下来 ;
-keepclasseswithmembernames 与 -keep 配置区别 : -keepclasseswithmembernames 中假如配置的 保留成员不存在 , 则该 混淆不生效 ;
# 保留 kim.hsl.handler.Handler native 方法名称 -keepclasseswithmembernames class kim.hsl.handler.Handler{ native <methods>;---- }
没有找到 Handler 中的 native 方法 , 则整个 Handler 都不保留 , 类名 与 成员 都被混淆了 ;