Proguard没有混淆字符串和类名

时间:2017-07-31 14:42:06

标签: android android-proguard

这是我第一次使用proguard 。我能够在我的apk中混淆几乎所有东西。 但是字符串和类名不会被混淆。我怎样才能确保我的apk中的类名被混淆了。

这是我的proguard-rule.pro

-assumenosideeffects class android.util.Log {
   public static boolean isLoggable(java.lang.String, int);
   public static int v(...);
   public static int i(...);
   public static int w(...);
   public static int d(...);
   public static int e(...);
}
-dontwarn org.androidannotations.api.rest.**
-keep class com.github.mikephil.charting.** { *; }
-dontwarn android.support.v7.**
-keep class android.support.v7.** { *; }
-keep interface android.support.v7.** { *; }
-dontwarn com.squareup.okhttp.**
-keep public class * implements com.bumptech.glide.module.GlideModule
-keep public enum com.bumptech.glide.load.resource.bitmap.ImageHeaderParser$** {
  **[] $VALUES;
  public *;
}

这是我的build.gradle文件:

android {
    compileSdkVersion 25
    buildToolsVersion '25.0.2'

    defaultConfig {
        applicationId "com.ignite.tsa"
        minSdkVersion 16
        targetSdkVersion 25
        versionCode 1
        versionName "1.0"
        multiDexEnabled true
    }
    buildTypes {
        release {
            minifyEnabled true
            shrinkResources true
            proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
        }
        debug {
        }
    }
    dexOptions {
        preDexLibraries = false
        javaMaxHeapSize "4g" // 2g should be also OK
    }
}

我做错了什么?有人可以使用适当的proguard-rule.pro文件来混淆AppCompat和其他存在的android库。

1 个答案:

答案 0 :(得分:1)

  

我能够轻松查看appcompat文件

嗯,当然。您在ProGuard规则中键入以下行:

-keep class android.support.v7.** { *; }
-keep interface android.support.v7.** { *; }

如果您希望对android.support.v7中的类进行模糊处理(如果未使用它们则将其删除),则需要删除这些行,或者将其替换为更适合指示 < / em>你想保留什么。