proguard.jar是proguard的主程序,proguardgui.jar为图形界面,用这个可以很方便的生成proguard的配置文件,Retrace为反追踪。
Proguard的具体功能和效果就不多 说,网上有很多介绍,主要说下图形界面的各项操作,通过图形界面生成Proguard混淆前的配置文件。
java -jar proguardgui.jar [-nosplash][configuration_file]
-nosplash参数:运行ProGuard时不显示开头动画。
configuration_file: ProGuard运行时加载的配置文件(如果你已经有一个通用的Proguard的配置文件,在这里调用,再针对项目做些修改)。
Input/Output标签:
这里选择需要混淆的代码目录和输出混淆后代码的目录以及项目所有需要的lib包。需混淆的代码可以已jar、war、ear、zip等格式打包,或者直接指定代码目录(此时注意要指定到代码的最上成package所在目录)。
“Add Input”添加需要混淆的代码。
“Add Output”指定输出路径和格式
“Edit”编辑设定
“Filter”过滤不需要的文件和包
“Remove”删除不需要的文件和包
“Move Up”“Move Down”将设定移动显示位置
“Move to libraries”移动到项目所需要的lib中
“Move to program”移动到项目中
下部的“Add”为添加项目所需要的lib包,如果是web项目把j2ee包也添加到lib中。
Shrinking、Optimization标签:
Proguard可以压缩和优化代码,将一些无用 类、字段和方法删除和优化代码。这里就不多说,
主要解释下Obfuscation标签。
“obfuscate”选上混淆机制才可用。
“Print mapping”输出映射文件,混淆前后的类名、方法名,属性名的对照。
“Apply mapping”应用映射文件,可以指定混淆后的类名、方法名,属性名。
“Obfuscation dictionary”混淆字典,指定混淆使用的字符。
“Overlord aggressively”优先重载
“Use unique class member names”使用唯一的类成员名称
“Default package”默认包名
“Use mixed-case class names”使用混合的类名,这样不同的类混淆后将使用同一类名。
“Keep attributes”指定需要保留属性的资源文件
“Rename SourceFile attribute”重命名资源文件属性
“Keep names”保留的名称
“Native method names”本地方法名称
“.class method names”指定需要保存方法名称的类
“Keep additional class names and class member names”保留(不需要混淆)的类名和成员名
点击“Add”或“Edit”编辑需要保留的类
“Comments”文本域可以对当前条目加上可选的注释。这个注释将标识列表中的这个条目并作为注释出现在配置文件中
“Keep classes and class members”保留类名和成员名
“Keep class members only”只保留成员名
“Keep classes and class members, if members are present”
“Access”访问修饰符,指定需要保留类的修饰符
“Class”指定类名,可以用“*”通配符进行指定比如“*Number*”
“Extends/implements class”继承和实现的类,此处需要指定类的完整路径,包括包名。
“Class members”要保留的成员
“Add field”添加需要保留的属性,通过指定修饰符,类型和名称来配置。
“Add method”添 加需要保留的属方法,通过指定修饰符,返回类型和名称来配置
Information(参数信息)标签:
“Consistency and correctness”连贯性和正确性
“Print seeds”打印日志
“verbose”详细信息
“Warn about missing libraries”缺少类库时发出警告
“Ignore warnings about missing libraries”忽略缺少类库的警告,有时缺少某些类库也可以混淆,Proguard提倡先消除所有的警告,然后混淆。
“Skip non-public library classes”跳过所有非公有类,加快加载lib速度。
“Skip non-public library class members”跳过所有非共有方法,加快解析lib速度
“Why are u keeping”
Process标签:
“View configuration”查看配置
“Save configuration”保存配置
Retrace(反追踪)标签
简单说下keep参数,这个是设定要保留不参与混淆的类和成员。
keepclass_specification保留指定的类和成员名称和内容
keepclassmembersclass_specification只保留指定的类成员名称和内容
keepclasseswithmembersclass_specification
keepnamesclass_specification保留类和成员名称,混淆内容
keepclassmembernamesclass_specification只保留成员名称,混淆内容
keepclasseswithmembernames class_specification
在使用过程中,我比较 喜欢建立几个抽象类,Keep,KeepClassMembers,
KeepClassesWithMembers,KeepNames,KeepClassMemberNames,
KeepClassesWithMemberNames,把需要混淆的核心代码单独打包,需要保留特定属性的类分别继承各个方法,这样设定混淆配置时就比较容易。
相关推荐
在Android开发中,ProGuard是默认集成在构建系统中的,可以通过Gradle插件配置混淆参数。对于大型项目,合理的混淆策略可以显著减小APK的大小,同时提高应用的安全性。然而,混淆也可能导致意外的错误,因此在发布前...
此外,ProGuard支持通过命令行参数进行自定义设置,例如: ```bash java -jar proguard.jar @my_config.pro -injars my_input.jar -outjars my_output.jar ``` 在Android开发中,ProGuard通常与Gradle构建系统集成...
4、proguard常见参数标签的用法在《proguard标签的用法.pdf》 5、混淆只是 proguard 功能之一,其它还有压缩、优化等 6、proguard混淆首先得根据自己工程具体情况 来决定,哪些类需要混淆,哪些 类不能混淆,对包名...
**ProGuard 界面混淆版详解** ProGuard是一款强大的Java字节码混淆、优化、预校验和缩小工具。在Android开发中,它通常用于保护应用程序的源代码,避免反编译后暴露敏感信息,同时也能减小程序体积,提高运行效率。...
例如,使用"-optimizations"参数可以指定要执行的优化步骤。 压缩功能则是在混淆和优化后,进一步压缩已处理过的字节码,去除不必要的数据和元数据,以减小文件大小。这一步骤通常与优化结合使用,通过"-shrink...
**一、Proguard 4.7简介** Proguard 4.7是该混淆工具的一个版本,它提供了许多高级功能,如类和方法的混淆、优化、预校验以及代码的压缩。混淆的主要目的是通过重命名类和方法,使代码变得难以理解,从而增加破解的...
ProGuard是一款免费的Java类文件的压缩、优化、混肴器。它删除没有用的类,字段,方法与属性。使字节码最大程度地优化,使用简短且无意义的名字来重命名类、字段和方法,截至2016-11-28号,5.3.1是最新版本 新的...
**参数简介** - `-include {filename}` 从指定的文件中加载额外的配置参数。 - `-basedirectory {directoryname}` 设置基础目录,以便解析相对的档案名称。 - `-injars {class_path}` 指定待处理的输入jar、war、ear...
- 使用 `-printmapping` 参数可以生成映射文件,便于调试混淆后的问题。 - `-dontwarn` 和 `-ignorewarnings` 可以用来忽略特定的警告,但不应滥用,因为这可能会掩盖潜在问题。 5. **R8混淆:** 从Android ...
java代码很容易被反编译,可通过混淆技术来保护源码,此处我们应用开源项目proguard来进行混淆。操作使用详见:http://blog.csdn.net/odian1/article/details/8282799
删除未使用的方法参数 像push/pop简化一样的各种各样的peephole优化 在可能的情况下为类添加static和final修饰符 在可能的情况下为方法添加private, static和final修饰符 在可能的情况下使get/set方法成为...
例如,可以使用`-renamesourcefileattribute`参数来更改源文件名的显示,`-keepattributes`来保留特定的属性。 **四、与Android Studio的集成** 在Android Studio中,ProGuard已经内置,并默认开启混淆功能。...
本实例使用的是把web项目中的源码(src)所有文件打包成jar文件,使用proguard混淆后再把jar文件以及jar解压后的混淆class类文件替换原war项目的相应位置即可。 混淆过程中需要使用keep参数来保持原有一些属性、注解...
ProGuard 的主要参数包括: - `-include {filename}`:从指定文件中读取配置参数。 - `-basedirectory {directoryname}`:设定基础目录,用于解析相对路径的档案名称。 - `-injars {class_path}`:指定要处理的输入...
同时,也可以通过命令行参数直接调用`proguard.jar`执行混淆操作。 在Android开发中,ProGuard通常在构建过程的最后阶段集成,与Gradle或Android Studio配合使用。开发者可以在`build.gradle`文件中配置混淆规则,...
4. **日志和调试**:混淆后,调试会变得更加困难,因此可以在配置文件中开启-keepparametersnames和-keepattributes选项,以保留参数名和某些属性,便于问题排查。 5. **反混淆**:虽然ProGuard使代码难以阅读,但...
ProGuard 4.4 的安装通常包括解压下载的压缩包,将其放置在开发环境的适当目录下,并在项目的构建脚本(如 Gradle 或 Ant)中配置相应的参数。在 Android Studio 中,ProGuard 配置通常位于 `app/proguard-rules.pro...
对如何使用proguard以及配置文件参数都进行了详细的说明
ProGuard 是 Android 开发中常用的一个工具,用于对 APK 进行代码混淆、优化、压缩和预校验,以提高应用程序的安全性和减少体积。在本文中,我们将详细探讨 ProGuard 的一些基本语法和注意事项。 首先,`-library...
2. 执行ProGuard配置:解压ProGuard工具包后,执行bin目录下的proguardgui.bat,通过图形界面设置输入输出参数。输入参数指明需要混淆的jar包,输出参数则是混淆后生成的jar包。在Libraryjars中添加支持库,即那些...