OSDN Git Service

Protect against data loss from Serializable classes on app upgrade
authorBraden Farmer <farmerbb@gmail.com>
Tue, 11 Oct 2016 19:57:05 +0000 (13:57 -0600)
committerBraden Farmer <farmerbb@gmail.com>
Tue, 11 Oct 2016 19:57:05 +0000 (13:57 -0600)
app/build.gradle
app/mapping.txt [new file with mode: 0644]
app/proguard-rules.pro [new file with mode: 0644]
app/src/main/java/com/farmerbb/taskbar/util/Blacklist.java
app/src/main/java/com/farmerbb/taskbar/util/PinnedBlockedApps.java
app/src/main/java/com/farmerbb/taskbar/util/SavedWindowSizes.java
app/src/main/java/com/farmerbb/taskbar/util/TopApps.java

index 351f180..981c499 100644 (file)
@@ -26,7 +26,7 @@ android {
         release {
             minifyEnabled true
             shrinkResources true
-            proguardFiles 'proguard-android.txt'
+            proguardFiles 'proguard-android.txt', 'proguard-rules.pro'
         }
     }
 
diff --git a/app/mapping.txt b/app/mapping.txt
new file mode 100644 (file)
index 0000000..ef5c081
--- /dev/null
@@ -0,0 +1,71 @@
+com.farmerbb.taskbar.util.AppEntry -> com.farmerbb.taskbar.c.a:
+    java.lang.String packageName -> a
+    java.lang.String componentName -> b
+    java.lang.String label -> c
+    android.graphics.drawable.Drawable icon -> d
+    byte[] iconByteArray -> e
+    void <init>(java.lang.String,java.lang.String,java.lang.String,android.graphics.drawable.Drawable,boolean) -> <init>
+    java.lang.String getPackageName() -> a
+    java.lang.String getComponentName() -> b
+    java.lang.String getLabel() -> c
+    android.graphics.drawable.Drawable getIcon(android.content.Context) -> a
+com.farmerbb.taskbar.util.Blacklist -> com.farmerbb.taskbar.c.b:
+    java.util.List blockedApps -> a
+    com.farmerbb.taskbar.util.Blacklist theInstance -> b
+    void <init>() -> <init>
+    java.util.List getBlockedApps() -> a
+    void addBlockedApp(android.content.Context,com.farmerbb.taskbar.util.BlacklistEntry) -> a
+    void removeBlockedApp(android.content.Context,java.lang.String) -> a
+    boolean isBlocked(java.lang.String) -> a
+    boolean save(android.content.Context) -> c
+    void clear(android.content.Context) -> a
+    com.farmerbb.taskbar.util.Blacklist getInstance(android.content.Context) -> b
+com.farmerbb.taskbar.util.BlacklistEntry -> com.farmerbb.taskbar.c.c:
+    java.lang.String packageName -> a
+    java.lang.String label -> b
+    void <init>(java.lang.String,java.lang.String) -> <init>
+    java.lang.String getPackageName() -> a
+    java.lang.String getLabel() -> b
+com.farmerbb.taskbar.util.PinnedBlockedApps -> com.farmerbb.taskbar.c.j:
+    java.util.List pinnedApps -> a
+    java.util.List blockedApps -> b
+    com.farmerbb.taskbar.util.PinnedBlockedApps theInstance -> c
+    void <init>() -> <init>
+    java.util.List getPinnedApps() -> a
+    java.util.List getBlockedApps() -> b
+    void addPinnedApp(android.content.Context,com.farmerbb.taskbar.util.AppEntry) -> a
+    void addBlockedApp(android.content.Context,com.farmerbb.taskbar.util.AppEntry) -> b
+    void removePinnedApp(android.content.Context,java.lang.String) -> a
+    void removeBlockedApp(android.content.Context,java.lang.String) -> b
+    boolean isPinned(java.lang.String) -> a
+    boolean isBlocked(java.lang.String) -> b
+    void clear(android.content.Context) -> a
+    boolean save(android.content.Context) -> c
+    com.farmerbb.taskbar.util.PinnedBlockedApps getInstance(android.content.Context) -> b
+com.farmerbb.taskbar.util.SavedWindowSizes -> com.farmerbb.taskbar.c.k:
+    java.util.List savedApps -> a
+    com.farmerbb.taskbar.util.SavedWindowSizes theInstance -> b
+    void <init>() -> <init>
+    void setWindowSize(android.content.Context,java.lang.String,java.lang.String) -> a
+    java.lang.String getWindowSize(android.content.Context,java.lang.String) -> a
+    void clear(android.content.Context) -> a
+    boolean save(android.content.Context) -> c
+    com.farmerbb.taskbar.util.SavedWindowSizes getInstance(android.content.Context) -> b
+    java.util.List getSavedWindowSizes() -> a
+com.farmerbb.taskbar.util.SavedWindowSizesEntry -> com.farmerbb.taskbar.c.l:
+    java.lang.String componentName -> a
+    java.lang.String windowSize -> b
+    void <init>(java.lang.String,java.lang.String) -> <init>
+    java.lang.String getComponentName() -> a
+    java.lang.String getWindowSize() -> b
+com.farmerbb.taskbar.util.TopApps -> com.farmerbb.taskbar.c.m:
+    java.util.List topApps -> a
+    com.farmerbb.taskbar.util.TopApps theInstance -> b
+    void <init>() -> <init>
+    java.util.List getTopApps() -> a
+    void addTopApp(android.content.Context,com.farmerbb.taskbar.util.BlacklistEntry) -> a
+    void removeTopApp(android.content.Context,java.lang.String) -> a
+    boolean isTopApp(java.lang.String) -> a
+    boolean save(android.content.Context) -> c
+    void clear(android.content.Context) -> a
+    com.farmerbb.taskbar.util.TopApps getInstance(android.content.Context) -> b
\ No newline at end of file
diff --git a/app/proguard-rules.pro b/app/proguard-rules.pro
new file mode 100644 (file)
index 0000000..4385e5f
--- /dev/null
@@ -0,0 +1,7 @@
+# Add project specific ProGuard rules here
+
+-applymapping mapping.txt
+
+-keepclassmembers class * implements java.io.Serializable {
+    static final long serialVersionUID;
+}
\ No newline at end of file
index fcb0b2d..0d7f8cb 100644 (file)
@@ -27,6 +27,8 @@ import java.util.ArrayList;
 import java.util.List;
 
 public class Blacklist implements Serializable {
+    static final long serialVersionUID = 9033765395690141037L;
+
     private List<BlacklistEntry> blockedApps = new ArrayList<>();
 
     private static Blacklist theInstance;
index d07657d..9dbb155 100644 (file)
@@ -27,6 +27,8 @@ import java.util.ArrayList;
 import java.util.List;
 
 public class PinnedBlockedApps implements Serializable {
+    static final long serialVersionUID = 6649239269100390617L;
+
     private List<AppEntry> pinnedApps = new ArrayList<>();
     private List<AppEntry> blockedApps = new ArrayList<>();
 
index 5d66ff3..4e167d9 100644 (file)
@@ -27,6 +27,8 @@ import java.util.ArrayList;
 import java.util.List;
 
 public class SavedWindowSizes implements Serializable {
+    static final long serialVersionUID = 7111185146180868281L;
+
     private List<SavedWindowSizesEntry> savedApps = new ArrayList<>();
 
     private static SavedWindowSizes theInstance;
index 4f8ecad..c7a0b16 100644 (file)
@@ -27,6 +27,8 @@ import java.util.ArrayList;
 import java.util.List;
 
 public class TopApps implements Serializable {
+    static final long serialVersionUID = 8541436853152666400L;
+
     private List<BlacklistEntry> topApps = new ArrayList<>();
 
     private static TopApps theInstance;