1

我正在使用 Antenna 来构建、打包和混淆一个 j2me 应用程序。建筑和包装工作正常。

该项目使用除了某些接口之外已经被混淆的第 3 方 jar。

尝试混淆时,我遇到了几个错误,例如:

[wtkobfuscate] Warning: i: can't find referenced class fooPackage.fooClass

i 类和 fooPackage.fooClass 来自我提到的这个 3rd 方 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。

我错过了什么?

4

3 回答 3

1

如果第 3 方库被混淆,请不要在混淆类时包含该库。而是按照这些步骤

  1. 单独安装你的课程(不包括 3rd 方库)
  2. 混淆第1步得到的jar
  3. 解压步骤 2 中获得的混淆 jar 和某个临时文件夹中的 3rd 方库
  4. 将所有 unjared 类 jar
  5. 再次预验证并打包
于 2009-06-10T08:11:05.273 回答
1

我使用的是 Proguard 4.3。降级到 Proguard 4.2 解决了这个问题。

于 2009-10-08T22:50:20.687 回答
0

尝试使用 jshrink。与proguard相比,我得到了更好的结果:

                    <java jar="obfuscator\jshrink.exe" fork="true">
                        <arg value="..\${projectdir}\${projectname}.jar"/>
                        <arg value="-classpath"/>
                        <arg pathref="project.class.path"/>
                        <arg value="-keep"/>
                        <arg value="${midletclass}"/>
                        <arg value="-o"/>
                        <arg value="..\${projectdir}\${projectname}.jar"/>
                    </java>
于 2009-07-21T07:12:03.387 回答