diff --git a/src/Android.bp b/src/Android.bp
index 7a9187b..b97b66d 100644
--- a/src/Android.bp
+++ b/src/Android.bp
@@ -86,6 +86,10 @@
         "-Werror",
     ],
 
+    ldflags: [
+        "-Wl,--exclude-libs,ALL",
+    ],
+
     product_variables: {
         platform_sdk_version: {
             // API level
@@ -211,14 +215,11 @@
         "libutils",
         "libmedia",
         "libmedia_omx",
-        "libmediaextractor",
         "libaudioclient",
         "libaudiomanager",
         "libbinder",
         "libstagefright",
         "libstagefright_foundation",
-        "libcutils",
-        "libnativewindow",
         "libgui",
         "libdl",
         "libandroid_runtime",
diff --git a/src/android/AudioPlayer_to_android.cpp b/src/android/AudioPlayer_to_android.cpp
index de27cae..d8940b8 100644
--- a/src/android/AudioPlayer_to_android.cpp
+++ b/src/android/AudioPlayer_to_android.cpp
@@ -1697,6 +1697,9 @@
                 pAudioPlayer->mSessionId);
         android::status_t status = pat->initCheck();
         if (status != android::NO_ERROR) {
+            // AudioTracks are meant to be refcounted, so their dtor is protected.
+            static_cast<void>(android::sp<android::AudioTrack>(pat));
+
             SL_LOGE("AudioTrack::initCheck status %u", status);
             // FIXME should return a more specific result depending on status
             result = SL_RESULT_CONTENT_UNSUPPORTED;
diff --git a/src/android/android_AudioSfDecoder.h b/src/android/android_AudioSfDecoder.h
index d62f0ed..0043539 100644
--- a/src/android/android_AudioSfDecoder.h
+++ b/src/android/android_AudioSfDecoder.h
@@ -19,7 +19,6 @@
 
 #include <media/DataSource.h>
 #include <media/MediaSource.h>
-#include <media/MediaExtractor.h>
 #include <media/stagefright/FileSource.h>
 #include <media/stagefright/MediaDefs.h>
 #include <media/stagefright/MetaData.h>
diff --git a/src/itf/IAndroidConfiguration.cpp b/src/itf/IAndroidConfiguration.cpp
index 7bdb235..412ef70 100644
--- a/src/itf/IAndroidConfiguration.cpp
+++ b/src/itf/IAndroidConfiguration.cpp
@@ -23,6 +23,14 @@
 
 #include <android_runtime/AndroidRuntime.h>
 
+extern jmethodID gMidAudioTrackRoutingProxy_ctor;
+extern jmethodID gMidAudioTrackRoutingProxy_release;
+extern jmethodID gMidAudioRecordRoutingProxy_ctor;
+extern jmethodID gMidAudioRecordRoutingProxy_release;
+
+extern jclass gClsAudioTrackRoutingProxy;
+extern jclass gClsAudioRecordRoutingProxy;
+
 static SLresult IAndroidConfiguration_SetConfiguration(SLAndroidConfigurationItf self,
         const SLchar *configKey,
         const void *pConfigValue,
@@ -150,17 +158,11 @@
 
     JNIEnv* j_env = android::AndroidRuntime::getJNIEnv();
 
-    // Get the constructor for (Java) AudioTrackRoutingProxy
-    jclass clsAudioTrackRoutingProxy =
-            j_env->FindClass("android/media/AudioTrackRoutingProxy");
-    jmethodID midAudioTrackRoutingProxy_ctor =
-        j_env->GetMethodID(clsAudioTrackRoutingProxy, "<init>", "(J)V");
-
     j_env->ExceptionClear();
 
     jobject localObjRef =
-        j_env->NewObject(clsAudioTrackRoutingProxy,
-                         midAudioTrackRoutingProxy_ctor,
+        j_env->NewObject(gClsAudioTrackRoutingProxy,
+                         gMidAudioTrackRoutingProxy_ctor,
                          (jlong)pAudioTrack /*audioTrackObjInLong*/);
 
     *proxyObj = j_env->NewGlobalRef(localObjRef);
@@ -226,16 +228,10 @@
 
     JNIEnv* j_env = android::AndroidRuntime::getJNIEnv();
 
-    // Get the constructor for (Java) AudioRecordRoutingProxy
-    jclass clsAudioRecordRoutingProxy =
-            j_env->FindClass("android/media/AudioRecordRoutingProxy");
-    jmethodID midAudioRecordRoutingProxy_ctor =
-        j_env->GetMethodID(clsAudioRecordRoutingProxy, "<init>", "(J)V");
-
     j_env->ExceptionClear();
     jobject localObjRef =
-        j_env->NewObject(clsAudioRecordRoutingProxy,
-                         midAudioRecordRoutingProxy_ctor,
+        j_env->NewObject(gClsAudioRecordRoutingProxy,
+                         gMidAudioRecordRoutingProxy_ctor,
                          (jlong)pAudioRecord /*audioRecordObjInLong*/);
 
     *proxyObj = j_env->NewGlobalRef(localObjRef);
@@ -332,14 +328,8 @@
             {
                 JNIEnv* j_env = android::AndroidRuntime::getJNIEnv();
 
-                // Get the release method for (Java) AudioTrackRoutingProxy
-                jclass clsAudioTrackRoutingProxy =
-                        j_env->FindClass("android/media/AudioTrackRoutingProxy");
-                jmethodID midAudioTrackRoutingProxy_release =
-                    j_env->GetMethodID(clsAudioTrackRoutingProxy, "native_release", "()V");
-
                 j_env->ExceptionClear();
-                j_env->CallVoidMethod(iConfig->mRoutingProxy, midAudioTrackRoutingProxy_release);
+                j_env->CallVoidMethod(iConfig->mRoutingProxy, gMidAudioTrackRoutingProxy_release);
                 if (j_env->ExceptionCheck()) {
                     SL_LOGE("Java exception releasing recorder routing object.");
                     result = SL_RESULT_INTERNAL_ERROR;
@@ -353,14 +343,8 @@
             {
                 JNIEnv* j_env = android::AndroidRuntime::getJNIEnv();
 
-                // Get the release method for (Java) AudioTrackRoutingProxy
-                jclass clsAudioRecordRoutingProxy =
-                        j_env->FindClass("android/media/AudioRecordRoutingProxy");
-                jmethodID midAudioRecordRoutingProxy_release =
-                    j_env->GetMethodID(clsAudioRecordRoutingProxy, "native_release", "()V");
-
                 j_env->ExceptionClear();
-                j_env->CallVoidMethod(iConfig->mRoutingProxy, midAudioRecordRoutingProxy_release);
+                j_env->CallVoidMethod(iConfig->mRoutingProxy, gMidAudioRecordRoutingProxy_release);
                 if (j_env->ExceptionCheck()) {
                     SL_LOGE("Java exception releasing recorder routing object.");
                     result = SL_RESULT_INTERNAL_ERROR;
