ProGuard Version5.2(4.2)Manual-->Limitations

当使用ProGuard时,你应该知道一些技术性的问题,所有这些都是很容易避免或解决的:
        最好的结果是,为了获得一些有用的东西,混淆器的优化算法假设处理的代码不会故意抛出NullPointerExceptions或ArrayIndexOutOfBoundsExceptions,甚至OutOfMemoryErrors或StackOverflowErrors。例如,如果调用不会有任何影响,它可能会删除一个方法调用myObject.mymethod()。它忽视myObject为null,造成一个NullPointerException的可能性。在某种程度上,这是一件好事:优化的代码可能会抛出较少的exception。如果这整个的假设是错误的,你必须使用-dontoptimize选项关闭优化。
        混淆器的优化算法目前还假设没有至少测试一个volatile字段的处理代码不会造成忙等待循环。它可以删除这样的循环。如果这整个的假设是错误的,你必须使用-dontoptimize选项关闭优化。
        如果一个输入jar和库jar包含同一包中的类,模糊输出jar可能包含类的名字与库jar的重叠。如果库jar之前被混淆,这是最有可能的,因为它将可能含有命名为'a','b'等的类。因此,软件包应该永远不会被拆分为输入jar和库jar。
        当混淆时,ProGuard写出命名为“a.class”,“b.class”等的类文件。如果包中包含了大量的类,ProGuard也可能写出到“aux.class”。不巧的是,Windows拒绝创建这个保留的文件名(在其他几个名字中)。为了避免这些问题,把输出写在一个jar中是更好的。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值