组件化,插件化和热更新
组件化,插件化和热更新
什么是组件化:
- 为什么要有组件化?
加入一个app工程只有一个组件,随着app业务的壮大模块越来越多,代码量超10万是很正常的,这个时候我们会遇到以下问题:
- 稍微改动一个模块的一点代码都要编译整个工程,耗时耗力
- 公共资源、业务、模块混在一起耦合度太高
- 不方便测试
这样的好处:
* 每个模块可以独立开发编译运行
* 开发单个模块时可以共享资源和工具类
* 可以针对单个模块测试
参考文章链接:[http://blog.csdn.net/guiying712/article/details/55213884 ]
github链接:[https://github.com/llayjun/ModuleProgramming ]
什么是插件化
- 为什么有插件化?
有了组件化,为什么还要用插件化呢?插件化开发总的来说有以下几点好处(不同插件框架不一样):
- 宿主和插件分开编译
- 并发开发
- 动态更新插件
- 按需下载模块
- 方法数或变量数爆棚
主要有这几种插件化模式值得研究
1. 滴滴/VirtualAPK
2. 奇虎360/RePlugin/DroidPlugin
github链接:以DroidPlugin为例[https://github.com/llayjun/PlugProgramming ]
什么是热更新
在用户使用App的时候,不知不觉,这个Bug就被修复了。
主要有这几种热更新值得研究
1. 阿里的Sophix,暂时处于内侧阶段,后期不知道要不要收费
2. 微信的Tinker
博客链接:以Tinker为例:[http://www.jianshu.com/p/b7b7cf40f700 ]
github链接:以Tinker为例:[https://github.com/llayjun/MyTinkerDemo ]
自我理解:
①组件化:
1. 用于项目过大,每次编译时间长
2. 用于团队多个人分工开发不同的模块
②插件化:
3. 用于版本新添加功能
4. 解决方法数超过65536问题
5. 按照需要下载模块,减小项目apk的大小
③热更新:
6. 用于修复已经上线的bug等问题
7. 一般不用于新功能的版本上线
组件化,插件化和热更新相关推荐
- 蘑菇街Android组件与插件化
插件化的基石 -- apk动态加载 随着我街业务的蓬勃发展,产品和运营随时上新功能新活动的需求越来越强烈,经常可以听到"有个功能我想周x上,行不行".行么?当然是不行啦,上新功能得 ...
- 阿里开源android脚手架,GitHub - HiJesse/Gaea: Android 脚手架(组件化, 插件化)
Gaea Gaea是一个基于Atlas实现Android项目组件化和插件化的脚手架. 可以根据此脚手架快速开发一款具有插件化特性的App, 也可以提供参考和帮助现有项目实现插件化. 项目模块 模块命名 ...
- android热更新插件,与Android热更新方案Amigo的再次接触
Amigo 作为一个"过气"的的热修复框架,用来学习和了解一下热修复的基本原理还是很好的.本文是本系列的第三篇. 前两篇: 与Android 热更新方案Amigo的初次接触 原作者 ...
- Android APP热更新中的插件化(Hook技术:反射或动态代理),Demo (2)
修改AAPT,资源分区,用于Android插件化- https://github.com/BaoBaoJianqiang/AAPT -- Android下的挂钩(hook)和代码注入(inject) ...
- golang 热插拨 插件_从零开始实现一个插件化框架(一)
欢迎关注专栏:里面定期分享Android和Flutter架构技术知识点及解析,还会不断更新的BATJ面试专题,欢迎大家前来探讨交流,如有好的文章也欢迎投稿. Flutter跨平台开发终极之选zhua ...
- Android热修复及插件化原理
1.前言 热修复一直是这几年来很热门的话题,主流方案大致有两种,一种是微信Tinker的dex文件替换,另一种是阿里的Native层的方法替换.这里重点介绍Tinker的大致原理. 2.类加载机制 介 ...
- (4.6.29.3)插件化之代码加载:启动Activity等四大组件之hook方式
文章目录 一.代理模式和Hook原理 1.1 Hook 原理 1.2 代理模式 二.Binder Hook 2.1 分析:系统服务的获取过程 2.2 寻找Hook点 2.3 hook Binder示例 ...
- Android组件化与插件化的差别在哪里,该怎么选型?
面试官: 组件化如何实现,组件化与插件化的差别在哪里,该怎么选型? 心理分析:面试官从架构层次 了解求职者是否用过 模块化 组件化 和插件化,在过去经验有没有运用过这些技术到项目中,这道题属于一个连环 ...
- Android组件化和插件化开发
项目发展到一定程度,就必须进行模块的拆分.模块化是一种指导理念,其核心思想就是分而治之.降低耦合.而在 Android 工程实践,目前有两种途径,一个是组件化,一个是插件化. 组件化开发 说起组件化少 ...
- Android组件化和插件化开发,android开发工程师月薪
开发调试时不需要对整个项目进行编译,每个模块可独立编译,提高了编译速度. 多人合作时可以只关注自己的业务模块,把某一业务当成单一项目来开发,可以提升开发,测试效率. 可以灵活的对业务模块进行组装和拆分 ...
最新文章
- 【转载】在Linux CentOS中安装VSCode用于C++学习,亲测可用
- C#中类的属性(Property)
- 检测主机是否在线小脚本
- boost::fusion::pair用法的测试程序
- 我的新书《PWA入门与实践》上市了
- java数组的二进制查找_Java程序在长数组上实现二进制搜索
- java语法基础总结,顺利拿到offer
- LINUX环境变量environ
- phpstudy mysql 1067_MySQL_MySQL的1067错误解决,1 
安装MYSQL后更改了ROOT的密码 - phpStudy...
- SPDK/PMDK/VTune Amplifier 2019中国峰会顺利落幕
- “任务管理器已被管理员禁用”如何解除?
- @Cacheable注解属性介绍
- 网页分享到贴吧,微博
- 计算机二级是win7,计算机二级等考宝典
- 360浏览器,qq浏览器等登录页输入账号密码,在页面内再次遇见有密码框的地方会自动填充的解决办法。
- 人脸活体/活性检测方法综述
- 【FFmpeg】rtmp推流
- 最小二乘法实验c语言实现,最小二乘法拟合C语言实现
- moment 当前周一到周日_记一次用momentjs获取一年内所有周的起始时间遇到的bug
- MATLAB mex文件