我正在使用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。
我缺少什么?
答案 0 :(得分:1)
如果对第三方库进行了模糊处理,请在对类进行模糊处理时不要包含该库。而是按照这些步骤
答案 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>