Android 之 打包混淆ProGuard

打包后的几个很重要的文件
  1. 需要记住的目录:
    在Android studio的build文件夹下,build/outputs/mapping/下的文件
    • dump.txt     这个文件描述了APK中的class 文件的内部结构
    • mapping.txt     这个文件提供了一个对照列表,即原始的名字和混淆后的名字的对照表,在我们发布应用后收集到的bug 日志,需要根据这个表来进行定位bug的位置。
    • seeds.txt     这个文件列出了没有被混淆的类和成员
    • usage.txt     这个文件列出了被从APK文件中删除掉的代码
  2. 关于如何进行打包混淆

    • build.gradle 文件

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

      通过getDefaultProguardFile函数加载默认的混淆配置文件,这里是proguard-android.txt,这个文件android studio 会到我们的SDK目录tools/proguard/文件夹下面去加载。在该文件夹下面我们也可以使用proguard-android-optimize.txt文件,这个文件和proguard-android.txt的混淆规则是一样的,但是还增加了一些优化,这些优化深入到字节码(.class file 也就是说会深入到方法中去进行优化)进行来进一步减少APK的大小并且提高运行速度。
      剩下一个文件就是我们进行自定义混淆规则的文件,proguard-rules.pro 因为有些时候android studio在混淆时会把一些我们不希望进行混淆的类或者方法给混淆了,这个时候我们就需要在这个文件中列出我们不希望进行混淆的类或者方法,具体如何编写如下:

    • progurad-rules.pro 主要使用下面这些关键字来保持某些代码不被加入到混淆规则中去:
      • keep
      • keepclassmembers
      • keepclassmemebernames
      • keepclasswithmembers
      • keepclasswithmembernames
      • keepattributes
      • keepnames
      • keepdirectories
      • keepparameternames
      • keeppackagenames

    keep*等关键字的作用和用法见下表:

keep关键字 作用 示例
keep 通用保持一个类的某些方法或者成员不被混淆 keep class com.xiaolei.model.csdndemo.* {
        *;
}

。。。。待续

你可能感兴趣的:(Android)