2017-07-31 795 views
0

這是我第一次使用proguard。我能夠混淆apk中的幾乎所有內容。 但字符串和類名不會混淆。我怎樣才能確保類名稱在我的apk中被混淆。Proguard不會混淆字符串和類名

這裏是我的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

你說「某些部分沒有被混淆」,但我們不知道「某個部分」是什麼。 – CommonsWare

+1

你需要澄清你期望被混淆但不是。有些東西需要非模糊處理才能工作。 – Kiskae

+0

我能夠看到包裝結構。我能夠很容易地看到'appcompat'文件和其他某些庫。 – XoXo

回答

1

我能看到程序兼容性文件輕鬆

嗯,當然。您鍵入您的ProGuard規則下面幾行:

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

如果你想在android.support.v7類被擾亂(和刪除,如果它們是未使用),你需要擺脫那些線條,或者用東西代替它們的是更適合指示特別是你想保留的。

+0

我想混淆我的Activity,BroadcastReceiver,Service和Fragment類名稱。大多數情況下,我需要字符串和類混淆。 – XoXo

+1

@Hiren:ProGuard不能這樣做,因爲這些類都是通過反射實例化的。商業混淆器(例如DexGuard)可以處理這個問題。就我個人而言,我認爲你在浪費你的時間。 – CommonsWare

+0

非常感謝您的寶貴回覆。 – XoXo