【问题标题】:Proguard rules -keep vs -keepclassmembers vs -keepclasseswithmembersProguard 规则 -keep vs -keepclassmembers vs -keepclasseswithmembers
【发布时间】:2017-10-20 18:45:50
【问题描述】:

阅读proguard rules

我发现自己面临着三个似乎非常相似的术语 keepkeepclassmemberskeepclasswithmembers

我无法理解这三个规则之间的区别,谁能更好地解释一下区别,也许也可以举个例子

【问题讨论】:

    标签: android proguard android-proguard


    【解决方案1】:

    1) 保留 - 保留类

    2) keepclassmembers - 保留类成员,例如字段和方法

    3) keepclasseswithmembers - 如果类满足基于成员的特定条件,则保留类

    示例

    1) 保留所有扩展 android.app.Activity 的类

    -keep public class * extends android.app.Activity
    

    2) 如果他们正在实现 android.os.Parcelable,则保留所有名为 CREATOR 的成员(静态字段)

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

    3) 如果所有类具有带有参数(Context, AttributeSet) 或(Context, AttributeSet, int) 的构造函数(下面提到的init),则保留所有类。

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

    【讨论】:

    猜你喜欢
    • 2013-05-05
    • 1970-01-01
    • 2013-11-12
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-04-09
    相关资源
    最近更新 更多