Android proguard混淆注意事项

在这篇博客中,http://blog.csdn.net/marshalchen/article/details/9928801有更多的关于混淆的一些注意事项;下面是使用过程中碰到的一些问题:

1、 在使用总线事件(以OTTO Event为例)时,混淆后发现总线事件无法工作了;主要有下面几个原因。
1) 总线事件注解混淆过程中被删除了,需要增加下面的代码处理。

//保留注解
-keepattributes *Annotation*

2) 接收事件的方案在混淆过程中被删除了;总线事件是以注解方式再通过反射调用的,而这些方法或函数在代码中被显式调用过, 会被proguard给删除了;需要设置保证这些方法不被删除:
① 可以为总线事件的接收方法定义一个通用的前缀,如“onOTTOEventxxx(Eventxx data)”;在proguard配置中就保留该类型的方法(推荐方式)。

-keepclasseswithmembers class * {  
    public void onOTTOEvent*(…);
}

② 直接参数方式保留该方法;一般使用到的事件类型会比较多,就不适合使用这种方式了,只适合只有少数的事件的工程;如事件的bean定义为EventTest1.

-keepclassmembers class * {   
    public void *(package. EventTest1); 
}

③ 一般总线接收事件方法都定义在activity或fragment或dialog中;而这些类的方法基本都不适合混淆,可以直接将该类型的类的方法都定义成不混淆。
-keep public class * extends android.app.Activity{*;}

2、 在xml中设置onClick事件,被混淆问题。
在xml中设置onClick事件,系统最后是以反射方式进行调用的,这些的设置的方法在代码中可能就没有显式调用过,混淆后会被proguard给删除了;解决方案:

-keepclassmembers class * extends android.app.Activity {
public void *(android.view.View);
}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值