diff --git a/src/tools/android/java/com/google/devtools/build/android/incrementaldeployment/IncrementalClassLoader.java b/src/tools/android/java/com/google/devtools/build/android/incrementaldeployment/IncrementalClassLoader.java index fb023f719c2fd9..a1f5c787ba4a30 100644 --- a/src/tools/android/java/com/google/devtools/build/android/incrementaldeployment/IncrementalClassLoader.java +++ b/src/tools/android/java/com/google/devtools/build/android/incrementaldeployment/IncrementalClassLoader.java @@ -43,6 +43,11 @@ public Class findClass(String className) throws ClassNotFoundException { return delegateClassLoader.findClass(className); } + @Override + public String findLibrary(String name) { + return delegateClassLoader.findLibrary(name); + } + /** * A class loader whose only purpose is to make {@code findClass()} public. */ @@ -56,6 +61,20 @@ private DelegateClassLoader( public Class findClass(String name) throws ClassNotFoundException { return super.findClass(name); } + + @Override + public String findLibrary(String name) { + String foundLib = super.findLibrary(name); + + for (ClassLoader parent = getParent(); + foundLib == null && parent != null; + parent = parent.getParent()) { + if (parent instanceof BaseDexClassLoader) { + foundLib = ((BaseDexClassLoader) parent).findLibrary(name); + } + } + return foundLib; + } } private static DelegateClassLoader createDelegateClassLoader(