Android动态加载学习笔记(一)

前言

上周五DPAndroid小分队就第二阶段分享内容进行了讨论,结果形成了三个主题:性能优化、动态加载、内核远离。我选择的是第二项——动态加载。在目前的Android开发中,这一部分知识还是比较流行的,很大一部分原因是65k方法数的限制。国内各大IT公司的app开发者或多或少都遇到过这个老大难问题,并且各辟蹊径,公布了各自的应对方法。选这个议题,第一在于有价值(大型IT公司的Android开发一定会不可避免地在这个问题上纠结过,小型公司/开发者也许不在意,较高的门槛剔除了很多初级的无用信息);第二在于可执行(正是由于这一问题的广泛性与不可避免性,众人八仙过海各显神通,形成多种解决方案,方便参考与学习);第三在于可量化(最终一定会产出一个Demo,最好的结果是直接应用到DPApp上,为诸多开发兄弟提供便利)。

目标

  1. 掌握Android编译、加载的基本原理;
  2. 关键技术点在于Dex拆分,编译/运行时资源文件的定位与加载;
  3. 具体到执行,要分析两到三个优秀的开源动态加载项目(携程、360);
  4. 产出一个Demo

原理简述

这个议题下,主要是四个知识点:1.Dex拆分;2.热修复;3.动态加载;4.增量更新。其中,Dex拆分是基础,动态加载基于Dex拆分进行,热修复提供了无需在市场中更新apk来修复bug的技术,是最后一根救命稻草,增量更新减少了更新时需要下载的数据量,也可以优化用户体验。

资料汇总

携程 DymamicAPK

奇虎360 DroidPlugin

微信

QQ空间

美团

手机淘宝

天猫技术

大点评 by屠大师

其它一些资料

原文地址:https://www.cnblogs.com/maozhige/p/4951051.html