1

我试图用 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.

谢谢。

4

1 回答 1

1

混淆可以破坏东西。如果没有固定的示例代码,很难准确地说出可能出了什么问题。一个可能出错的例子是,如果您在代码中按名称加载一个类 - 混淆的类将具有不同的名称,因此不会被发现。

您提到的消息可能表明存在问题- 您必须在您的路径上多次使用这些类。您提到的那个课程是否与您遇到问题的连接相关?仔细查看正在使用的 jar,并确保在您的应用程序中包含正确(和最少)的类集。CLDC中的 ByteArrayOutputStream与桌面JDK中的不同。

于 2010-05-20T20:59:50.687 回答