diff --git a/Android.mk b/Android.mk
index a24d43f..a942b67 100644
--- a/Android.mk
+++ b/Android.mk
@@ -26,6 +26,7 @@
 LOCAL_SRC_FILES := $(filter-out %/Libcore.java, $(LOCAL_SRC_FILES))
 
 LOCAL_SRC_FILES += $(call all-java-files-under, android/main/java)
+LOCAL_SDK_VERSION := 16
 
 LOCAL_JARJAR_RULES := ${LOCAL_PATH}/jarjar-rules.txt
 include $(BUILD_JAVA_LIBRARY)
diff --git a/android/main/java/libcore/util/Libcore.java b/android/main/java/libcore/util/Libcore.java
index e617b81..cd32c17 100644
--- a/android/main/java/libcore/util/Libcore.java
+++ b/android/main/java/libcore/util/Libcore.java
@@ -19,6 +19,8 @@
 import javax.net.ssl.SSLSocket;
 import java.io.File;
 import java.io.IOException;
+import java.io.OutputStream;
+import java.lang.reflect.Constructor;
 import java.lang.reflect.InvocationTargetException;
 import java.lang.reflect.Method;
 import java.net.Socket;
@@ -27,6 +29,8 @@
 import java.net.URISyntaxException;
 import java.net.URL;
 import java.nio.ByteOrder;
+import java.util.zip.Deflater;
+import java.util.zip.DeflaterOutputStream;
 
 /**
  * APIs for interacting with Android's core library. The main purpose of this
@@ -47,6 +51,7 @@
     private static final Method setHostname;
     private static final Method setNpnProtocols;
     private static final Method getNpnSelectedProtocol;
+    private static final Constructor<DeflaterOutputStream> deflaterOutputStreamConstructor;
 
     static {
         try {
@@ -59,6 +64,8 @@
             setHostname = openSslSocketClass.getMethod("setHostname", String.class);
             setNpnProtocols = openSslSocketClass.getMethod("setNpnProtocols", byte[].class);
             getNpnSelectedProtocol = openSslSocketClass.getMethod("getNpnSelectedProtocol");
+            deflaterOutputStreamConstructor = DeflaterOutputStream.class.getConstructor(
+                   new Class[] { OutputStream.class, Deflater.class, boolean.class });
         } catch (ClassNotFoundException cnfe) {
             throw new RuntimeException(cnfe);
         } catch (NoSuchMethodException nsme) {
@@ -66,6 +73,19 @@
         }
     }
 
+    public static DeflaterOutputStream newDeflaterOutputStream(
+            OutputStream os, Deflater deflater, boolean syncFlush) {
+        try {
+            return deflaterOutputStreamConstructor.newInstance(os, deflater, syncFlush);
+        } catch (InstantiationException e) {
+            throw new RuntimeException("Unknown DeflaterOutputStream implementation.");
+        } catch (IllegalAccessException e) {
+            throw new RuntimeException("Unknown DeflaterOutputStream implementation.");
+        } catch (InvocationTargetException e) {
+            throw new RuntimeException("Unknown DeflaterOutputStream implementation.");
+        }
+    }
+
     public static void makeTlsTolerant(SSLSocket socket, String socketHost, boolean tlsTolerant) {
         if (!tlsTolerant) {
             socket.setEnabledProtocols(new String[] {"SSLv3"});
diff --git a/src/main/java/libcore/net/spdy/SpdyWriter.java b/src/main/java/libcore/net/spdy/SpdyWriter.java
index 5bc4644..28490ac 100644
--- a/src/main/java/libcore/net/spdy/SpdyWriter.java
+++ b/src/main/java/libcore/net/spdy/SpdyWriter.java
@@ -24,6 +24,8 @@
 import java.util.zip.Deflater;
 import java.util.zip.DeflaterOutputStream;
 
+import static libcore.util.Libcore.newDeflaterOutputStream;
+
 /**
  * Write version 2 SPDY frames.
  */
@@ -46,7 +48,7 @@
         deflater.setDictionary(SpdyReader.DICTIONARY);
         nameValueBlockBuffer = new ByteArrayOutputStream();
         nameValueBlockOut = new DataOutputStream(
-                new DeflaterOutputStream(nameValueBlockBuffer, deflater, true));
+               newDeflaterOutputStream(nameValueBlockBuffer, deflater, true));
     }
 
     public void synStream() throws IOException {
diff --git a/src/main/java/libcore/util/Libcore.java b/src/main/java/libcore/util/Libcore.java
index 0d7db0d..4798004 100644
--- a/src/main/java/libcore/util/Libcore.java
+++ b/src/main/java/libcore/util/Libcore.java
@@ -18,6 +18,7 @@
 
 import java.io.File;
 import java.io.IOException;
+import java.io.OutputStream;
 import java.io.UnsupportedEncodingException;
 import java.lang.reflect.InvocationTargetException;
 import java.lang.reflect.Method;
@@ -29,6 +30,8 @@
 import java.nio.ByteOrder;
 import java.util.ArrayList;
 import java.util.List;
+import java.util.zip.Deflater;
+import java.util.zip.DeflaterOutputStream;
 import javax.net.ssl.SSLSocket;
 import org.eclipse.jetty.npn.NextProtoNego;
 
@@ -72,6 +75,11 @@
         }
     }
 
+    public static DeflaterOutputStream newDeflaterOutputStream(
+            OutputStream os, Deflater deflater, boolean syncFlush) {
+        return new DeflaterOutputStream(os, deflater, syncFlush);
+    }
+
     public static void makeTlsTolerant(SSLSocket socket, String socketHost, boolean tlsTolerant) {
         if (!tlsTolerant) {
             socket.setEnabledProtocols(new String[] {"SSLv3"});
