2017-02-22 41 views
0

Я использую различные другие библиотеки. Но я добавил свою конфигурацию proguard из своей документации к репозиторию. Я не могу запутать свой код и его внутреннюю переменную с помощью proguard. Даже я не могу обфускать имена пакетов. Я все еще могу видеть журналы на моем андроид-logcat. Мое приложение работает без сбоев. Я смущен, было ли применено ограничение или нет.Obfuscation не работает с proguard

Это мой уровень приложение Gradle

defaultConfig { 
    resConfigs "en" 
    applicationId "com.xxx.xxx" 
    minSdkVersion 16 
    targetSdkVersion 25 
    versionCode 49 
    multiDexEnabled true 
    versionName "1.4.2-debug" 
} 
buildTypes { 
    debug { 
     minifyEnabled true 
     debuggable true 
     proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro' 
    } 
    release { 
     minifyEnabled true 
     debuggable true 
     proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro' 
     signingConfig signingConfigs.config 
    } 
} 
dexOptions { 
    javaMaxHeapSize "4g" 
} 

И это мой файл правила Proguard.

-dontpreverify 
-repackageclasses '' 
-allowaccessmodification 
-optimizations !code/simplification/arithmetic 
-keepattributes *Annotation* 

-keep public class * extends android.app.Activity 
-keep public class * extends android.app.Application 
-keep public class * extends android.app.Service 
-keep public class * extends android.content.BroadcastReceiver 
-keep public class * extends android.content.ContentProvider 

-keep public class * extends android.view.View { 
public <init>(android.content.Context); 
public <init>(android.content.Context, android.util.AttributeSet); 
public <init>(android.content.Context, android.util.AttributeSet, int); 
public void set*(...); 
} 

-keepclasseswithmembers class * { 
public <init>(android.content.Context, android.util.AttributeSet); 
} 

-keepclasseswithmembers class * { 
public <init>(android.content.Context, android.util.AttributeSet, int); 
} 

-keepclassmembers class * implements android.os.Parcelable { 
static android.os.Parcelable$Creator CREATOR; 
} 

-keepclassmembers class **.R$* { 
public static <fields>; 
} 
####################################################################  Fragmenst 

-keep public class * extends android.support.v4.app.Fragment 
-keep public class * extends android.app.Fragment 


#################################################################### Methods 

-keepclasseswithmembernames class * { 
native <methods>; 
} 
-keepclassmembers class * { 
public void *ButtonClicked(android.view.View); 
} 



#################################################################### Serializables 

-keepclassmembers class * implements java.io.Serializable { 
static final long serialVersionUID; 
private static final java.io.ObjectStreamField[]serialPersistentFields; 
!static !transient <fields>; 
!private <fields>; 
!private <methods>; 
private void writeObject(java.io.ObjectOutputStream); 
private void readObject(java.io.ObjectInputStream); 
java.lang.Object writeReplace(); 
java.lang.Object readResolve(); 
} 

#################################################################### KEEP ANDROID SUPPORT V7 AND DESIGN 

-dontwarn android.support.design.** 
-keep class android.support.design.** { *; } 
-keep interface android.support.design.** { *; } 
-keep public class android.support.design.R$* { *; } 

-keep public class android.support.v7.widget.** { *; } 
-keep public class android.support.v7.internal.widget.** { *; } 
-keep public class android.support.v7.internal.view.menu.** { *; } 

-keep public class * extends android.support.v4.view.ActionProvider { 
public <init>(android.content.Context); 
} 

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

#################################################################### REMOVE WARNINGS 


-dontwarn android.support.design.internal.** 
-dontwarn com.google.android.gms.** 
-dontwarn android.support.v4.** 


#################################################################### REMOVE LOGGING 

-assumenosideeffects class android.util.Log { 
public static *** e(...); 
public static *** w(...); 
public static *** wtf(...); 
public static *** d(...); 
public static *** v(...); 
public static *** i(...); 
} 

ответ

2

I am not able to obfuscate my code and its inner variable using proguard:

ваше приложение кажется не запутать, потому что ваши правила progaurd слишком широки, и они предотвращают большую часть вашего кода от получения уменьшенных и запутывания. например, после строки:

-keep public class * extends android.support.v4.app.Fragment 
-keep public class * extends android.app.Fragment 
-keep public class * extends android.app.Activity 
-keep public class * extends android.app.Application 
-keep public class * extends android.app.Service 
-keep public class * extends android.content.BroadcastReceiver 
-keep public class * extends android.content.ContentProvider 

I am still able to see logs on my android logcat:

вы должны удалить debuggable true от выпуска buildType вашего Gradle, чтобы предотвратить увидеть журналы в LogCat.

+0

я до сих пор не понимаю, почему методы внутри моего класса становятся запутанным, но модель и объектные классы не являются? Я не написал для них никакого правила. – saurabhlahoti

0

У меня была линия

-dontobfuscate 

в моем файле Proguard, который блокирует запутывания

 Смежные вопросы

  • Нет связанных вопросов^_^