proguard使用指南
ProGuard使用文档

ProGuard使⽤⽂档介绍是⼀个对于Java字节码的免费的压缩器,优化器,混淆器和审核器;l 它检测并删除未使⽤的类,字段,⽅法和属性。
l 它优化字节码并删除未使⽤的指令。
l 它重命名其余类、字段和⽅法使⽤短毫⽆意义的名字。
官⽅⽂档使⽤⽂档常见问题⽂档:了解通配符:指定类时,可以使⽤如下通配符class 关键字表⽰任意的类或接⼝interface 关键字只表⽰接⼝enum 关键字表⽰枚举类interface 和 enum 关键字可以加上!表⽰除...之外?匹配任意字符,不包括包分隔符匹配任意多个字符,不包括包分隔符** 匹配任意多个字符,包括包分隔符为了向后兼容,* 也可以表⽰任意的类,包括包分隔符extends 和 implements 关键字是等效的,表⽰继承或实现 A 的类,但不包括 A 本⾝@ 关键字⽤于表⽰使⽤指定注解修饰的类和类成员指定类的成员时,可以指定如下通配符<init> 匹配任意的构造器<fileds> 匹配任意的成员变量<methods> 匹配任意的⽅法匹配任意的成员变量或⽅法上述通配符不含返回类型,只有<init>有参数列表除了使⽤上述全能通配符以外,同样可以使⽤常⽤表达式,此时可以使⽤?和 * 通配符指定修饰符的类型时,可以使⽤如下通配符% 匹配基本类型?匹配任⼀字符匹配任意多个字符,不含包分隔符** 匹配任意多个字符,包含包分隔符*** 匹配任意类型(基本或⾮基本,数组或⾮数组)... 匹配任意数量、任意类型的参数? * 和 ** 不会匹配基本类型可以使⽤权限控制符帮助匹配(例如 public static)参考来源:使⽤ ProGuard GUI输⼊输出部分需要确保⽬录结构为jar⽬录结构:错误的⽬录结构:如果⽬录结构是下⾯这种类web⽬录结构,混淆器⽆法正确混淆,process会提⽰⼤量警告 … unexpectedly contains class …或者根据官⽅⽂档上的解决⽅法,将打包的jar包放⼊lib⽬录,执⾏混淆(这个没有试验)为了得到这种⽬录结构,可将项⽬由eclipse打开,仅对src/main/java项⽬下的源代码⽂件导出为jar⽂件将该jar包作为输⼊,add Input依赖库需要添加jre⽬录下的所有jar和项⽬所有的依赖项 lib⽬录下的jar包输出名字⾃定义依赖库除了jre下的jar包,其他依赖根据项⽬使⽤情况加⼊,圈起来的两个是关键jar包点击Next----------------------------------------------------------------------------------------------------------------压缩部分不勾选,表⽰不压缩Keep 输⼊框保留某些类,成员不被混淆,(不明⽩它这个为什么放在压缩部分)在配置⽂件中的形式:-keep public class cn.xxx.xxx.controller.* {<fields>;<methods>;}#我的model⽬录结构为 model/po , model/vo ,所以为 model.*.*-keep public class cn.xxx.xxx.model.*.* {<fields>;<methods>;}主启动类:-keep class cn.xxx.xxx.XXXApplication {*** main(...);}该部分功能:删除没有使⽤的的类或成员注意:保留启动类点击next------------------------------------------------------------------------------------------------------------------混淆部分该部分功能:对代码进⾏模糊处理,混淆类名、⽅法名和变量名(使⽤单字母a,b,c,d,e,f,g…)介绍⼀下勾选所代表的意思:Obfuscate :启⽤混淆功能Use unique class member name: 使⽤统⼀的类名称Keep package names:保留包名Keep attarbute:保留的属性、异常、注解等Keep paremeter name:保留⽅法参数名Keep native: 保留本地⽅法-----------------------------------------------------------------------------------------------------------------------------优化部分不勾选,表⽰不优化Allow access modification: 允许修改该部分功能:它内联并合并类和类成员,并在字节码级别优化所有⽅法。
androidproguard-rules使用规则

androidproguard-rules使用规则Android ProGuard是一种代码混淆和优化工具,用于保护Android 应用程序的代码免受反编译和代码泄漏的风险,同时还可以减小应用程序的体积,提高应用程序在运行时的性能。
ProGuard支持使用配置文件来指定混淆规则,其中最常用的是proguard-rules.pro文件。
在这个文件中,可以定义一系列的规则来告诉ProGuard如何处理代码。
下面是一些常见的ProGuard规则使用规则:`````````public *;```3. 移除无用的类和类成员:可以使用`-dontwarn`和`-dontnote`关键字来禁止打印无用类和类成员的警告和提示信息。
例如,为了移除所有无用的类和类成员,可以添加如下规则:````````````5. 是否启用优化选项:可以使用`-optimizations`关键字来启用或禁用优化选项。
例如,为了禁用优化选项,可以添加如下规则:```-optimizations !optimization1,!optimization2,...```这些只是ProGuard规则的一小部分示例,根据具体的应用程序需求,可能会有其他规则需要使用。
在编写ProGuard规则时,需要注意以下几点:-尽量保留引用库的规则:如果应用程序使用了第三方库,需要保留相关库的类和类成员,以防止由于混淆导致库无法正常工作。
- 调试期间禁用ProGuard:在开发和调试期间,应禁用ProGuard,以便能够更方便地进行调试和排除代码问题。
-测试混淆后的代码:在将应用程序发布之前,应对混淆后的代码进行全面的测试,以确保混淆不会对应用程序的功能和性能产生不良影响。
- 更新ProGuard版本:随着时间的推移,可能会发布新的ProGuard版本,其中可能包含更好的混淆和优化算法。
因此,建议及时更新ProGuard版本,以获取更好的保护和优化效果。
关于ProGuard混淆工具的使用

关于ProGuard混淆工具的使用目标:jar包B包含提供给开发者的接口,jar包C包含内部实现,B调用C中的方法。
要求B中接口类被保留,B中其他方法以及C中全部内容被混淆。
需保证混淆后的jar包可以被Android 工程正确导入并且功能实现正确。
现阶段尚不考虑使用proguard的压缩和优化功能。
因为工程结构复杂,上述两个功能有可能导致混淆后的jar包不可用。
实验步骤准备:创建一个工程ProjectC。
其中的一个类ClassC包含一个方法返回一个由构造函数获取的字符串,将ProjectC打包。
创建一个工程ProjectB,并且引入ProjectC.jar作为库。
ProjectB中的类ClassB包含一个方法,该方法通过实例化ClassC并调用该实例的方法返回一个字符串。
最后建立一个Android工程,将打包后的ProjectB作为库导入。
在该工程的MainActivity中调用ProjectB中的方法获得字符串,并将字符串显示在屏幕上。
步骤1:将Android工程所生成apk混淆(IntelliJ下):1.将ProjectB.jar 和ProjectC.jar放置在libs文件夹下并且正确引用。
2.注释掉project.properties文件中的“proguard.config=${sdk.dir}/tools/proguard/proguard-android.txt:proguard-project.txt”一行。
3.生成带签名的apk并且勾选:Run ProGuard一项。
结果:发现将apk反编译后,工程中所有的类和方法已被混淆。
安装apk后功能显示正常。
步骤2:使用proguard默认配置将ProjectB混淆,并使用-libraryjars将ProjectC配置成为混淆后ProjectB_after.jar的库。
结果:发现Android工程只能使用ProjectB中被混淆后的类名及方法。
proguard 简书 idea (2)

proguard 简书 idea引言概述:Proguard是一个用于代码混淆和优化的工具,它可以帮助开发者保护代码的安全性,并减小应用的体积。
在Idea集成开发环境中,Proguard可以通过简书插件来使用,使得代码混淆和优化变得更加简单高效。
正文内容:1. Proguard的作用1.1 代码混淆1.1.1 去除无用代码1.1.2 重命名类、方法和变量1.1.3 删除调试信息1.2 代码优化1.2.1 删除未使用的类、方法和变量1.2.2 优化字节码1.2.3 合并重复的代码2. Proguard在Idea中的使用2.1 安装Proguard插件2.1.1 打开Idea的插件市场2.1.2 搜索并安装Proguard插件2.2 配置Proguard2.2.1 打开项目的Proguard配置文件2.2.2 配置需要混淆的代码和优化选项2.3 运行Proguard2.3.1 在Idea中选择运行Proguard2.3.2 等待混淆和优化完成3. Proguard的注意事项3.1 配置文件的编写3.1.1 配置要保留的类和方法3.1.2 配置要保留的资源文件3.2 混淆后的代码调试3.2.1 配置混淆映射文件3.2.2 使用映射文件还原混淆后的代码3.3 混淆带来的问题3.3.1 反射调用的问题3.3.2 第三方库的兼容性问题总结:在开发过程中,使用Proguard对代码进行混淆和优化是一个非常重要的步骤。
通过对代码进行混淆,可以有效保护代码的安全性,防止被反编译和逆向工程。
同时,代码优化可以减小应用的体积,提升应用的性能。
在Idea中使用Proguard插件,可以简化混淆和优化的过程,提高开发效率。
但是在使用Proguard时,需要注意配置文件的编写,以及混淆后可能出现的问题,如反射调用和第三方库的兼容性。
通过合理的使用Proguard,开发者可以更好地保护代码的安全性和提升应用的性能。
proguard -keep 用法 示例

proguard -keep 用法示例ProGuard是一个用于Java程序的Java字节码优化器、混淆器和预编译器。
它可以帮助开发人员将Java代码进行优化、减小代码体积和提高程序的运行效率。
在实际使用中,通过ProGuard的keep指令可以精确地控制哪些类、方法和字段需要被保留,而不被优化、混淆或移除。
这篇文章将详细介绍ProGuard keep指令的用法,并给出一些示例说明。
一、ProGuard keep指令简介ProGuard的keep指令是一种配置选项,用于告诉ProGuard保留哪些类、方法和字段。
通过keep指令,开发人员可以在代码优化过程中指示ProGuard不要对特定的代码进行优化、混淆或移除。
keep指令的语法格式如下:keep [ modifiers ] [ wildcard_specs ]其中,modifiers是可选的修饰符,可以用于限制keep指令的作用范围,如public、private、abstract等。
wildcard_specs是通配符表达式,用于指定需要保留的类、方法或字段。
二、使用通配符通配符是ProGuard keep指令中非常重要的部分,它可以指定需要保留的类、方法和字段的模式。
在通配符中,可以使用*表示任意数量的任意字符,使用表示任意数量的任意字符和分隔符。
下面是一些常用的通配符示例:1. 保留指定类:keep com.example.MyClass2. 保留指定包下的所有类:keep com.example.3. 保留指定类及其内部类:keep com.example.MyClass*4. 保留指定类及其子类:keep com.example.MyClass extends com.example.MyBaseClass5. 保留指定类的指定方法:keep class com.example.MyClass {void myMethod();}6. 保留指定类的指定返回类型和参数类型的方法:keep class com.example.MyClass {int myMethod(ng.String);}7. 保留指定类的指定字段:keep class com.example.MyClass {int myField;}8. 保留指定注解类型:keepattributes *Annotation*****************.MyAnnotationinterface*三、保留类和类成员除了使用通配符,ProGuard还提供了更精确的方式来保留指定的类和类成员。
proguard用法

proguard用法ProGuard是一个用于Java字节码的代码优化器和混淆器,可以帮助开发者在保持应用程序功能完整的同时,减少应用程序的大小,并提高应用程序的运行效率和安全性。
在本文中,我们将探讨ProGuard的用法,并提供一些相关参考内容,帮助开发者更好地使用ProGuard来优化和保护他们的Java应用程序。
ProGuard的基本用法非常简单,只需执行以下步骤即可:1. 下载并安装ProGuard:可以从ProGuard的官方网站上下载最新的ProGuard版本,并将其解压到一个本地目录中。
2. 创建一个ProGuard配置文件:可以通过手动创建一个文本文件,并命名为`proguard.cfg`,也可以使用ProGuard自带的GUI进行配置文件的生成。
配置文件是用于定义ProGuard的处理规则的,它会告诉ProGuard哪些类、方法和字段需要被保留,哪些可以被优化和混淆。
以下是一个示例配置文件的内容:```-injars input.jar-outjars output.jar-libraryjars /path/to/android.jar-dontwarn-keep public class com.example.MyClass {public static void main(ng.String[]);}-optimizationpasses 5```3. 运行ProGuard:可以使用命令行界面或脚本来运行ProGuard。
在命令行界面中,使用以下命令运行ProGuard:```java-jar/path/to/*************************```其中`/path/to/proguard.jar`是ProGuard的路径,`proguard.cfg`是上一步所创建的配置文件的路径。
在运行ProGuard之后,它会根据配置文件中的规则对应用程序进行优化和混淆,并生成一个新的Jar文件。
使用ProGuard对Android应用进行代码混淆
使用ProGuard对Android应用进行代码混淆代码混淆是一种常用的安全措施,可以对Android应用程序的代码进行加密和优化,以提高应用的安全性和性能。
ProGuard是一款广泛使用的代码混淆工具,它可以对Java代码进行压缩、优化和混淆,从而减小应用的包大小,提高应用的运行效率,并增加反编译的难度。
本文将介绍如何使用ProGuard对Android应用进行代码混淆的步骤和注意事项。
一、什么是代码混淆代码混淆是指通过对代码进行重命名、去除无用代码、优化代码结构等方式,使得源代码在保持功能不变的前提下,增加阅读和理解的难度,从而达到保护应用程序代码的目的。
代码混淆可以减少应用程序的被逆向工程的风险,提高应用的安全性。
二、ProGuard的安装和配置1. 下载ProGuard首先,需要从官方网站下载ProGuard的压缩包,解压后可以得到proguard.jar文件。
2. 配置ProGuard在Android Studio项目的app目录下创建一个proguard-rules.pro文件(如果已存在,则进行修改),用于配置ProGuard的规则。
在proguard-rules.pro文件中,可以通过添加一些规则来指定哪些类、方法、字段需要被保留,哪些可以被混淆、优化或删除。
例如:```-keep public class com.example.MyClass{public *;}```上述规则指定了保持com.example.MyClass类及其所有公共成员不被混淆。
三、配置Android Gradle插件为了在构建过程中自动使用ProGuard工具进行代码混淆,需要在项目的build.gradle文件中进行配置。
在android块下添加以下代码:```buildTypes{release{minifyEnabled trueproguardFiles getDefaultProguardFile('proguard-android-optimize.txt'), 'proguard-rules.pro'}}```上述代码表示在release构建类型中开启代码混淆,并指定了默认的ProGuard文件和自定义的proguard-rules.pro文件。
proguard使用说明手册
1.准备:为了便于混淆代码,我们把所要混淆的jar包、混淆工具proguard.jar和配置文件放
在同一文件加下(当然所需库jar也可以放在同一文件加下,也可以不放,这里我们写绝对路径):示例图如下
我们把库jar包放在了如下图所示的目录下
部分jar包示例
2.进入相应的目录下
3.键入以下命令,并按enter键
4.如下图所示,提示成功
并根据配置,生成了日志文件
配置文件部分截图如下:
以上为基本操作步骤,当然你也可以用proguard的ui界面进行相应配置后,生成混淆jar 包
不做详细解释.
异常情况:
1.库jar包引用不完全--例如,我们项目用到了spring的注解,我们不引入
包,异常信息如下。
Android proguard用法详解
一.Android ProGuard基本用法ProGuard简介ProGuard是一个SourceForge上非常知名的开源项目。
官网网址是:/。
Java的字节码一般是非常容易反编译的。
为了很好的保护Java源代码,我们往往会对编译好的class文件进行混淆处理。
ProGuard的主要作用就是混淆。
当然它还能对字节码进行缩减体积、优化等,但那些对于我们来说都算是次要的功能。
引用ProGuard官方的一段话来介绍就是:ProGuard is a free Java class file shrinker, optimizer, obfuscator, and preverifier. It detects and removes unused classes, fields, methods, and attributes. It optimizes bytecode and removes unused instructions. It renames the remaining classes, fields, and methods using short meaningless names. Finally, it preverifies the processed code for Java 6 or for Java Micro Edition.Android Eclipse开发环境与ProGuard在Android 2.3以前,混淆Android代码只能手动添加proguard来实现代码混淆,非常不方便。
而2.3以后,Google已经将这个工具加入到了SDK的工具集里。
具体路径:SDK\tools\proguard。
当创建一个新的Android工程时,在工程目录的根路径下,会出现一个proguard的配置文件proguard.cfg。
也就是说,我们可以通过简单的配置,在我们的elipse 工程中直接使用ProGuard混淆Android工程。
proguard maven 使用 语法
proguard maven 使用语法(实用版)目录1.Proguard 简介2.Maven 简介3.Proguard 与 Maven 的结合4.Proguard Maven 的使用语法5.实际应用示例正文1.Proguard 简介Proguard 是一个免费的 Java 代码混淆工具,可以对 Java 字节码进行混淆,使得源代码难以被解读。
混淆可以提高程序的安全性,防止源代码被轻易地分析和盗用。
2.Maven 简介Maven 是一个基于项目对象模型(POM)的项目管理工具,可以帮助开发者管理构建、报告和文档。
Maven 可以将源代码编译成可执行文件,并进行测试和打包。
3.Proguard 与 Maven 的结合将 Proguard 与 Maven 结合,可以在构建过程中自动对 Java 代码进行混淆,提高项目的安全性。
4.Proguard Maven 的使用语法在 Maven 的 pom.xml 文件中,可以添加以下内容来配置 Proguard:```xml<build><plugins><plugin><groupId>org.xolstice.maven.plugins</groupId> <artifactId>proguard-maven-plugin</artifactId> <version>6.2.1</version><configuration><proguardVersion>6.2.1</proguardVersion><outputDirectory>${project.build.directory}/proguarded-classes</outputDirectory><proguardConfig>proguard-config.txt</proguardConfig> < obfuscate />< obfuscateJavaScript />< obfuscateStyle /></configuration><executions><execution><goals><goal>compile</goal></goals></execution></executions></plugin></plugins></build>```其中,`<proguardVersion>`表示 Proguard 的版本,`<outputDirectory>`表示混淆后的类文件输出路径,`<proguardConfig>`表示 Proguard 的配置文件路径。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
proguard混淆器使用指南撰写人: 陈柏屹项目ID : 001撰写日期: 2009-06-30内容内容21.下载/安装 (3)1.1.下载地址 (3)1.2.启动proguard (3)1.3.混淆器原理功能 (5)1.下载/安装1.1.下载地址/1.2.启动proguard1.解压下载的proguard4.4beta3,解压后进入lib文件把proguard.jar拷贝到自己新建的文件夹里如图:2.把需要混淆的jar和jar所依赖的包也放到新建的文件夹,都放在一起,如下图。
3.写一个配置文件,名称自己定,举个简单配置文件例子,内容如下,其中-injars:是你需要混淆的jar,-outjars:是你混淆后输出的jar,-libraryjars:是你混淆的jar需要所依赖的jar包,后面的不在一一说明,可以参考proguard文档,配置文件可以参考文档来对自己混淆的需求来写配置文件。
-injars TheFirstDesktopApplication1.jar-outjars TheFirstDesktopApplication1_out.jar-libraryjars <java.home>/lib/rt.jar-libraryjars appframework-1.0.3.jar-libraryjars swing-worker-1.1.jar-printmapping proguard.map-overloadaggressively-defaultpackage ''-allowaccessmodification-dontoptimize-keep public class *{public protected *;}-keep public class org.**-keep public class it.**4. 把配置文件保存到你建的文件夹下,如下图。
5.点击开始,运行,输入cmd,进入你建的文件夹下,如下图。
6. 然后输入命令语句:java -jar proguard.Jar @a 然后回车,如下图。
7. 混淆成功,在产生TheFirstDesktopApplication1_out.jar如下图。
8.混淆器后,利用反编译器对没TheFirstDesktopApplication1_out.jar反编译,多了好多a,b,c之类的类文件,对反编译的java文件是很难编译的,即说明混淆成功。
1.3.混淆器原理功能通常情况下,编译后的字节码仍然包含了大量的调试信息:源文件名,行号,字段名,方法名,参数名,变量名等等。
这些信息使得它很容易被反编译和通过逆向工程获得完整的程序。
例如像ProGuard这样的混淆器就能删除这些调试信息,并用无意义的字符序列来替换所有名字,使得它很难进行逆向工程,它进一步免费的精简代码。
除了异常堆栈信息所需要的类名,方法名和行号外,程序只会保留功能上的等价。
ProGuard介绍你可以用JB来简单的把JAVA 文件混淆一下,然后,再发布就是,你也可以使用。
proguard用法如下:ProGuard是一款免费的Java类文件压缩器、优化器和混淆器。
它能发现并删除无用类、字段(field)、方法和属性值(attribute)。
它也能优化字节码并删除无用的指令。
最后,它使用简单无意义的名字来重命名你的类名、字段名和方法名。
经过以上操作的jar文件会变得更小,并很难进行逆向工程。
这里提到了ProGuard的主要功能是压缩、优化和混淆,下面我就先介绍一下这些概念,然后再介绍ProGuard的基本使用方法。
l 什么是压缩:Java 源代码(.java文件)通常被编译为字节码(.class文件)。
而完整的程序或程序库通常被压缩和发布成Java文档(.jar文件)。
字节码比 Java源文件更简洁,但是它仍然包含大量的无用代码,尤其它是一个程序库的时候。
ProGuard的压缩程序操作能分析字节码,并删除无用的类、字段和方法。
程序只保留功能上的等价,包括异常堆栈描述所需要的信息。
l 什么是混淆:通常情况下,编译后的字节码仍然包含了大量的调试信息:源文件名,行号,字段名,方法名,参数名,变量名等等。
这些信息使得它很容易被反编译和通过逆向工程获得完整的程序。
有时,这是令人厌恶的。
例如像ProGuard这样的混淆器就能删除这些调试信息,并用无意义的字符序列来替换所有名字,使得它很难进行逆向工程,它进一步免费的精简代码。
除了异常堆栈信息所需要的类名,方法名和行号外,程序只会保留功能上的等价。
通过以上的了解,你应该明白为什么需要混淆了。
l ProGuard支持那些种类的优化:除了在压缩操作删除的无用类,字段和方法外,ProGuard也能在字节码级提供性能优化,内部方法有:²常量表达式求值²删除不必要的字段存取²删除不必要的方法调用²删除不必要的分支²删除不必要的比较和instanceof验证²删除未使用的代码²删除只写字段²删除未使用的方法参数²像push/pop简化一样的各种各样的peephole优化²在可能的情况下为类添加static和final修饰符²在可能的情况下为方法添加private, static和final修饰符²在可能的情况下使get/set方法成为内联的²当接口只有一个实现类的时候,就取代它²选择性的删除日志代码实际的优化效果是依赖于你的代码和执行代码的虚拟机的。
简单的虚拟机比有复杂JIT编译器的高级虚拟机更有效。
无论如何,你的字节码会变得更小。
仍有一些明显需要优化的技术不被支持:²使非final的常量字段成为内联²像get/set方法一样使其他方法成为内联²将常量表达式移到循环之外² Optimizations that require escape analysisProGuard 是一个命令行工具,并提供了图形化用户界面,它也可以结合Ant或J2ME Wireless Toolkit 使用。
通过ProGuard得到的更精简的jar文件意味着只需要更小的存储空间;网络传输更省时;装载速度更快和占用更小的内存空间。
另外,ProGuard非常快速和高效,它仅仅只花费几秒钟和几兆的内存在处理程序。
它处理的顺序是先压缩,然后优化,最后才进行混淆。
The results section presents actual figures for a number of applications.与其他Java混淆器相比,ProGuard的主要优势可能是它的基于模版文件的简单配置。
一些直观的命令行选项或一个简单的配置文件已经足够了。
例如,下面的配置选项保护了jar文件里的所有applets:-keep public class * extends java.applet.Applet用户指南里说明了所有可用的选项,并以大量的例子为你演示这些功能强大的配置选项。
上面谈到了ProGuard的很多好处,现在我们就来看看如何在程序中使用ProGuard吧,之前也提到了ProGuard可以用命令行、图形界面、Ant等来执行和处理程序,同时也提到了配置文件,下面我们一起来看如何使用:用命令行执行ProGuard的命令如下:java –jar proguard.jar options……具体的选项可以参考ProGuard的用户指南,你也可以把这些属性写在配置文件里;运行时,我们只需要指定这个配置文件就行了,例如:java –jar proguard.jar @config.pro而配置文件的格式也是要按照ProGuard提供的格式来写的,这个可以参考ProGuard例子里的配置文件来配置适合你的应用系统的ProGuard配置文件。
ProGuard提供了图形界面的配置和运行程序,你可以在界面上配置你想要的参数,然后运行即可。
前面提到的要手动写的配置文件也可以用图形界面来配置和生成。
如果你要在Ant里运行ProGuard,只需要添加一一个如下的target即可:<target name="proguard" depends="init"><taskdef resource="proguard/ant/task.properties" classpath="${lib.dir}/proguard/proguard.jar" /><proguard configuration="${src.dir}/config.pro" /></target>你只需要制定lib.dir和src.dir属性就行了,同样的,这里也用了proguard配置文件,跟上面提到的是一样的。
建议大家把ProGuardGUI当成一个生成配置文件的向导来使用,这样我们只需要修改配置文件而不用重新写一个配置文件。
如果你觉得ProGuard还不错,那就快把它加入你的项目里吧。
ProGuard工具通过移除不用的代码,用语义上混淆的名字来重命名类、字段和方法等手段来压缩、优化和混淆你的代码。
结果是更小的.apk文件,并且更难于被反编译。
由于ProGuard能够让你的程序难于被反编译,因此,当你的程序使用了一些机密的信息的时,使用它就显得更加重要。
ProGuard已经集成到Android的编译环境中,因此,用不着手动来触发它。
ProGuard只在release模式下编译应用程序才会运行,所以,在debug模式下编译,你就不必处理混淆的代码。
是否运行ProGuard是完全可选的,但强烈推荐使用。
这篇文章将描述如何启用和配置ProGuard,以及如何使用retrace工具来解码混淆过的堆栈跟踪信息。
启用ProGuard当你创建Android工程时,proguard.cfg文件会在工程的根目录自动创建。
这个文件定义了ProGuard如何优化和混淆代码,因此,理解如何定制它是非常重要的。
默认的配置文件只是覆盖了一些通用的情况,所以,基本上你需要编辑它来满足你的需求。
参考后面的“配置ProGuard”章节来了解如何定制ProGuard的相关信息。
启用ProGuard让它跟随Ant或Eclipse编译时一起运行,你需要在<project_root>/default.properties文件中设置proguard.config属性。