DexClassLoader】的更多相关文章

做Android插件框架时,经常会用到dex的动态加载,就要直接或间接的使用DexClassLoader,在new DexClassLoader的时候Android系统做了很多工作,下面我们详细分析一下: public class DexClassLoader extends BaseDexClassLoader { public DexClassLoader(String dexPath, String optimizedDirectory, String libraryPath, Class…
Android在apk文件dex文件是java编译出来.class次打包,当然在打包之前会利用自己的协议做一些数据处理,比如优化函数表和变量表.在java程序中是使用classloader来载入这些编译生成的.class文件,然而在android程序中是通过DexClassLoader来装载这些文件的.这里我们就能够通过DexClassLoader在程序A里面动态装载程序B中的类,而且来调用B程序中的方法. 1.首先先建立一个普通的Androidproject,在这个project中定义一个叫做…
在java环境中,有个概念叫做"类装载器",其作用是动态装载Class文件.标准的java SDK中有一个ClassLoader类,借助它可以装载 想要的Class文件,每个Classoader对象在初始化时必须指定Class文件的路径. 使用类加载器的原应: import中所引用的类文件有两个特点: 必须存在于本地 当程序运行是需要该类时,内部类装载器会自动装载该类,这对程序员来讲是透明的 即程序原不知道该过程 编译时必须在现场,负责编译过程会因为找不到引用文件而不能正常编译. 但在…
声明:此篇文章借鉴<android内核剖析>整理得来. 一.装载器简介 “类装载器”(ClassLoader),顾名思义,就是用来动态装载class文件的.标准的Java SDK中有个ClassLoader类,借助此类可以装载需要的class文件,前提是 ClassLoader类初始化必须制定class文件的路径. import关键字引用的类文件和ClassLoader动态加载类的区别: import引用类的两个特点:1.必须存在于本地,当程序运行该类时,内部类装载器会自动装载该类. 2.编译…
DexClassLoader加载自己写的第三方jar包,例如金山毒霸需要加载ksremote.jar. 现在将DexClassLoader加载jar包成果分享一下.   1.新建Android工程,封装功能java类.   2.选中需要导出的文件夹,右键选中“Export”->"Java(Jar file)"导出jar文件.   3.使用dx工具将jar包转换为android 字节码.      命令:dx  --dex --Output=xx.jar    hello.jar …
Android的ClassLoader体系 在Android中可以跟java一样实现动态加载jar,但是Android使用Dalvik VM,不能直接加载java打包jar的byte code,需要通过dx工具来优化Dalvik byte code Android在API中给出可动态加载的有:DexClassLoader 和 PathClassLoader. DexClassLoader:可加载jar.apk和dex,可以从SD卡中加载PathClassLoader:只能加载已安装到系统中(即/…
0x00 在上一篇文章apk安装和优化原理,在最后我们分析了DexClassLoader和PathClassLoader的构造函数的不同. PathClassLoader最后调用的是new DexFile(pathFile),而DexClassLoader调用的是DexFile.loadDex(dexPathList[i], outputName, 0). 0x01 new DexFile(pathFile)相应的代码位于libcore\dalvik\src\main\java\dalvik\s…
0x00 在DexClassLoader和PathClassLoader载入Dex流程一文中,我们分析了dex文件怎样形成了DexFile结构体.本文中解说类载入机制,实际上就是生成ClassObject对象. 我们以DexClassLoader为例.解说类载入机制,PathClassLoader是一样的. 我们在载入类时一般会调用loadClass,那么我们就从loadClass来開始分析. 0x01 DexClassLoader类没有loadClass方法.所以调用的是父类ClassLoad…
Android插件化(二):使用DexClassLoader动态载入assets中的apk 简单介绍 上一篇博客讲到.我们能够使用MultiDex.java载入离线的apk文件.须要注意的是,apk中的类是载入到当前的PathClassLoader其中的,假设apk文件过多.可能会出现ANR的情况.那么.我们能不能使用DexClassLoader载入apk呢?当然是能够的! 首先看一下Doc文档. A class loader that loads classes from .jar and .…
转载自:http://www.blogfshare.com/dexclassloader.html 看到原来有把原始的dex文件加密保存,然后解密后使用DexClassLoader加载文件的方法,就来分析下DexClassLoader的加载流程: 源码地址:http://androidxref.com/4.4_r1/xref/libcore/dalvik/src/main/java/dalvik/system/DexClassLoader.java 该class加载器是加载包含classes.d…