安卓笔记侠

专注安卓开发

导航

ProGuard详解

ProGuard工作原理简介

  ProGuard能够对Java类中的代码进行压缩(Shrink),优化(Optimize),混淆(Obfuscate),预检(Preveirfy)。 
  1. 压缩(Shrink):在压缩处理这一步中,用于检测和删除没有使用的类,字段,方法和属性。 
  2. 优化(Optimize):在优化处理这一步中,对字节码进行优化,并且移除无用指令。 
  3. 混淆(Obfuscate):在混淆处理这一步中,使用a,b,c等无意义的名称,对类,字段和方法进行重命名。 
  4. 预检(Preveirfy):在预检这一步中,主要是在Java平台上对处理后的代码进行预检。 
  对于ProGuard执行流程图如下图所示。 
  这里写图片描述 
  对于ProGuard的原理更详细的介绍可以参考Proguard手册,在这里就不在进行更详细的介绍。

 

ProGuard使用

  ProGuard已集成到Android构建系统中,所以我们不用手动调用这个工具。我们可以选择在只发布模式下构建系统的时候再去运行ProGuard。 
  在AndroidStudio中我们需要将Proguard添加到gradle.build文件的构建类型当中。不过在我们创建一个Android工程的时候,系统已经自动为我们添加到了gradle.build中。

buildTypes {
    release {
        minifyEnabled true
        proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
    }
}

minifyEnabled:开启混淆,我们新建的工程默认为false,因此,如果我们需要开启混淆的话就需要手动设为true。 
proguardFiles:这部分有两段,前一段代表系统默认的android程序的混淆文件,该文件已经包含了基本的混淆声明,免去了我们很多事,这个文件的目录在/tools/proguard/proguard-android.txt , 后一部分是我们项目里的自定义的混淆文件,目录就在 app/proguard-rules.pro,在这个文件里我们可以声明一些我们所需要的定制的混淆规则。 
  

posted on 2018-01-30 16:35  安卓笔记侠  阅读(929)  评论(0编辑  收藏  举报