1.pathClass Loader 和 Dex ClassLoader

在Android 5.0以下的版本中,两者之间的区别为:

  1. DexClassLoader:可加载jar、apk和dex」可以从SD卡中加载
  2. PathClassLoader:只能加载已安裝到系統中(即/data/app目录下)的apk文件但是随着Android版本的升级,到Android 5.0及以后就已经不是这样了。 

 在Android 5.0 --8.0以下的版本中,两者之间的区别为:

使用了ART下,加载方式发生了截然不同的变化,在安装时对 dex 文件执行dex2oat(AOT 提前编译操作),编译为OAT(实际上是ELF文件)可执行文件(机器码)。而如果在加载时,无法成功加载oat文件,仍然会尝试从原dex中加载,因此ART下,PathclassLoader 与 DexClassLoader 都能加载任意指定的dex,以及jar、zip、apk中的classes.dex。但是从原dex加载会导致无法dex2oat,加快加载速度,降低运行效率。

DexClassLoader:可加载jar、apk和dex,可以从SD卡中加载

PathClassLoader :可加载jar、apk和dex,可以从SD卡中加载,但会导致无法进行dex2oat

操作

在Android 8.1 以上

两者完全一样,没区别。--- android N 使用解释,ART,

03-05 14:28