ProGuard全局指令
1.1、-basedirectory ${directoryname}

有些指令需要指定一个文件路径,如果我们指定了这个指令,如果那些指令中使用了相对路径,就是相对与这个指令指示的路径, 否则就是相对于当前配置文件的路径。

-basedirectory /usr/local/share/android-sdk/tools/proguard/
1.2、-include ${filename}

从给定的配置文件中读取指令。我们可以把一些公共的配置放到一个配置文件中,然后其他的配置文件使用该指令,包含那个公共的配置文件。

-include common-proguard-config.txt
1.3、-injars ${classpath}

开发中用到的第三方jarwareararr等。

${classpath}可以是文件路径也可以是目录。

示例:

-injars src/main/libs/
-injars src/main/libs/xx.jar
1.4、-outjars ${classpath}

使用-outjars ${classpath}指令指明的这些库,很可能会经过那四个步骤的处理,处理完后的路径用这个指令指明。

${classpath}可以是文件路径也可以是目录。

示例:

-outjars build/libs/
-outjars build/libs/xx.jar
1.5、-libraryjars ${classpath}

使用-libraryjars ${classpath}指令指明的这些库,是-injars ${classpath}指明的这些库需要的, 也是我们的代码需要的,它不会经过四个步骤的处理,原样输出。在Android开发中,就是Framework APIjar包。

示例:

-libraryjars /usr/local/share/android-sdk/platforms/android-25/android.jar

事实上,在Android开发中,你根本不用配置它,gradleandroid插件已经自动根据build.gradle中的配置为我们添加了。

1.6、-verbose

此指令指示,在处理过程中会有日志输出,一般是开启此指令,一般出现问题后通过日志找到原因。

1.7、-printconfiguration ${filename}

将已解析过的配置标准输出到指定的文件。该选项可用于调试配置。

示例:

-printconfiguration xx.txt
1.8、-dump ${filename}

输出类文件的内部结构到给定的文件中。

示例:

-dump dump.txt
1.9、-dontnote [${class_filter}]

指定配置中潜在错误或遗漏时不打印相关信息。类名错误或遗漏选项时这些信息可能会比较有用。class_filter是一个可选的正则表达式。

示例:

-dontwarn android.**
1.10、-dontwarn [${class_filter}]

指定找不到引用或其他重要问题时不打印警告信息。class_filter是一个可选的正则表达式。

示例:

-dontwarn android.**

ProGuard运行过程中,可能会出现两种信息:NoteWarningNote不会导致程序终止,而Warning会导致程序终止,所以,一旦运行出错了, 就要找Warning,把它解决掉,就可以顺利执行了。