热修复、插件化、组件化
文章平均质量分 96
热修复和插件化实现和原理
阿烦大大@
学而不思则罔,思而不学则殆
展开
-
Android组件化方案 (一)
什么是组件化组件化的工作方式信奉独立、完整、自由组合。目标就是尽可能把设计与开发中的元素独立化,使它具备完整的局部功能,通过自由组合来构成整个产品。将每个业务模块分成单独的组件,可单独打包、测试,这种方式能够让我们的项目具有更高的可维护性和可读性。为什么需要组件化我们在一些中大型的项目中可以看到,他们少则几个,多则几十个,甚至上百个组件,为什么这样做呢?在早起的项目中,都是单一的模块,进行业务分包的模式开发的,这样随着项目增大,项目失去层次感,维护起来越来越棘手。再一个就是耦合度太高,稍不注意就有不同原创 2020-11-27 16:47:50 · 527 阅读 · 1 评论 -
IOC依赖注入(一)— 手写ButterKnife框架
IOC控制反转(Inversion of Control,缩写为IoC),是面向对象编程中的一种设计原则,其中最常见的就是依赖注入(Dependency Injection, 简称DI)依赖注入现在市面上越来越多的开源框架使用了依赖注入技术。什么是依赖注入呢?其实就是使用注解的方式去实现某些功能。比如:1.运行时注入 xUtils,eventBus,springMVC2.源码时注入 ...原创 2020-02-24 14:04:44 · 551 阅读 · 0 评论 -
Android组件化方案(二)-基于kotlinpoet实现的注解处理器(重磅干货)
前情回顾上一篇文章我们主要讲的gradle的统一管理,组件之间的通信方案,以及如何使用全局map进行页面跳转。每个页面都需要在application中进行注册,这样肯定是不行的,根据面向对象的思想, 我们先对其进行一层封装,做到在编译器自动进行注册。封装全局Map首先我们将通信方案作为一个组件,创建一个irouter_api的module,由base去依赖它,然后把RouteBean实体类挪进来,为了方便以后扩展,我们在RouteBean中增加几个属性class RouteBean { /原创 2020-12-07 11:02:55 · 2525 阅读 · 0 评论 -
从零开始实现一个插件化框架(四)-补充篇
系列文章从零开始实现一个插件化框架(一)从零开始实现一个插件化框架(二)从零开始实现一个插件化框架(三)好久没写过文章啦,始终有一股深深的罪恶感。插件化系列的文章我前三篇已经介绍完了原理.从加载插件类---->加载四大组件并跳转 ----> 资源加载 ----> android10以下版本适配四个大步骤,我相信大家都已经有所了解。不过还是有不少小伙伴在问我android10如何适配,如果同学们看了第三篇文章,我相信适配android10也是易如反掌的,毕竟只是 api的变动嘛!原创 2020-10-21 17:01:20 · 509 阅读 · 1 评论 -
Google组件化方案 - AutoService
Google组件化方案 - AutoService市面上的组件化通信框架可谓是眼花缭乱,参差不齐。像阿里的ARouter, 美团的WMRouter, 还有个人开发者提供的CC框架,他们各有优缺点。今天我们介绍一款轻量级的组件化通信框架,谷歌的亲儿子 - AutoService。使用篇项目结构在Android项目架构中,最底层一个Base层,然后是Common,所有的业务模块都依赖Common层,app被称为壳工程,它依赖所有的业务模块。图很简陋,但整体就是这样一个结构了。我们就以一个简单的de原创 2020-08-25 17:14:04 · 9472 阅读 · 6 评论 -
从零开始实现一个插件化框架(三) - 完结篇
系列文章从零开始实现一个插件化框架(一)从零开始实现一个插件化框架(二)往期回顾Activity的启动流程上两篇文章讲了插件apk中的类加载和Activity跳转,那么面试中经常问到的Activity的启动流程是不是就有了答案?Activity的启动过程,我们可以从Context的startActivity说起,其实现是ContextImpl的startActivity,然后内部会通过...原创 2020-01-21 17:01:29 · 1364 阅读 · 4 评论 -
从零开始实现一个插件化框架(二)
从零开始实现一个插件化框架(二)上一篇讲了插件化的概念和类加载机制,并实现了从插件apk中合并,并加载一个类。不知道大家还记不记得,实现插件化,只需解决三个问题即可:如何加载插件中的类?如何加载插件中的资源?当然还有最重要的一个问题,四大组件如何调用呢?四大组件是需要注册的,而插件apk中的组件显然不会在宿主提前注册,那么如何去调用它呢?第一个问题在上一篇文章中已经实现,今天我们就来...原创 2020-01-20 16:16:07 · 1616 阅读 · 0 评论 -
从零开始实现一个插件化框架(一)
从零开始实现一个插件化框架(一)什么是插件化概念插件化技术最初源于免安装运行 apk 的想法,这个免安装的 apk 就可以理解为插件,而支持插件的 app 我们一般叫宿主。宿主可以在运行时加载和运行插件,这样便可以将 app 中一些不常用的功能模块做成插件,一方面减小了安装包的大小,另一方面可以实现 app 功能的动态扩展。我们知道计算机主板就是由一系列的插槽组成的,我们需要什么功能...原创 2020-01-12 15:57:07 · 2346 阅读 · 1 评论 -
android-揭秘热修复黑科技(二)- Tinker
android热修复方案二- Tinker上一节讲了各个热门的热修复框架的机制和Tinker热修复的原理,但是还是有一些坑存在的。让我们来看看都存在哪些坑,Tinker框架又是怎么填补的呢?一、android 19 及以下的手机修复失败或报错1.1按照上一节的内容做实验,可以测试出android5.0及以上的手机是没有问题的,可以修复成功,但是在android4.4的手机上运行时修复失败了...原创 2019-12-13 14:13:56 · 310 阅读 · 0 评论 -
android-揭秘热修复黑科技
android热修复方案热补丁方案有很多,其中比较出名的有腾讯Tinker、阿里的AndFix、美团的Robust以及QZone的超级补丁方案。他们的优劣如下:一、Tinker 热修复Tinker通过 Dexdiff 算法将原apk和修复后的apk中的dex文件进行对比,生成差分包,运行时将差分包中的dex和原包中的dex进行合并,从而加载差分包中修复好的类。因为是运行时加载的dex文件,...原创 2019-12-03 16:20:56 · 786 阅读 · 0 评论