diff --git a/Source/Android/app/src/main/java/org/dolphinemu/dolphinemu/NativeLibrary.java b/Source/Android/app/src/main/java/org/dolphinemu/dolphinemu/NativeLibrary.java
index a11a4ad154..8d193e75ec 100644
--- a/Source/Android/app/src/main/java/org/dolphinemu/dolphinemu/NativeLibrary.java
+++ b/Source/Android/app/src/main/java/org/dolphinemu/dolphinemu/NativeLibrary.java
@@ -283,6 +283,8 @@ public final class NativeLibrary
 	 */
 	public static native String GetVersionString();
 
+	public static native String GetGitRevision();
+
 	/**
 	 * Saves a screen capture of the game
 	 */
diff --git a/Source/Android/app/src/main/java/org/dolphinemu/dolphinemu/services/DirectoryInitializationService.java b/Source/Android/app/src/main/java/org/dolphinemu/dolphinemu/services/DirectoryInitializationService.java
index f6362ff9cc..7d41df25ac 100644
--- a/Source/Android/app/src/main/java/org/dolphinemu/dolphinemu/services/DirectoryInitializationService.java
+++ b/Source/Android/app/src/main/java/org/dolphinemu/dolphinemu/services/DirectoryInitializationService.java
@@ -9,6 +9,8 @@ package org.dolphinemu.dolphinemu.services;
 import android.app.IntentService;
 import android.content.Context;
 import android.content.Intent;
+import android.content.SharedPreferences;
+import android.preference.PreferenceManager;
 import android.support.v4.content.LocalBroadcastManager;
 
 import org.dolphinemu.dolphinemu.NativeLibrary;
@@ -74,11 +76,19 @@ public final class DirectoryInitializationService extends IntentService
     {
         File sysDirectory = new File(getFilesDir(), "Sys");
 
-        // Delete the existing extracted Sys directory in case it's from a different version of Dolphin.
-        deleteDirectoryRecursively(sysDirectory);
+        SharedPreferences preferences = PreferenceManager.getDefaultSharedPreferences(this);
+        String revision = NativeLibrary.GetGitRevision();
+        if (!preferences.getString("sysDirectoryVersion", "").equals(revision))
+        {
+            // There is no extracted Sys directory, or there is a Sys directory from another
+            // version of Dolphin that might contain outdated files. Let's (re-)extract Sys.
+            deleteDirectoryRecursively(sysDirectory);
+            copyAssetFolder("Sys", sysDirectory, true);
 
-        // Extract the Sys directory to app-local internal storage.
-        copyAssetFolder("Sys", sysDirectory, true);
+            SharedPreferences.Editor editor = preferences.edit();
+            editor.putString("sysDirectoryVersion", revision);
+            editor.apply();
+        }
 
         // Let the native code know where the Sys directory is.
         SetSysDirectory(sysDirectory.getPath());
diff --git a/Source/Android/jni/MainAndroid.cpp b/Source/Android/jni/MainAndroid.cpp
index 67fb1a7957..9fc8781cfa 100644
--- a/Source/Android/jni/MainAndroid.cpp
+++ b/Source/Android/jni/MainAndroid.cpp
@@ -432,6 +432,8 @@ JNIEXPORT jint JNICALL Java_org_dolphinemu_dolphinemu_NativeLibrary_GetPlatform(
                                                                                 jstring jFilename);
 JNIEXPORT jstring JNICALL
 Java_org_dolphinemu_dolphinemu_NativeLibrary_GetVersionString(JNIEnv* env, jobject obj);
+JNIEXPORT jstring JNICALL Java_org_dolphinemu_dolphinemu_NativeLibrary_GetGitRevision(JNIEnv* env,
+                                                                                      jobject obj);
 JNIEXPORT void JNICALL Java_org_dolphinemu_dolphinemu_NativeLibrary_SaveScreenShot(JNIEnv* env,
                                                                                    jobject obj);
 JNIEXPORT void JNICALL Java_org_dolphinemu_dolphinemu_NativeLibrary_eglBindAPI(JNIEnv* env,
@@ -589,6 +591,12 @@ JNIEXPORT jstring JNICALL Java_org_dolphinemu_dolphinemu_NativeLibrary_GetVersio
   return env->NewStringUTF(Common::scm_rev_str.c_str());
 }
 
+JNIEXPORT jstring JNICALL Java_org_dolphinemu_dolphinemu_NativeLibrary_GetGitRevision(JNIEnv* env,
+                                                                                      jobject obj)
+{
+  return env->NewStringUTF(Common::scm_rev_git_str.c_str());
+}
+
 JNIEXPORT void JNICALL Java_org_dolphinemu_dolphinemu_NativeLibrary_SaveScreenShot(JNIEnv* env,
                                                                                    jobject obj)
 {