diff --git a/vndk/tools/definition-tool/tests/test_ndk_libs.py b/vndk/tools/definition-tool/tests/test_ndk_libs.py
index 00a4c18..eca9180 100755
--- a/vndk/tools/definition-tool/tests/test_ndk_libs.py
+++ b/vndk/tools/definition-tool/tests/test_ndk_libs.py
@@ -67,36 +67,6 @@
         # LL-NDK is not SP-NDK.
         self.assertFalse(NDK_LIBS.is_sp_ndk('/system/lib/libc.so'))
 
-    def test_is_hlndk(self):
-        self.assertTrue(NDK_LIBS.is_hl_ndk('/system/lib/libOpenMAXAL.so'))
-        self.assertTrue(NDK_LIBS.is_hl_ndk('/system/lib/libOpenSLES.so'))
-        self.assertTrue(NDK_LIBS.is_hl_ndk('/system/lib/libandroid.so'))
-        self.assertTrue(NDK_LIBS.is_hl_ndk('/system/lib/libcamera2ndk.so'))
-        self.assertTrue(NDK_LIBS.is_hl_ndk('/system/lib/libjnigraphics.so'))
-        self.assertTrue(NDK_LIBS.is_hl_ndk('/system/lib/libmediandk.so'))
-
-        self.assertTrue(NDK_LIBS.is_hl_ndk('/system/lib64/libOpenMAXAL.so'))
-        self.assertTrue(NDK_LIBS.is_hl_ndk('/system/lib64/libOpenSLES.so'))
-        self.assertTrue(NDK_LIBS.is_hl_ndk('/system/lib64/libandroid.so'))
-        self.assertTrue(NDK_LIBS.is_hl_ndk('/system/lib64/libcamera2ndk.so'))
-        self.assertTrue(NDK_LIBS.is_hl_ndk('/system/lib64/libjnigraphics.so'))
-        self.assertTrue(NDK_LIBS.is_hl_ndk('/system/lib64/libmediandk.so'))
-
-        # LL-NDK and SP-NDK are not HL-NDK.
-        self.assertFalse(NDK_LIBS.is_hl_ndk('/system/lib/libc.so'))
-        self.assertFalse(NDK_LIBS.is_hl_ndk('/system/lib/libEGL.so'))
-        self.assertFalse(NDK_LIBS.is_hl_ndk('/system/lib/libGLESv1_CM.so'))
-        self.assertFalse(NDK_LIBS.is_hl_ndk('/system/lib/libGLESv2.so'))
-        self.assertFalse(NDK_LIBS.is_hl_ndk('/system/lib/libGLESv3.so'))
-        self.assertFalse(NDK_LIBS.is_hl_ndk('/system/lib/libvulkan.so'))
-
-        self.assertFalse(NDK_LIBS.is_hl_ndk('/system/lib64/libc.so'))
-        self.assertFalse(NDK_LIBS.is_hl_ndk('/system/lib64/libEGL.so'))
-        self.assertFalse(NDK_LIBS.is_hl_ndk('/system/lib64/libGLESv1_CM.so'))
-        self.assertFalse(NDK_LIBS.is_hl_ndk('/system/lib64/libGLESv2.so'))
-        self.assertFalse(NDK_LIBS.is_hl_ndk('/system/lib64/libGLESv3.so'))
-        self.assertFalse(NDK_LIBS.is_hl_ndk('/system/lib64/libvulkan.so'))
-
     def test_is_ndk(self):
         # LL-NDK
         self.assertTrue(NDK_LIBS.is_ndk('/system/lib/libc.so'))
@@ -128,23 +98,6 @@
         self.assertTrue(NDK_LIBS.is_ndk('/system/lib64/libGLESv2.so'))
         self.assertTrue(NDK_LIBS.is_ndk('/system/lib64/libGLESv3.so'))
 
-        # HL-NDK
-        self.assertTrue(NDK_LIBS.is_ndk('/system/lib/libOpenMAXAL.so'))
-        self.assertTrue(NDK_LIBS.is_ndk('/system/lib/libOpenSLES.so'))
-        self.assertTrue(NDK_LIBS.is_ndk('/system/lib/libandroid.so'))
-        self.assertTrue(NDK_LIBS.is_ndk('/system/lib/libcamera2ndk.so'))
-        self.assertTrue(NDK_LIBS.is_ndk('/system/lib/libjnigraphics.so'))
-        self.assertTrue(NDK_LIBS.is_ndk('/system/lib/libmediandk.so'))
-        self.assertTrue(NDK_LIBS.is_ndk('/system/lib/libvulkan.so'))
-
-        self.assertTrue(NDK_LIBS.is_ndk('/system/lib64/libOpenMAXAL.so'))
-        self.assertTrue(NDK_LIBS.is_ndk('/system/lib64/libOpenSLES.so'))
-        self.assertTrue(NDK_LIBS.is_ndk('/system/lib64/libandroid.so'))
-        self.assertTrue(NDK_LIBS.is_ndk('/system/lib64/libcamera2ndk.so'))
-        self.assertTrue(NDK_LIBS.is_ndk('/system/lib64/libjnigraphics.so'))
-        self.assertTrue(NDK_LIBS.is_ndk('/system/lib64/libmediandk.so'))
-        self.assertTrue(NDK_LIBS.is_ndk('/system/lib64/libvulkan.so'))
-
     def test_classify(self):
         self.assertEqual(NDK_LIBS.NOT_NDK,
                          NDK_LIBS.classify('/system/lib/libfoo.so'))
@@ -152,8 +105,6 @@
                          NDK_LIBS.classify('/system/lib/libc.so'))
         self.assertEqual(NDK_LIBS.SP_NDK,
                          NDK_LIBS.classify('/system/lib/libEGL.so'))
-        self.assertEqual(NDK_LIBS.HL_NDK,
-                         NDK_LIBS.classify('/system/lib/libmediandk.so'))
 
         self.assertEqual(NDK_LIBS.NOT_NDK,
                          NDK_LIBS.classify('/system/lib64/libfoo.so'))
@@ -161,8 +112,6 @@
                          NDK_LIBS.classify('/system/lib64/libc.so'))
         self.assertEqual(NDK_LIBS.SP_NDK,
                          NDK_LIBS.classify('/system/lib64/libEGL.so'))
-        self.assertEqual(NDK_LIBS.HL_NDK,
-                         NDK_LIBS.classify('/system/lib64/libmediandk.so'))
 
 
 if __name__ == '__main__':
diff --git a/vndk/tools/definition-tool/vndk_definition_tool.py b/vndk/tools/definition-tool/vndk_definition_tool.py
index 4dc2399..83319ee 100755
--- a/vndk/tools/definition-tool/vndk_definition_tool.py
+++ b/vndk/tools/definition-tool/vndk_definition_tool.py
@@ -533,7 +533,6 @@
     NOT_NDK = 0
     LL_NDK = 1
     SP_NDK = 2
-    HL_NDK = 3
 
     LL_NDK_LIB_NAMES = (
         'libc.so',
@@ -556,15 +555,6 @@
         'libvulkan.so',
     )
 
-    HL_NDK_LIB_NAMES = (
-        'libOpenMAXAL.so',
-        'libOpenSLES.so',
-        'libandroid.so',
-        'libcamera2ndk.so',
-        'libjnigraphics.so',
-        'libmediandk.so',
-    )
-
     @staticmethod
     def _create_pattern(names):
         return '|'.join('(?:^\\/system\\/lib(?:64)?\\/' + re.escape(i) + '$)'
@@ -583,10 +573,8 @@
     def __init__(self):
         self.ll_ndk_patterns = self._compile_path_matcher(self.LL_NDK_LIB_NAMES)
         self.sp_ndk_patterns = self._compile_path_matcher(self.SP_NDK_LIB_NAMES)
-        self.hl_ndk_patterns = self._compile_path_matcher(self.HL_NDK_LIB_NAMES)
         self.ndk_patterns = self._compile_multi_path_matcher(
-                (self.LL_NDK_LIB_NAMES, self.SP_NDK_LIB_NAMES,
-                 self.HL_NDK_LIB_NAMES))
+                (self.LL_NDK_LIB_NAMES, self.SP_NDK_LIB_NAMES))
 
     def is_ll_ndk(self, path):
         return self.ll_ndk_patterns.match(path)
@@ -594,9 +582,6 @@
     def is_sp_ndk(self, path):
         return self.sp_ndk_patterns.match(path)
 
-    def is_hl_ndk(self, path):
-        return self.hl_ndk_patterns.match(path)
-
     def is_ndk(self, path):
         return self.ndk_patterns.match(path)
 
@@ -706,10 +691,6 @@
     def is_sp_ndk(self):
         return self._ndk_classification == NDKLibDict.SP_NDK
 
-    @property
-    def is_hl_ndk(self):
-        return self._ndk_classification == NDKLibDict.HL_NDK
-
     def add_dep(self, dst, ty):
         self._deps[ty].add(dst)
         dst._users[ty].add(self)
