android原生应用开发发展到今天,几乎每个App都是巨无霸级的大小,手淘,优酷这种应用更是航母级别的应用,一个应用可能几百人一起合作开发,在应用还小的时候大家可以甜蜜的合作,快速的迭代就像孩子小的时候每个人都喜欢,但随着应用越来越大,我们不得不面对的以下几个问题:第一,团队合作的效率越来越低,这是无法避免的,可能一个人的延期就会导致整个版本的延期,而人越多这个概率就是指数级别的增长。第二,潜在的bug越来越多,功能越多,隐藏的问题就自然就越多,一旦爆发可能带来的影响会非常的大。第三,应用越来越大,导致新功能的开发越来越受到限制,比如:android的方法数65535的限制,虚拟机内存的限制,而且占用内存越大的应用在后台被回收的可能性也就越大等等。当然应用越来越大绝不仅仅只有这么点问题。我们这里列举的只是几个比较明显的问题。那这些问题该如何解决呢? 这就需要提到我们文章的核心热修复与插件化技术了。

再讲热修复与插件化技术前呢大家首先要搞明白动态加载技术,动态加载是安卓原生为我们提供的一种加载未安装到手机系统的apk文件或者jia包中的类,这其中的核心技术就是对Classloader中的DexClassloader的合理的使用。这就为我们提供了一种思路,既然我们可以加载未安装到android系统的一些特定格式文件中的class,那我们能不能让应用在运行期动态的去加载这些文件中的类,从而实现按我们的策略或者需求去加载我们想加载的类和资源呢。答案是肯定的,解决方案就是我们的热修复与插件化技术的实践。其实热修复与插件化就是动态加载技术的不同的使用场景。下面我们就来分别介绍一下热修复与插件化技术。
热修复也叫动态更新,从名字就可以很容易的理解它的作用,就是用来动态的修改我们应用的缺陷的。以前我们在应用产生bug以后,我们只能无奈的等待字啊一个版本的发布才能解决这个问题。但有了热修复技术以后,那我们就无需等到下一个版本,可以立马解决问题,生成patch文件,然后下发到用户手机,让我们的应用去安装了这个patch,patch文件安装成功以后,就可以替换掉我们有问题的代码,从而达到问题的解决。经过15年的出现,16年的发展到今天热修复技术已经已经比较成熟了,比较有代表性的有alibaba的andfix和微信的tinker,两种方案各有优劣,andfix胜在patch文件可以立马生效而无需应用重启,而tinker胜在不仅可以更新代码还可以更新资源文件,技术没有绝对的好与不好,适合自己的就是最好的。有了热修复技术以后基本上就可以解决应用越来越大带来的潜在问题越来越多的问题。在对热修复有了一定的了解后我们在来看插件化技术。

不同于热修复的容易理解,插件化是一个不太容易被理解的概念,那究竟什么是插件化呢,插件化就是把一个大的应用拆分成多个小的应用,这些小的应用相互配合实现和我们原来一个大应用完全一样的功能,这个过程就叫插件化,无论是手机淘宝,还是优酷等应用无一不采用这一技术进行插件化改造,而我也有幸参与了这个改造的过程,整个流程下来,我的感受是前期确实很繁琐,各种修改重构,解耦合,组件化。但当整个过程都走完以后,应用的结构变得非常的合理。各团队间的功能不在那么强耦合,即使又耦合的地方也可以通过适当的技术去消除,例如:提取公共组件,AIDL等。插件化以后,我们每一个功能模块都是一个独立的小apk,完全按照我们开发小应用的节奏,一切又变的那么的简单。插件化技术比较成熟的是alibaba的Atlas和一个开源的框架small。二者又是各有千秋。Altas呢功能强大,完整,集合了插件化,动态部署,远程组件加载于一身,但同时学习成本和改造成本也非常的大,而small呢与它的名字一样,专注于应用的插件化改造这一点,让他的上手非常的容易,如何选取技术方案就看大家的需求。两个技术方案都非常棒。
好,说了这么多你对插件化与热修复应该有吧基本的认识了,赶快学习起来吧。

课程地址:http://coding.imooc.com/class/106.html

android应用热修复与插件化实践之路相关推荐

  1. Android 热修复、插件化、双开基本原理

    最近几年,安卓热门技术中,有关热修复.插件化.双开等等技术应用的比较广泛.本文从最简单直接的一个例子入手,分析其中的技术原理和构建思路.有3个相关的基本知识点,java中的反射.设计模式中的代理模式. ...

  2. Android热修复及插件化原理

    1.前言 热修复一直是这几年来很热门的话题,主流方案大致有两种,一种是微信Tinker的dex文件替换,另一种是阿里的Native层的方法替换.这里重点介绍Tinker的大致原理. 2.类加载机制 介 ...

  3. JAndFix: 基于Java实现的Android实时热修复方案

    简述 JAndFix是一种基于Java实现的Android实时热修复方案,它并不需要重新启动就能生效.JAndFix是在AndFix的基础上改进实现,AndFix主要是通过jni实现对method(A ...

  4. 美团App 插件化实践

    背景 在Android开发行业里,插件化已经不是一门新鲜的技术了,在稍大的平台型App上早已是标配.进入2017年,Atlas.Replugin.VirtualAPK相继开源,标志着插件化技术进入了成 ...

  5. 美团App插件化实践

    点击上方"公众号"可以订阅哦 背景 在Android开发行业里,插件化已经不是一门新鲜的技术了,在稍大的平台型App上早已是标配.进入2017年,Atlas.Replugin.Vi ...

  6. Android插件化学习之路(一)之动态加载综述

    前段时间,公司项目完成了插件化的开发,自己也因此学习了很多Android插件化的知识,于是想把这些内容记录下来,本次带来Android插件化的第一篇:动态加载综述 Android插件化学习之路(一)之 ...

  7. android Tinker 热修复 乐固加固后友盟打多渠道包之后的补丁失效

    继上一篇 android tinker 热修复使用及注意事项  生成了热修复的补丁; 现在的需求是这样的,我想把这个包用腾讯乐固加固,然后生成多渠道包,希望这个补丁能修复所有这些渠道的包,经过测试,直 ...

  8. android中使用tmf框架插件化开发的问题

    android中使用tmf框架插件化开发的问题 最近项目开发使用的是tmf框架,其中大多数都是通过源生和H5交互的方式来实现的,大体实现和别的三方框架是一样的,需要按照tmf的官方文档引入一些lib和 ...

  9. 手机QQ的移动化实践之路

    在2014年12月19日~20日举行的ArchSummit北京2014大会上,腾讯即时通讯平台部技术总监范瑞彬做了题为<手机QQ的移动化实践之路>(幻灯片下载)的演讲,介绍了手机QQ在服务 ...

  10. 微店 Android 插件化实践

    随着微店业务的发展,App 不可避免地也遇到了 65535 的大坑.除此之外,业务模块增多.代码量增大所带来的问题也逐渐显现出来.模块耦合度高.协作开发困难.编译时间过长等问题严重影响了开发进程.在预 ...

最新文章

  1. 硬中断与软中断的区别!
  2. 32单片机编程简单吗?单片机程序与桌面编程哪个难?
  3. 成都计算机职业学院排名,成都计算机职高排名
  4. 计算机硬件的组装实践,毕业论文-计算机硬件组装实践.doc
  5. vue脚手架引入swiper
  6. Go学习笔记—Channel通道
  7. Asp.net core应用在 Kubernetes上内存使用率过高问题分析
  8. 精通ASP.NET MVC ——控制器可扩展性
  9. iOS MJRefresh下拉刷新(上拉加载)使用详解
  10. eclipse生成变量的快捷键
  11. javascript中typeof、undefined 和 null
  12. paip.提升效率---源码生成流程图工具
  13. 密码库LibTomcrypt的内容介绍及分析
  14. mac 下安装iwork+ps+nx2
  15. MAXDOS网刻教程~~(虚拟机与物理机 / 两台或者多台电脑之间)
  16. 试用SVO_edgelet
  17. photoshop之合并图层
  18. Windows10开机进不了BIOS的解决办法
  19. Redis 总结 —— 2022/2/6
  20. 电脑c语言发音,C的发音

热门文章

  1. C#:获取访问端口号
  2. 设计模式(11)——组合模式
  3. 无监督/自监督/半监督的景物分割方法
  4. 孩子们各显神通对付 iOS 12「屏幕使用时间」的限制
  5. Android----获取包名和sh1
  6. 理解数据库设计范式【转】
  7. 关于onclick中的event对象和element对象
  8. HDU1465_递推_错排
  9. 在ubuntu下怎么安装和使用Github
  10. 【OpenCV学习笔记】【异常处理】一(The Matrix is not continuous, thus its number of rows can not be changed)