【发布时间】:2017-10-20 18:45:50
【问题描述】:
我发现自己面临着三个似乎非常相似的术语
keepkeepclassmemberskeepclasswithmembers
我无法理解这三个规则之间的区别,谁能更好地解释一下区别,也许也可以举个例子
【问题讨论】:
标签: android proguard android-proguard
我发现自己面临着三个似乎非常相似的术语
keepkeepclassmemberskeepclasswithmembers
我无法理解这三个规则之间的区别,谁能更好地解释一下区别,也许也可以举个例子
【问题讨论】:
标签: android proguard android-proguard
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);
}
【讨论】: