关于混淆找不到字段的处理

混淆是一个很强大的产品,在proguard中使用反射后很多情况需要使用-keep命令来屏蔽不混代码的混淆,但对以下情况需要特别注意:

 Class.forName("SomeClass")

    SomeClass.class

    SomeClass.class.getField("someField")

    SomeClass.class.getDeclaredField("someField")

    SomeClass.class.getMethod("someMethod", new Class[] {})

    SomeClass.class.getMethod("someMethod", new Class[] { A.class })

    SomeClass.class.getMethod("someMethod", new Class[] { A.class, B.class })

    SomeClass.class.getDeclaredMethod("someMethod", new Class[] {})

    SomeClass.class.getDeclaredMethod("someMethod", new Class[] { A.class })

    SomeClass.class.getDeclaredMethod("someMethod", new Class[] { A.class, B.class })

    AtomicIntegerFieldUpdater.newUpdater(SomeClass.class, "someField")

    AtomicLongFieldUpdater.newUpdater(SomeClass.class, "someField")
    AtomicReferenceFieldUpdater.newUpdater(SomeClass.class, SomeType.class, "someField")


网上说这些情况proguard将会检测和处理。但最近我在android项目中使用后类是被处理了,但字符串表示的数据(比如这里的someField)并没有被处理,所以如果出现了报错找不到字段的那你最好和我一样在配置文件中屏蔽一下吧!方法很简单:

-keep public class yourClass

-keepclasseswithmembers class yourClass {    
    <fields>;    
    <methods>;    
}



  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值