精品为您呈现,快乐和您分享!
收藏本站
类型:编程开发 语言:英文
大小:2.8M 更新时间:2017-09-22
推荐指数:
应用简介
proguard是一个java代码混淆工具并提供图形用户界面。它还可以与Ant 或J2ME Wireless Toolkit 结合使用。通过ProGuard获得的更精简的jar文件意味着只需要更少的存储空间。混淆链接将使用无意义的短变量来重命名类、变量和方法。这些步骤使代码更精简、更高效,并且更难进行逆向工程。
proguard是一个java代码混淆工具并提供图形用户界面。它还可以与Ant 或J2ME Wireless Toolkit 结合使用。通过ProGuard获得的更精简的jar文件意味着只需要更少的存储空间。混淆链接将使用无意义的短变量来重命名类、变量和方法。这些步骤使代码更精简、更高效,并且更难进行逆向工程。
特征
收缩:检测并删除代码中无用的类、字段、方法和属性。
优化:优化字节码,删除无用指令。
混淆:使用简短且无意义的名称(例如a、b、c、d)重命名类、字段和方法。
预检查(Preveirfy):对Java平台上处理后的代码进行预检查,确保加载的类文件可执行。
指示
1.下载proguard
2.准备好你的jar包,我这里以test.jar为例。
3.解压proguard并执行bin目录下的proguardgui.bat。
4、运行如图,点击左侧“输入/输出”菜单
5.点击右侧“添加输入”添加我们要混合的jar包,test.jar
点击右侧的“添加输出”,填写我们要输出的jar包(随便命名)。这里我写的是test_out.jar。
注意输出的jar包,需要手动填写。
6. 添加支持库,即下面的“Library jars、wars、ears.”框。点击右侧的“添加”。
说明一下,最好把你的myeclipse中的java项目中的库的所有jar包都复制到一个目录下,然后在这里添加这些jar包。 myeclipse的环境一般都支持jar包。
7. 完成上述步骤后,应该如下图4 所示,就差不多完成了。
8、点击“收缩”,设置如图5。(可以根据需要设置,这里只是我的配置)
9、点击“混淆”,进行设置,如图6。(可以根据需要设置,这里只是我的配置)
10、点击“优化”,进行设置如图7。(可以根据需要设置,这里只是我的配置)
11. 单击“处理”,然后单击“保存配置”。在弹出的对话框中输入要保存的配置文件的名称(我这里是test.pro),最后点击“保存”。如图8所示
至少部分图形设置已经完成。
12. 最后,添加要保留的类和方法。
使用编辑器编辑刚刚保存的“test.pro”。您可以使用记事本做任何事情。打开后,应该如下所示。
-injars test.jar
-outjars test_out.jar
-libraryjars 'C:\Program Files (x86)\Java\jdk1.6.0_10\jre\lib\rt.jar'
-libraryjars lib\ant.jar
-libraryjars lib\aopalliance-1.0.jar
-libraryjars lib\commons-dbcp-1.4.jar
-libraryjars lib\commons-fileupload-1.2.1.jar
-libraryjars lib\commons-io-1.4.jar
.设置支持库包,省略
-不要跳过非公共图书馆班级成员
-不收缩
-使用唯一的类成员名称
-保留包名
-keepattributes 异常、内部类、签名、已弃用、源文件、行号表、本地变量*表、*注释*、合成、封闭方法
-保留参数名称
-忽略警告
.我们在这里添加需要维护的类和方法,写法如下
-保持类org.bl.soa.components.constant.* {
公共领域;
公共方法;
*** 放*(***);
*** 得到*();
}
-保留类org.bl.hibernate.* {
公共领域;
公共方法;
*** 放*(***);
*** 得到*();
}
.继续添加其他你想保留的类和方法,能写多少就写多少。我在test.jar 中添加了所有类。
.后面还有一些自动生成的配置,不用管。
13.写入后,保存。
重新打开progrard,执行bin目录下的proguardgui.bat。
点击第一个选项“Proguard”,然后点击“加载配置”,选择我们刚刚保存的“test.pro”进行加载。
14.开始混合代码,点击右侧的“process”,然后点击“process!”,如下图
15、等待处理完成后,输出“test_out.jar”即为混合jar包。可以使用xjad反向编辑看看效果。
16.如果处理过程中出现问题,通常会有提示。大多数通常与缺少相关类有关。如果缺少相关类,只需添加步骤7中图中缺少的支持包即可。
防范措施
1、注意版本。如果项目不需要,最好使用最新的稳定版本。这将减少出错的机会,并且学习曲线将显着缩短。
2. 最好使用与源代码相同编译版本的jvm来启动proguardgui.jar。不要直接用默认的jvm打开。
3、注意proguaardgui启动后默认加载的libraryjar中包含的rt.jar。它的版本和你使用的jvm版本一致。
4、使用1.4 jvm开启proguard时,注意不要勾选optimization选项卡中的keep enumerations选项,因为勾选该选项会导致配置文件中出现java.lang.Enum这个类。
仅在1.5环境中可用。错误信息如下:
[proguard] 注意:配置引用了未知类“java.lang.Enum”
[proguard] 注意:有1 个对未知类的引用。
[proguard] 你应该检查你的配置是否有拼写错误。
5.嵌入ant脚本时,通常会有这样一段
目标名称='proguard' 取决于='init'
taskdef Resource='proguard/ant/task.properties' classpath='${lib.dir}/proguard/proguard.jar' /
proguard配置='${src.dir}/config.pro'/
/目标
task.properties 位于proguard.jar 中并被保留。 config.pro 是proguard 配置文件。最好使用proguardgui.jar来创建,然后根据自己的需要手动修改。
常见问题
1. 转换为dalvik 格式失败,错误1
网上主要有以下几种解决方案:
1、编辑eclipse项目下的.classpath文件,修改为
classpathentry kind='con' path='com.android.ide.eclipse.adt.ANDROID_FRAMEWORK'/
2、下载最新版本的proguard,替换android sdk下的tools\proguard(我就是用这个方法解决的,我的android sdk是r20,自带的proguard是4.7,我更新到4.8。)
3. 替换调用%java_exe% -jar '%PROGUARD_HOME%'\lib\proguard.jar %times;在tools\proguard\bin\proguard.bat 文件中包含:
call %java_exe% -jar '%PROGUARD_HOME%'\lib\proguard.jar %1 %2 %3 %4 %5 %6 %7 %8 %9 (我也尝试过这个方法,但它导致了另一个错误'Expecting类路径分隔符';' 在参数号7 中的. 之前')
热门攻略
热门资讯