我有一个混淆程序的问题。我有 2 个文件:
- 客户端.jar
- 服务器.jar
当我使用 Proguard 缩小它们时,效果很好。但是,如果我选中“优化”,则会出现 NullPointerExceptions
,如果我还选中“obfuscate”,则在必须发送对象时,我的 client.jar 中会出现 InternalError使用 writeObject()
方法发送到服务器。
请你帮我配置混淆器(我真的不知道这个工具)或者告诉我为什么会出现这些错误。提前致谢。
PS:我是法国人,如果我的解释有误,我深表歉意。
我尝试使用 .bat 启动我的 client.jar 以查看我是否可以看到发生了什么,这就是当客户端必须将对象发送到服务器时我得到的错误:
最佳答案
这个问题的细节很少,所以我的回答会很笼统,但我希望它能让你朝着正确的方向前进。
如果您对调用方法进行任何反射,则需要将keep
选项添加到您的配置文件中。您需要保留
所有通过反射调用的方法(参见手册中的Keep Options)。
对于序列化,有一个recipe in the manual这应该有所帮助:
-keepclassmembers,allowobfuscation class * implements java.io.Serializable {
static final long serialVersionUID;
private static final java.io.ObjectStreamField[] serialPersistentFields;
!static !transient <fields>;
private void writeObject(java.io.ObjectOutputStream);
private void readObject(java.io.ObjectInputStream);
java.lang.Object writeReplace();
java.lang.Object readResolve();
}
增量混淆选项将使混淆在客户端和服务器之间保持一致; see this section Proguard 手册。
希望对您有所帮助。
关于java - 混淆代码不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9754738/