diff --git a/platform_tools/android/apps/skqp/src/main/assets/skqp/KnownGpuUnitTests.txt b/platform_tools/android/apps/skqp/src/main/assets/skqp/KnownGpuUnitTests.txt
index 6109a76..db7b8d3 100644
--- a/platform_tools/android/apps/skqp/src/main/assets/skqp/KnownGpuUnitTests.txt
+++ b/platform_tools/android/apps/skqp/src/main/assets/skqp/KnownGpuUnitTests.txt
@@ -64,7 +64,6 @@
 ImageReadPixels_Gpu
 ImageScalePixels_Gpu
 InitialTextureClear
-IntTexture
 LazyProxyReleaseTest
 LazyProxyTest
 OnFlushCallbackTest
diff --git a/platform_tools/android/apps/skqp/src/main/java/org/skia/skqp/SkQPRunner.java b/platform_tools/android/apps/skqp/src/main/java/org/skia/skqp/SkQPRunner.java
index b2ec2de..ec08b25 100644
--- a/platform_tools/android/apps/skqp/src/main/java/org/skia/skqp/SkQPRunner.java
+++ b/platform_tools/android/apps/skqp/src/main/java/org/skia/skqp/SkQPRunner.java
@@ -61,15 +61,18 @@
         mTests = new Description[this.testCount()];
         mShouldSkipTest = new boolean[mTests.length]; // = {false, false, ....};
         int index = 0;
+        String badIdentifiers = "[^A-Za-z0-9_]";
         for (int backend = 0; backend < impl.mBackends.length; backend++) {
+            String backendName = impl.mBackends[backend];
+            assert(!backendName.matches("^[0-9]"));
             for (int gm = 0; gm < impl.mGMs.length; gm++) {
-                mTests[index++] = Description.createTestDescription(SkQPRunner.class,
-                    impl.mBackends[backend] + "_" + impl.mGMs[gm]);
+                String name = (backendName + "_" + impl.mGMs[gm]).replaceAll(badIdentifiers, "_");
+                mTests[index++] = Description.createTestDescription(SkQPRunner.class, name);
             }
         }
         for (int unitTest = 0; unitTest < impl.mUnitTests.length; unitTest++) {
-            mTests[index++] = Description.createTestDescription(SkQPRunner.class,
-                    "unitTest_" + impl.mUnitTests[unitTest]);
+            String name = ("unitTest_" + impl.mUnitTests[unitTest]).replaceAll(badIdentifiers, "_");
+            mTests[index++] = Description.createTestDescription(SkQPRunner.class, name);
         }
         assert(index == mTests.length);
         mShouldRunTestCount = mTests.length;
