在我的應用程序中,我有一些類,它實現了Serializable/Externalizable
接口。ProGuard不會完全混淆Serializable類
反編譯類後,實現Serializable
或Externalizable
有混淆的名稱,如a, b
等,但字段和方法的名稱保持不變。方法的身體也被混淆了。
同樣的問題影響Enum
的,它有方法和字段(除了它們自己的實例)。
我proguard-rules.pro
文件是未來
-optimizationpasses 5
-assumenosideeffects class android.util.Log {
public static boolean isLoggable(java.lang.String, int);
public static int v(...);
public static int i(...);
public static int w(...);
public static int d(...);
public static int e(...);
}
-dontwarn android.support.**
-keepclasseswithmembernames, includedescriptorclasses class * {
native <methods>;
}
-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.context.Context);
}
-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();
}
-keepclassmembers, allowoptimization enum * {
public static **[] values();
public static ** valueOf(java.lang.String);
}
一個細節:此外-keepclassmembers class * implements java.io.Serializable {...}
部分之前我的應用程序失敗的反序列化的一步。我嘗試了ProGuard網站的examples,但只有最後一個可以使用。
那麼我能在這種情況下做什麼?是否有配置來混淆完全實現Serializable/Externalizable
的類?
抹黑我,我現在就試一試,儘快答覆,謝謝你很多) –