why proguard is only obfuscating the class which is not extending anything

前端 未结 2 513
后悔当初
后悔当初 2021-01-17 06:30

i am trying to obfuscate my android application with proguard. But the problem is when i decompiled the apk it only shows the changed variable names but class names are sam

2条回答
  •  萌比男神i
    2021-01-17 07:03

    Use this RULES

    It will change obfuscating the class as well as your instance

    -ignorewarnings
    
    -keep class * {
        public private default *;
    }
    

    Note: Don't forget to check your all functionalities after applying changes in proguard-ruls.pro file

    There are may be some class will not work after applied changes in proguard-ruls.pro file in this case you have to use -keep to avoid this issue

    -keep Specifies classes and class members (fields and methods) to be preserved as entry points to your code. For example, in order to keep an application, you can specify the main class along with its main method.

    and you can apply this rules also

    ignorewarnings
    
    -dontpreverify
    -repackageclasses ''
    -allowaccessmodification
    -optimizations !code/simplification/arithmetic
    -keepattributes *Annotation*
    
    
    -keepclasseswithmembers class * {
        public (android.content.Context, android.util.AttributeSet);
    }
    
    -keepclasseswithmembers class * {
        public (android.content.Context, android.util.AttributeSet, int);
    }
    
    -keepclassmembers class * implements android.os.Parcelable {
        static android.os.Parcelable$Creator CREATOR;
    }
    
    -keepclassmembers class **.R$* {
        public static ;
    }
    
    -keep class android.support.v7.widget.SearchView { *; }
    
    -assumenosideeffects class android.util.Log {
        public static *** d(...);
        public static *** e(...);
        public static *** w(...);
    }
    

    for more about proguard-rules you can refer official proguard DOC

提交回复
热议问题