Proguard并没有混淆AAR课程

时间:2016-11-28 07:18:51

标签: android gradle proguard android-proguard

我一直试图告诉proguard为aar文件中使用的任何内容重命名类。

假设我在AAR文件中定义了此文件

package com.myweb.lib.common;

import android.graphics.Color;
import java.util.Random;

public class ColorUtil
{
  public static int randomColor()
  {
    Random localRandom = new Random();
    return Color.argb(255, localRandom.nextInt(256), localRandom.nextInt(256), localRandom.nextInt(256));
  }
}

没有为AAR定义的Proguard文件。

我的proguard规则是为消费者应用

定义的
-allowaccessmodification
-optimizations !code/simplification/arithmetic
-keepattributes Exceptions,InnerClasses,Signature,Deprecated,SourceFile,LineNumberTable,*Annotation*,EnclosingMethod
-flattenpackagehierarchy ''

-keep class com.myweb.lib.networkservices.models.** { *; }
-keep class com.myweb.helpmate.http.** { *; }
-keep class android.location.** { *; }

gradle构建如下:

 buildTypes {
        release {
            minifyEnabled true
            shrinkResources true
            proguardFile 'proguard-gson.pro'
            proguardFile 'proguard-square-retrofit2.pro'
            proguardFile 'proguard-square-okio.pro'
            proguardFile 'proguard-rules.pro'
            proguardFile 'proguard-support-v7-appcompat.pro'
            proguardFile getDefaultProguardFile('proguard-android-optimize.txt')
            signingConfig signingConfigs.release
        }
    }

然而,当我反编译时,我可以看到这个类。

我想要实现的目标是:

  • 更改方法名称
  • 更改班级名称
  • 更改变量名称
  • 也可以更改包裹

因此很难将它的使用方式联系起来。

1 个答案:

答案 0 :(得分:0)

您不能保护已经创建的aar文件。您或其他人创建的aar文件的库模块需要进行proguard配置设置,以便可以在其module-name / build / outputs / aar目录下输出混淆的aar文件。