麻烦制造混淆

时间:2009-06-09 19:46:10

标签: java ant java-me obfuscation proguard

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

项目使用的第三方jar已被混淆,除了某些接口。

当试图混淆时,我遇到了几个错误:

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

Class i和fooPackage.fooClass来自我提到的第三方jar。

更新

此第三方库使用j2me-xmlrpc.jar。如果我没有将所有包装在一起,那么我将无法模糊第三方接口和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。

我缺少什么?

3 个答案:

答案 0 :(得分:1)

如果对第三方库进行了模糊处理,请在对类进行模糊处理时不要包含该库。而是按照这些步骤

  1. 独自制作课程(不包括第三方图书馆)
  2. 对步骤1中获得的罐进行模糊处理
  3. 解开在步骤2中获得的混淆jar和某个临时文件夹中的第三方库
  4. Jar所有不受干扰的课程
  5. 再次验证并打包它们

答案 1 :(得分:1)

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

答案 2 :(得分: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>