diff --git a/src/build-framework-gen.xml b/src/build-framework-gen.xml
index c23ba7e..674ab30 100644
--- a/src/build-framework-gen.xml
+++ b/src/build-framework-gen.xml
@@ -14,6 +14,7 @@
   <property name="android-201-jar" value="android_v201.jar"/>
   <property name="android-21-jar" value="android_v21.jar"/>
   <property name="android-22-jar" value="android_v22.jar"/>
+  <property name="android-23-jar" value="android_v23.jar"/>
 
   <!-- property name="framework.mock-bin" value=see build.properties -->
   <!-- property name="framework.mock-jar" value=see build.properties -->
@@ -43,6 +44,7 @@
     <generate-framework-mocks api-jar-file="${android-201-jar}" api-level="6"/>
     <generate-framework-mocks api-jar-file="${android-21-jar}" api-level="7"/>
     <generate-framework-mocks api-jar-file="${android-22-jar}" api-level="8"/>
+  	<generate-framework-mocks api-jar-file="${android-23-jar}" api-level="9"/>
     <jar destfile="${framework.mock-bin}/${framework.mock-jar}"
          basedir="${framework.mock-staging}" includes="**/*.class" index="true"/>
   </target>
diff --git a/src/com/google/android/testing/mocking/FileUtils.java b/src/com/google/android/testing/mocking/FileUtils.java
index f759c57..b03a2c5 100644
--- a/src/com/google/android/testing/mocking/FileUtils.java
+++ b/src/com/google/android/testing/mocking/FileUtils.java
@@ -62,7 +62,9 @@
     if (!filename.endsWith(".class")) {
       throw new IllegalArgumentException("Argument provided is not a class filename: " + filename);
     }
-    return filename.replace(File.separatorChar, '.').substring(0, filename.length() - 6);
+    // On non-Linux, files use the native separator, but jar entries use /... sigh
+    return filename.replace(File.separatorChar, '.').replace('/', '.')
+        .substring(0, filename.length() - 6);
   }
 
   static void saveClassToFolder(GeneratedClassFile clazz, String outputFolderName)
diff --git a/src/com/google/android/testing/mocking/SdkVersion.java b/src/com/google/android/testing/mocking/SdkVersion.java
index ee61707..ed1424b 100644
--- a/src/com/google/android/testing/mocking/SdkVersion.java
+++ b/src/com/google/android/testing/mocking/SdkVersion.java
@@ -27,7 +27,7 @@
  */
 public enum SdkVersion {
   UNKNOWN("", -1), CUPCAKE("v15", 3), DONUT("v16", 4), ECLAIR_0_1("v201", 6),
-  ECLAIR_MR1("v21", 7), FROYO("v22", 8);
+  ECLAIR_MR1("v21", 7), FROYO("v22", 8), GINGERBREAD("v23", 9);
 
   private static final int SDK_VERSION;
 
diff --git a/tests/com/google/android/testing/mocking/AndroidFrameworkMockGeneratorTest.java b/tests/com/google/android/testing/mocking/AndroidFrameworkMockGeneratorTest.java
index 813063f..b43fa5d 100644
--- a/tests/com/google/android/testing/mocking/AndroidFrameworkMockGeneratorTest.java
+++ b/tests/com/google/android/testing/mocking/AndroidFrameworkMockGeneratorTest.java
@@ -22,6 +22,7 @@
 
 import junit.framework.TestCase;
 
+import java.io.File;
 import java.io.IOException;
 import java.util.ArrayList;
 import java.util.Arrays;
@@ -123,7 +124,8 @@
     for (SdkVersion version : SdkVersion.getAllVersions()) {
       getMockGenerator();
       assertEquals("lib/android/android_" + version.getVersionName() + ".jar",
-          AndroidFrameworkMockGenerator.getJarFileNameForVersion(version));
+          AndroidFrameworkMockGenerator.getJarFileNameForVersion(version)
+              .replace('\\', '/'));
     }
   }
 
@@ -151,7 +153,9 @@
         "v21.genmocks.java.util.VectorDelegateSubclass",
         "v21.genmocks.java.util.VectorDelegateInterface",
         "v22.genmocks.java.util.VectorDelegateSubclass",
-        "v22.genmocks.java.util.VectorDelegateInterface"
+        "v22.genmocks.java.util.VectorDelegateInterface",
+        "v23.genmocks.java.util.VectorDelegateSubclass",
+        "v23.genmocks.java.util.VectorDelegateInterface"
     };
     assertEquals(expectedClassNames.length, mocks.size());
     for (int i = 0; i < mocks.size(); ++i) {
diff --git a/tests/com/google/android/testing/mocking/FileUtilsTest.java b/tests/com/google/android/testing/mocking/FileUtilsTest.java
index b1058e3..17c8888 100644
--- a/tests/com/google/android/testing/mocking/FileUtilsTest.java
+++ b/tests/com/google/android/testing/mocking/FileUtilsTest.java
@@ -17,6 +17,7 @@
 
 import junit.framework.TestCase;
 
+import java.io.File;
 import java.util.Vector;
 
 /**
@@ -24,14 +25,18 @@
  */
 public class FileUtilsTest extends TestCase {
   public void testGetFilenameForClass() {
-    assertEquals("java/lang/Object.class", FileUtils.getFilenameFor(Object.class.getName()));
-    assertEquals("com/google/android/testing/mocking/FileUtilsTest$InnerClass.class",
+    assertEquals(convertPathToNative("java/lang/Object.class"),
+        FileUtils.getFilenameFor(Object.class.getName()));
+    assertEquals(convertPathToNative(
+            "com/google/android/testing/mocking/FileUtilsTest$InnerClass.class"),
         FileUtils.getFilenameFor(InnerClass.class.getName()));
   }
 
   public void testGetClassNameFor() {
-    assertEquals("java/lang/Object.class", FileUtils.getFilenameFor(Object.class.getName()));
-    assertEquals("com/google/android/testing/mocking/FileUtilsTest$InnerClass.class",
+    assertEquals(convertPathToNative("java/lang/Object.class"),
+        FileUtils.getFilenameFor(Object.class.getName()));
+    assertEquals(convertPathToNative(
+            "com/google/android/testing/mocking/FileUtilsTest$InnerClass.class"),
         FileUtils.getFilenameFor(InnerClass.class.getName()));
   }
 
@@ -65,6 +70,10 @@
         FileUtils.getSubclassNameFor(Vector.class, SdkVersion.UNKNOWN));
   }
 
+  private String convertPathToNative(String path) {
+    return path.replace('/', File.separatorChar).replace('\\', File.separatorChar);
+  }
+
   class InnerClass {
   }
 }
diff --git a/tests/com/google/android/testing/mocking/SdkVersionTest.java b/tests/com/google/android/testing/mocking/SdkVersionTest.java
index eb7c764..93fd17c 100644
--- a/tests/com/google/android/testing/mocking/SdkVersionTest.java
+++ b/tests/com/google/android/testing/mocking/SdkVersionTest.java
@@ -28,7 +28,7 @@
   public void testGetAllVersions() {
     List<SdkVersion> versions = Arrays.asList(SdkVersion.getAllVersions());
     List<SdkVersion> values = Arrays.asList(SdkVersion.values());
-    assertEquals(5, versions.size());
+    assertEquals(6, versions.size());
     assertTrue(values.containsAll(versions));
     assertFalse(versions.contains(SdkVersion.UNKNOWN));
   }
@@ -39,9 +39,10 @@
     assertEquals("v201", SdkVersion.ECLAIR_0_1.getVersionName());
     assertEquals("v21", SdkVersion.ECLAIR_MR1.getVersionName());
     assertEquals("v22", SdkVersion.FROYO.getVersionName());
+    assertEquals("v23", SdkVersion.GINGERBREAD.getVersionName());
     assertEquals("", SdkVersion.UNKNOWN.getVersionName());
     assertEquals("Unknown new SDK has been added, update this test",
-        6, SdkVersion.values().length);
+        7, SdkVersion.values().length);
   }
 
   public void testGetPackagePrefix() {
@@ -50,9 +51,10 @@
     assertEquals("v201.", SdkVersion.ECLAIR_0_1.getPackagePrefix());
     assertEquals("v21.", SdkVersion.ECLAIR_MR1.getPackagePrefix());
     assertEquals("v22.", SdkVersion.FROYO.getPackagePrefix());
+    assertEquals("v23.", SdkVersion.GINGERBREAD.getPackagePrefix());
     assertEquals("", SdkVersion.UNKNOWN.getPackagePrefix());
     assertEquals("Unknown new SDK has been added, update this test",
-        6, SdkVersion.values().length);
+        7, SdkVersion.values().length);
   }
 
   public void testGetCurrentVersion() {
@@ -66,8 +68,10 @@
     assertEquals(SdkVersion.ECLAIR_0_1, SdkVersion.getVersionFor(6));
     assertEquals(SdkVersion.ECLAIR_MR1, SdkVersion.getVersionFor(7));
     assertEquals(SdkVersion.FROYO, SdkVersion.getVersionFor(8));
+    assertEquals(SdkVersion.GINGERBREAD, SdkVersion.getVersionFor(9));
     assertEquals(SdkVersion.UNKNOWN, SdkVersion.getVersionFor(-1));
-    for (int i = 9; i < 50; ++i) {
+    // All likely future version numbers...  Modify this when a new version is added
+    for (int i = 10; i < 50; ++i) {
       assertEquals("Unknown new SDK has been added, update this test",
           SdkVersion.UNKNOWN, SdkVersion.getVersionFor(i));
     }
