Android proguard文件路径

proguard文件的作用是提供代码的混淆规则,抛开各种混淆规则的书写不说,与我们打交道的proguard文件一共有三份,
那么这三份proguard文件的路径分别在哪里呢?
在我们的AndroidStudio的model中的build.gradle文件中,我们经常看到这两行代码

Snip20180522_3.png

minifyEnabled 就是是否开启代码混淆的开关。当 minifyEnabled 设置为true的时候,也就是开启混淆的时候,那么系统就要按照一定的规则去混淆我们的代码了。那么这些个规则在哪里呢?
如图所示,先说我们熟悉的:
proguard-rules.pro:我们自定义的混淆规则,这份文件就位于app目录下,也是我们在项目中一眼可以看到的混淆文件。方便我们看到,也是为了方便我们操作。
proguard-android.txt:系统提供的默认的混淆规则,这份文件你在项目中就是把电脑戳烂也找不到,既然系统提供的默认混淆规则,一般也不需要我们动。它的路径在sdk/tools/proguard/下。
还有一份,我们有时在打包的时候,debug打包没有问题,release打包就会报类似这样的异常:
Warning:Exception while processing task java.io.FileNotFoundException: D:...\app\build\intermediates\proguard-rules\release\aapt_rules.txt
仔细一看,FileNotFoundException,文件不存在,什么文件丢失?......\aapt_rules.txt 文件不存在。
这份混淆文件的路径为:
app/build/intermediates/proguard-rules/release/路径下
下图所示分别为proguard-rules.pro路径和aapt_rules.txt路径
proguard-android.txt在项目中看不到的,只能去sdk路径中查看。


Snip20180522_4.png

顺便说一句,如果我们在编译时候报上文提到到异常,怎么处理呢?
有两种方式:
第一:将minifyEnabled 设置为false,这样不启用代码混淆,也就不会去管混淆文件了,这种方法治标不治本。
第二:aapt_rules.txt的路径位于build路径下,说明改文件是编译时文件。我们只需要把项目clean一下,然后运行rebuild project命令即可。需要注意的是,rebuild project命令结束后并不会生成改文件,如果该文件存在,反而会删除该文件。需要我们运行打包apk命令,改命令结束时会同步生成改文件。

你可能感兴趣的:(Android proguard文件路径)