diff --git a/hardware.c b/hardware.c
index 8faac07..77cfd8d 100644
--- a/hardware.c
+++ b/hardware.c
@@ -76,13 +76,19 @@
     int status = -EINVAL;
     void *handle = NULL;
     struct hw_module_t *hmi = NULL;
+#ifdef __ANDROID_VNDK__
+    const bool try_system = false;
+#else
+    const bool try_system = true;
+#endif
 
     /*
      * load the symbols resolving undefined symbols before
      * dlopen returns. Since RTLD_GLOBAL is not or'd in with
      * RTLD_NOW the external symbols will not be global
      */
-    if (strncmp(path, "/system/", 8) == 0) {
+    if (try_system &&
+        strncmp(path, HAL_LIBRARY_PATH1, strlen(HAL_LIBRARY_PATH1)) == 0) {
         /* If the library is in system partition, no need to check
          * sphal namespace. Open it with dlopen.
          */
@@ -152,10 +158,12 @@
     if (access(path, R_OK) == 0)
         return 0;
 
+#ifndef __ANDROID_VNDK__
     snprintf(path, path_len, "%s/%s.%s.so",
              HAL_LIBRARY_PATH1, name, subname);
     if (access(path, R_OK) == 0)
         return 0;
+#endif
 
     return -ENOENT;
 }
diff --git a/tests/camera3/Android.mk b/tests/camera3/Android.mk
index 652851a..fbfde68 100644
--- a/tests/camera3/Android.mk
+++ b/tests/camera3/Android.mk
@@ -12,7 +12,7 @@
 LOCAL_C_INCLUDES += \
     system/media/camera/include \
 
-LOCAL_CFLAGS += -Wall -Wextra
+LOCAL_CFLAGS += -Wall -Wextra -Werror
 
 LOCAL_MODULE:= camera3_tests
 LOCAL_MODULE_TAGS := tests
diff --git a/tests/hardware/Android.mk b/tests/hardware/Android.mk
index 9927343..02a3596 100644
--- a/tests/hardware/Android.mk
+++ b/tests/hardware/Android.mk
@@ -4,7 +4,7 @@
 LOCAL_MODULE := static-hal-check
 LOCAL_SRC_FILES := struct-size.cpp struct-offset.cpp struct-last.cpp
 LOCAL_SHARED_LIBRARIES := libhardware
-LOCAL_CFLAGS := -O0
+LOCAL_CFLAGS := -O0 -Wall -Werror
 
 LOCAL_C_INCLUDES += \
     system/media/camera/include
diff --git a/tests/hardware/struct-size.cpp b/tests/hardware/struct-size.cpp
index 232b55d..14a26ef 100644
--- a/tests/hardware/struct-size.cpp
+++ b/tests/hardware/struct-size.cpp
@@ -24,7 +24,7 @@
 #include <hardware/camera_common.h>
 #include <hardware/camera3.h>
 
-template<size_t> static constexpr size_t CheckSizeHelper(size_t, size_t);
+template<size_t> static constexpr size_t CheckSizeHelper(size_t, size_t) __attribute((unused));
 
 template<> constexpr size_t CheckSizeHelper<4>(size_t size32, size_t /* size64 */) {
     return size32;
diff --git a/tests/hwc/Android.mk b/tests/hwc/Android.mk
index 0416ff1..a5f59f1 100644
--- a/tests/hwc/Android.mk
+++ b/tests/hwc/Android.mk
@@ -1,9 +1,9 @@
 LOCAL_PATH:= $(call my-dir)
 
 include $(CLEAR_VARS)
-LOCAL_MODULE := libcnativewindow 
+LOCAL_MODULE := libcnativewindow
 LOCAL_SRC_FILES := cnativewindow.c util.c
-LOCAL_CFLAGS := -Wno-unused-parameter
+LOCAL_CFLAGS := -Wall -Werror -Wno-unused-parameter
 LOCAL_SHARED_LIBRARIES := libEGL libGLESv2 libdl libhardware libnativewindow
 include $(BUILD_STATIC_LIBRARY)
 
@@ -12,5 +12,5 @@
 LOCAL_SRC_FILES := test-arrows.c
 LOCAL_STATIC_LIBRARIES := libcnativewindow
 LOCAL_SHARED_LIBRARIES := libEGL libGLESv2 libdl libhardware libnativewindow
-LOCAL_CFLAGS := -DGL_GLEXT_PROTOTYPES
+LOCAL_CFLAGS := -DGL_GLEXT_PROTOTYPES -Wall -Werror
 include $(BUILD_EXECUTABLE)
diff --git a/tests/hwc/cnativewindow.c b/tests/hwc/cnativewindow.c
index 5b1d78e..65a814d 100644
--- a/tests/hwc/cnativewindow.c
+++ b/tests/hwc/cnativewindow.c
@@ -181,7 +181,7 @@
 	hwc_composer_device_1_t *hwc = win->hwc;
 	hwc_display_contents_1_t *dc = &(win->dc);
 	hwc_layer_1_t *dl = win->dc.hwLayers;
-	int r, i;
+	int r;
 
 	dc->retireFenceFd = -1;
 	dc->outbufAcquireFenceFd = -1;
@@ -462,8 +462,8 @@
 	hw_module_t const* module;
 	framebuffer_device_t *fb = NULL;
 	alloc_device_t *gr;
-	int err, i, n;
-	unsigned usage, format;
+	int err, i;
+	unsigned usage;
 
 	memset(win, 0, sizeof(CNativeWindow));
 
diff --git a/tests/hwc/util.c b/tests/hwc/util.c
index 8931305..51d5974 100644
--- a/tests/hwc/util.c
+++ b/tests/hwc/util.c
@@ -36,7 +36,7 @@
 	m[7] = -1.0;
 	m[8] = 0.0;
 	m[9] = 0.0;
-	m[10] -1.0;
+	m[10] = -1.0;
 	m[11] = 0.0;
 	m[12] = 0.0;
 	m[13] = 0.0;
@@ -111,7 +111,7 @@
 
 int select_config_for_window(EGLDisplay dpy, EGLint *attr,
 	unsigned format, EGLConfig *config) {
-	EGLint R,G,B,A,r,g,b,a;
+	EGLint R,G,B,A;
 	EGLint i, n, max;
 	EGLConfig *cfg;
 
diff --git a/tests/input/evdev/Android.mk b/tests/input/evdev/Android.mk
index 7f62649..b09a8ac 100644
--- a/tests/input/evdev/Android.mk
+++ b/tests/input/evdev/Android.mk
@@ -20,7 +20,7 @@
     libutils
 
 LOCAL_CLANG := true
-LOCAL_CFLAGS += -Wall -Wextra -Wno-unused-parameter
+LOCAL_CFLAGS += -Wall -Wextra -Werror -Wno-unused-parameter
 
 # TestHelpers uses mktemp. As the path is given to TempFile, we can't do too much
 # here (e.g., use mkdtemp first). At least races will lead to an early failure, as
diff --git a/tests/keymaster/Android.mk b/tests/keymaster/Android.mk
index 0c11795..173fccc 100644
--- a/tests/keymaster/Android.mk
+++ b/tests/keymaster/Android.mk
@@ -14,6 +14,8 @@
 
 LOCAL_MODULE := keymaster_test
 
+LOCAL_CFLAGS := -Wall -Werror
+
 LOCAL_MODULE_TAGS := tests
 
 include $(BUILD_NATIVE_TEST)
diff --git a/tests/keymaster/keymaster_test.cpp b/tests/keymaster/keymaster_test.cpp
index b6903f3..e6b41c7 100644
--- a/tests/keymaster/keymaster_test.cpp
+++ b/tests/keymaster/keymaster_test.cpp
@@ -649,9 +649,6 @@
 }
 
 TEST_F(KeymasterTest, GetKeypairPublic_NullKey_Failure) {
-    uint8_t* key_blob;
-    size_t key_blob_length;
-
     uint8_t* x509_data = NULL;
     size_t x509_data_length;
     ASSERT_EQ(-1,
@@ -1033,9 +1030,6 @@
             .padding_type = PADDING_NONE,
     };
 
-    uint8_t* sig;
-    size_t sig_length;
-
     UniqueReadOnlyBlob testData(TEST_RSA_KEY_1, sizeof(TEST_RSA_KEY_1));
     ASSERT_TRUE(testData.get() != NULL);
 
diff --git a/tests/vehicle/Android.mk b/tests/vehicle/Android.mk
index eb41725..ab412fb 100644
--- a/tests/vehicle/Android.mk
+++ b/tests/vehicle/Android.mk
@@ -25,7 +25,7 @@
     liblog \
     libhardware \
 
-LOCAL_CFLAGS += -Wall -Wextra
+LOCAL_CFLAGS += -Wall -Wextra -Werror
 
 LOCAL_MODULE:= vehicle_tests
 LOCAL_MODULE_TAGS := tests
