当前位置: 代码迷 >> 综合 >> Java混淆工具ProGuard的最简明使用方法及Warning: can’t find referenced class xxx的解决方法
  详细解决方案

Java混淆工具ProGuard的最简明使用方法及Warning: can’t find referenced class xxx的解决方法

热度:31   发布时间:2023-12-16 07:39:49.0

ProGuard是一个广受欢迎的Java混淆工具,很多Android应用也会使用该工具进行混淆。下面简单总结一下其出现的Warning: 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复杂选项的过程,适合需要在半天内完成任务的朋友借鉴。

  相关解决方案