热修复热部署动态加载

在Java中,要加载一个类需要用到ClassLoader
Android中有三个ClassLoader分别为URLClassLoader、PathClassLoader、DexClassLoader

URLClassLoader只能用于加载jar文件,但是由于dalvik不能直接识别jar,所以在android中无法使用加载器
PathClassLoader它只能加载已经安装的apk。PathClassLoader只会去读取data/dalvik-cache目录下的dex文件。他会在这个目录下生产一个名为data@app@com.hujiang.xxx-1.apk@classes.dex的ODEX文件。在使用PathClassLoader加载apk时,它就会去这个文件夹中找相应的ODEX文件,如果apk没有安装,自然会报ClassNotFoundException。
DexClassLoader是最理想的加载器。它的构造函数包含四个参数,分别为:
1、dexPath,指目标所在的APK或jar文件的路径,类装载器将从该路径中寻找指定的目标,该类必须是jar或dex的全路径。如果包含多个路径,路径之间必须使用特定的分隔符,特定的用System.Poperty(“”path.separor“”)获得。
2、dexOUTputDir,由于dex文件被包含在APK或者Jar文件中因此在装载目标类的时候解压出dex文件,该参数就是制定解压出的dex文件存放的路径。在Android系统,一个应用程序一般对应一个LINUX用户ID,应用程序仅对属于自己的数据目录路径有写的权限,因此,该参数可以使用改程序的数据路径。
3、libPath指目标中所使用的C/C++库存放的路径
4、classload是指装载器的父装载器一般为当前类的装载器

最开始将资源文件(res)编译成R.java
assets资源文件 通过assetsmani访问(aapt资源文件打包)
complile
dex
签名打包成Apk

  • 今天我又在焦虑什么

    时间过得好快啊,上一次写日记好像还是一个月前,这一个月又发生了太多事情 首先说一下,为什么突然更新?原因还是受到了闺蜜的刺激,发现她生长得好快,思想,学习都成长得太快,我像一个小绿苗瑟瑟发抖起来。于是,赶紧记录下这个事情,复盘下我的生...

    今天我又在焦虑什么
  • 过春天

    又要开始我罗里吧嗦的影评了。 《过春天》 看完心情涩涩的,心头有股浓烈的怅然感。 影片一开始就很吸引我,主要是置景,灯光都太美了。 起笔的时候我写,佩佩是个单亲家庭的女孩……忽然发现这样的措辞太陈旧了,太死板了。太不带有我想要的感情了...

    过春天
  • 四月份要画的画
  • 一周书目总结

    这周看了部电影《调音师》、《小飞象》、李安的《推手》,张爱玲的小说《半生缘》,还看了一部昆曲《南柯梦》。

    一周书目总结
  • AsyncTask阅读笔记(二)

    轮廓提取的两种方式:1.首先进行二值分割,遍历所有点,求出目标点的四个连通域,判断是否为255(白色),若4个连通域全部为255则置为0(黑色)遍历一遍,可将轮廓提取出来,但并未进行轮廓计数。若想要轮廓计数,需要再次遍历图像像素点,进...

    AsyncTask阅读笔记(二)
  • 欢迎来到真实世界

    I‘m coming back. 我过了两年的梦幻生活,每天都过得很安逸,沉浸在很多我架构的世界中,观察世界,勾画世界,用我的笔创造很多。 很多原因。 我又回到了真实世界。 我以为我不会回到原来的岗位,很多东西都删除得精光,之前写的博...

    欢迎来到真实世界