在使用 Java 虚拟机时,我们经常自定义继承自 ClassLoader 的类加载器。然后通过 defineClass 方法来从一个二进制流中加载 Class。而在 Android 中我们无法这么使用,Android 中 ClassLoader 的 defineClass 方法具体是调用 VMClassLoader 的 defineClass 本地静态方法。而这个本地方法什么都没做,只是抛出了一个 “UnsupportedOperationException” 异常。 既然在 Dalvik 虚拟机里,ClassLoader 不好用,那么 Android 官方为了解决这个问题,帮我们从 ClassLoader 中派生出了两个类:DexClassLoader 和 PathClassLoader。咋一看两者很像,那么究竟二者在使用上面有何不同,这里我和大家一起探讨一下。