我正在尝试用proguard混淆一个Java MIDlet。它在PC上运行正常,然而,当我在手机上运行它时,程序打开,连接到服务器,然后冻结。如果我禁用了模糊处理,它会在手机上再次正常运行。我已经尝试了应用程序的所有混淆级别(NetBeans中的7、8和9),但似乎没有一个能正常工作,如果没有混淆,我无法将此应用程序发布为商业用途。此外,编译器还会抛出一些警告:
Note: duplicate definition of library class [java.io.ByteArrayOutputStream]
Note: there were 14 duplicate class definitions.但我不知道这是否真的是问题所在。有人知道哪里出了问题吗?下面列出了混淆器参数:
Obfuscator Arguments (7):
-dontusemixedcaseclassnames
-default package ''
-keep public class ** {
public *;
}
Obfuscator Arguments (8): same as (7) plus -overloadaggressively.
Obfuscator Arguments (9): same as (8) but
-keep public class ** extends javax.microedition.midlet.MIDlet {
public *;
}
instead.谢谢。
发布于 2010-05-21 04:59:51
混淆可以破坏一些东西。如果没有可移植的示例代码,就很难准确地说出可能的错误所在。一个可能出错的例子是,如果您在代码中通过名称加载一个类-混淆后的类将具有不同的名称,因此将无法找到。
你提到的消息是could be indicative of the problem --你必须在你的路径中不止一次拥有这些类。你提到的那个类与你遇到问题的连接有关吗?仔细查看正在使用的jars,并确保在您的应用程序中包含了正确的(且最小的)类集。CLDC中的ByteArrayOutputStream与桌面JDK中的不同。
https://stackoverflow.com/questions/2876487
复制相似问题