ProGuard Version5.2(4.2)Manual-->Limitations
来源:互联网 发布:可视化编程 编辑:程序博客网 时间:2024/04/30 18:01
当使用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中是更好的。
最好的结果是,为了获得一些有用的东西,混淆器的优化算法假设处理的代码不会故意抛出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中是更好的。
0 0
- ProGuard Version5.2(4.2)Manual-->Limitations
- ProGuard Version5.2(4.2)Manual-->Usage
- ProGuard Version5.2(4.1)Manual-->Introduction
- ProGuard Version5.2(2)Results
- ProGuard Version5.2(1)Main
- ProGuard Version5.2(3)FAQ
- proGuard manual--Introduction翻译
- ProGuard manual Usage翻译
- Sprite Kit Manual Movement(2)
- 理解模拟器的限制(Understanding the Emulator's Limitations)
- Siebel Issue: Siebel卸载限制(Limitations for Uninstalling)
- samtools manual(2)
- manual
- proguard.cfg(转载)
- 混淆(Proguard)用法
- ProGuard
- ProGuard
- ProGuard
- 实习笔记4
- C语言中的传值调用
- 源码下载---程序猿七夕告白的必备利器
- Vim复制粘贴与寄存器
- API 简单理解
- ProGuard Version5.2(4.2)Manual-->Limitations
- SDN的两种方式分析
- 我的第一份工作-檀木科技
- headers already sent
- 多线程
- android sqlite 的创建与使用,sqlite自定义框架。
- C++静态库编译
- android之Widget
- mysql分表和表分区详解