Gradle将依赖库的proguard-rules.pro文件打包进aar

应用场景

  • 我们要将一个自己写的Library或者别人写的Library打包成aar(一定是aar文件)放到libs下进行引用;
  • 另外Library已经进行混淆,我们在app里引用的时候不需要再对Library进行混淆;
  • 此时,一般做法是Library提供混淆规则,我们在app下的proguard-rules.pro中添加混淆规则,保证Library下对外接口不被混淆;
  • 本章讲述的是将Library下的proguard-rules.pro文件打包进aar中,这样在app中就不需要添加Library的混淆规则了

将proguard-rules.pro文件打包进aar

第一步:开启混淆开关

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

执行命令gradlew assembleRelease生成aar,aar文件在bulid/outputs下的aar目录下,然后反编译此aar,会发现里面并没有包含proguard-rules.pro文件。
Gradle将依赖库的proguard-rules.pro文件打包进aar_第1张图片
第二步:配置gradle,将proguard-rules.pro文件打包进aar

defaultConfig {
     minSdkVersion 19
     targetSdkVersion 26
     versionCode 1
     versionName "1.0"
     // 配置此参数,方可将混淆文件打包进aar
     consumerProguardFiles 'proguard-rules.pro'
 }

配置好再进行打包,反编译后会看到proguard.txt文件在库中,如下图所示:
Gradle将依赖库的proguard-rules.pro文件打包进aar_第2张图片
这样,我们在app中引入此库的aar时,就不必在app的proguard-rules.pro文件中手动配置这个库的混淆规则了。当进行打包apk的时候,aar中的混淆规则会被合并到app中的混淆规则里。
注:不只是aar,只要app依赖此库,添加consumerProguardFiles 'proguard-rules.pro'这个配置时,打包apk的时候混淆规则也会被合并。

你可能感兴趣的:(Gradle)