【发布时间】:2010-11-01 14:37:30
【问题描述】:
我正在使用 Antenna 构建、打包和混淆 j2me 应用程序。 建筑和包装工作正常。
该项目使用已被混淆的第 3 方 jar,但某些接口除外。
在尝试混淆时,我遇到了几个错误,例如:
[wtkobfuscate] Warning: i: can't find referenced class fooPackage.fooClass
Class i 和 fooPackage.fooClass 来自我提到的这个第 3 方 jar。
更新:
这个第 3 方库使用 j2me-xmlrpc.jar。如果我不打包在一起,那么我将无法混淆第 3 方接口和 j2me-xmlrpc.jar。 (而且我不能以这种方式运行应用程序,不知道为什么)
如果我只打包 j2me-xmlrpc.jar 和我的项目类,我会在混淆时收到此错误
[wtkobfuscate] Warning: there were 2 instances of library classes depending on program classes.
更新 2:
我知道这种混淆是可能的,因为在 Netbeans 中我可以使用 Proguard 进行混淆。
由于 Netbeans 内部使用 ANT 进行构建,我尝试将生成的 build.xml 复制到我自己的 build.xml。
对于混淆,Netbeans 使用可在 Netbeans 外部使用的库 org-netbeans-modules-mobility-antext.jar。我将此库导入我的项目并毫无问题地使用它。
但我遇到了与使用天线时相同的错误。
在 Netbeans 中进行混淆会产生很多警告,但仍会生成经过混淆的 jar。
我错过了什么?
【问题讨论】:
-
我使用 jshrink 获得了更好的结果。如果你愿意,我可以发给你测试。可能值得一试
-
@reinier:好的。但是ant文件应该怎么做才不会出现同样的问题呢?
-
而不是在 cmets 中的这个谈话,我将把它作为一个正确的答案;^)
-
嗨,丹尼尔。我建议对 ant 使用 -v 标志(在 netbeans 和天线中)。这会产生大量额外的输出,这可能会提供您的构建与生成的构建之间的差异所在的线索。
标签: java ant java-me obfuscation proguard