Java混淆工具ProGuard的最简明使用方法及Warning: can’t find referenced class xxx的解决方法
2014-01-03 11:22
761 查看
ProGuard是一个广受欢迎的Java混淆工具,很多Android应用也会使用该工具进行混淆。下面简单总结一下其出现的Warning:
can’t find referenced class xxx这类问题的解决方法。
ProGuard最好是通过命令行运行,但是对于只想用一下工具以完成任务的朋友,也许GUI也就够用了。我们将压缩包解压后,在lib目录下双击proguardgui.jar,就可以启动其GUI。然后一步步按照引导来做就行,这方面网上已经有很多教程。需要指出的是,如果是第一次使用的朋友,往往会在进行“Process”之后出现如下面所示的问题:
解决方法也很简单,网上很多日志也说到了,但是大部分是针对命令行方式的。这里介绍一种最简单的方法:在其他选项都设置好后,在Process这一步之前,可以选择“Save Configuration”,保存成ProGuard的配置文件(无所谓文件后缀)。然后针对上面的问题,我们打开刚才保存的配置文件,可以看到类似这样的内容:
要解决刚才这个问题,我们在后面加上:
按照类似的方法将所有的Warning处理掉,然后再用ProGuard将刚才保存的配置文件打开(重启ProGuard之后,选择“Load Configuration”),如果不出意外,就可以生成混淆以后的JAR包或者class文件了。其实,个人感觉ProGuard这个功能挺弱智的。另外,通过直接在配置文件上修改,也免去了大家学习GUI复杂选项的过程,适合需要在半天内完成任务的朋友借鉴。
can’t find referenced class xxx这类问题的解决方法。
ProGuard最好是通过命令行运行,但是对于只想用一下工具以完成任务的朋友,也许GUI也就够用了。我们将压缩包解压后,在lib目录下双击proguardgui.jar,就可以启动其GUI。然后一步步按照引导来做就行,这方面网上已经有很多教程。需要指出的是,如果是第一次使用的朋友,往往会在进行“Process”之后出现如下面所示的问题:
Warning: org.makagiga.commons.crypto.MasterKey: can't find referenced class javax.crypto.KeyGenerator
解决方法也很简单,网上很多日志也说到了,但是大部分是针对命令行方式的。这里介绍一种最简单的方法:在其他选项都设置好后,在Process这一步之前,可以选择“Save Configuration”,保存成ProGuard的配置文件(无所谓文件后缀)。然后针对上面的问题,我们打开刚才保存的配置文件,可以看到类似这样的内容:
-injars 'D:\Projects\makagiga-source-4.8\dist\images.jar' -injars 'D:\Projects\makagiga-source-4.8\dist\makagiga.jar' -outjars 'D:\Projects\makagiga-obsfucated-jar' -libraryjars 'D:\Program Files\Java\jre7\lib\rt.jar'
要解决刚才这个问题,我们在后面加上:
-dontwarn javax.crypto.** -keep class javax.crypto.**
按照类似的方法将所有的Warning处理掉,然后再用ProGuard将刚才保存的配置文件打开(重启ProGuard之后,选择“Load Configuration”),如果不出意外,就可以生成混淆以后的JAR包或者class文件了。其实,个人感觉ProGuard这个功能挺弱智的。另外,通过直接在配置文件上修改,也免去了大家学习GUI复杂选项的过程,适合需要在半天内完成任务的朋友借鉴。
相关文章推荐
- Eclipse打包Android项目时用到proguard.cfg后,出现的Warning:can't find referenced class问题的解决方式
- Eclipse打包Android项目时用到proguard.cfg后,出现的Warning:can't find referenced class问题的解决方案
- Eclipse打包Android项目时用到proguard.cfg后,出现的Warning:can't find referenced class问题的解决方案
- Android代码混淆第三方jar,can't find referenced class的解决
- android代码混淆Warning:okio.DeflaterSink: can't find referenced class
- Eclipse打包Android项目时用到proguard.cfg后,出现的Warning:can't find referenced class问题的解决方案
- Android代码混淆第三方jar,can't find referenced class的解决
- Eclipse打包Android项目时用到proguard.cfg后,出现的Warning:can't find referenced class问题的解决方案
- Eclipse打包Android项目时用到proguard.cfg后,出现的Warning:can't find referenced class问题的解决方案
- Eclipse打包Android混淆代码降低代码可读性时,出现的Warning:can't find referenced class问题的解决方案
- 【android 反编译】Eclipse打包Android项目时用到proguard.cfg后,出现的Warning:can't find referenced class问题的解决方案
- Eclipse打包Android项目时用到proguard.cfg后,出现的Warning:can't find referenced class问题的解决方案
- Android代码混淆第三方jar,can't find referenced class的解决
- Eclipse打包Android项目时用到proguard.cfg后,出现的Warning:can't find referenced class问题的解决方案
- Eclipse打包Android项目时用到proguard.cfg后,出现的Warning:can't find referenced class问题的解决方案
- Android 代码混淆can’t find referenced class问题解决方案
- 在centos中运行java命令时出现Error: Could not find or load main class XXX问题的解决方法
- mac 下 使用 java运行 class 文件 总是提示 “错误: 找不到或无法加载主类”的解决方法
- 使用网上流传的一个数据库连接池在Proxy.newProxyInstance处引起 java.lang.ClassCastException 问题的解决方法
- Java中Could not find the main class.program will exit和java.lang.UnsupportedClassVersionError 的解决方法 .