ProGuard中-keep和-keepclassmembers有什么区别?

Che*_*eng 20 android proguard

我通过http://proguard.sourceforge.net/index.html#manual/usage.html阅读,但无法得到他们的分歧.

我测试了2个不同的选项并反编译结果.两者似乎都产生了相同的结果.

-keep class * implements android.os.Parcelable {
    *;
}
Run Code Online (Sandbox Code Playgroud)
-keepclassmembers class * implements android.os.Parcelable {
    *;
}
Run Code Online (Sandbox Code Playgroud)

小智 29

第(-keep)将保留类和类成员实现android.os.Parcelable 被删除或重命名.

后者(-keepclassmembers)将保留类成员的类成员,这些类可以android.os.Parcelable 被删除或重命名.