Android插件化_51CTO博客
1、前言这篇文章来讲一下Android插件的原理和大概的一个运行流程,最后将一个demo呈现出来。2、分析插件说到底就是一个apk文件,我们要做的事情是从宿主中加载该apk文件的类对象(比如启动Activity)和使用该apk文件的资源等操作。我们知道系统是不会安装apk插件的,所以宿主是不知道我们的插件的任何信息。我们之前分析了Activity的启动过程,其实就是在ActivityThread
转载 2023-07-27 10:57:26
123阅读
插件学习 准备知识classloader 类加载机制Binder,AIDL,IPC插件与组件区别组件化开发就是将一个app分成多个模块,每个模块都是一个个组件,开发的过程中我们可以让这些组件相互依赖或者单独调试组件,但是最终发布的时候是将这些组件并成一个apk发布,而插件话 是分为一个宿主 和多个插件apk ,插件话成本高就是 适配 android版本,每个android版本的源码实现都不同,
转载 2023-07-12 14:43:34
123阅读
概述插件是一种动态升级app功能的解决方案,不同于热修复(仅仅是修复功能),类似于RN、Weex(目的类似)。都是为了在不发版本的情况下,可以让用户用上最新的功能。不过RN、Weex还额外支持跨平台。相对于RN和Weex,插件有以下的优缺点:优点:对于业务方,无额外的学习成本,基本无感知性能等同于原生、可以做任何原生可以做的事情天然代码隔离、使得插件的代码更加的“高内聚、低耦合”插件并发开发
一、简介插件化开发是将整个app拆分成很多模块,这些模块包括一个宿主和多个插件,每个模块都是一个apk(组件的每个模块是个lib),最终打包的时候将宿主apk和插件apk分开或者联合打包。由宿主APP去加载以及运行插件APP。二、存在的意义宿主和插件分开编译并发开发动态更新插件按需下载模块解除单个dex函数不能超过65535的限制处境:开放出来的插件化开发框架比较多,他们各自都有自己的优势和和不
前言在Android 高阶技术中,动态算是一个方向,而在动态中最知名的就是插件相关技术了。插件技术最初源于免安装运行apk的想法,这个免安装的apk可以理解为插件。支持插件的app可以在运行时加载和运行插件,这样便可以将app中一些不常用的功能模块做成插件,一方面减小了安装包的大小,另一方面可以实现app功能的动态扩展。想要实现插件,主要是解决下面三个问题:1. 插件中代码的加载和与主
转载 2023-11-04 21:14:55
43阅读
0.  前言 在Android开发中,插件就是让我们的应用可以把一些功能和逻辑单独抽出来放在插件apk中,然后主apk做到按需调用,这样的好处是一来可以减少主apk的体积,二来可以做到热插拔,在不发布新版本的情况下实现更新某些模块,更加动态。网上有很多插件的解决方案和框架,但是它们都必须解决几个基础问题:插件类的加载,插件资源的加载和插件Activity的管理。1.&nb
转载 2023-08-29 20:09:08
103阅读
写在前面;这几年移动开发业界兴起的「 插件技术 」的旋风,各个大厂都推出了自己的插件框架,各种开源框架都评价自身功能优越性,令人目不暇接。随着公司业务快速发展,项目增多,开发资源却有限,如何能在有限资源内满足需求和项目的增长,同时又能快速响应问题和迭代新需求,这就是一个矛盾点。此时,插件技术正好风生水起,去了解各个主流框架实现思路,看看能对目前工作是否有帮助,是很有必要的。主要分为以下几个部
在尝试 DroidPlugin 插件的过程中,会遇到一些挺细节的问题,最终大部分情况还是通过阅读框架代码或者源码解决,个人觉得这个也是一个比较好的学习过程,所以将一些细节问题纪录一下。关于插件Applaciton的问题(资源加载引发的思考)这个问题,主要和同事讨论,如果避免资源文件冲突的问题,因为部分插件框架中,通过编译的时的设置,改变资源文件在R文件中的ID值,然后通过反射的方式借助 Ass
| 导语 插件技术最早从2012年诞生至今,已经走过了5个年头。从最初只支持Activity的动态加载发展到可以完全模拟app运行时的沙箱系统,各种开源项目层出不穷,在此挑选了几个代表性的框架,总结其中的技术原理。由于本人水平有限,插件框架又相当复杂,文中若有错误或者不准确的地方望高手指点。内容概要一、发展历史插件技术最初源于免安装运行apk的想法,这个免安装的apk可以理解为插件。支持插件
转载 2023-06-29 23:53:40
2281阅读
前言已经好久好久没有更新博客了,去年后半年太忙,没怎么抽出时间来写博客。以后给自己定个小目标,不管多忙,每周都要写一篇博客。闲话不多说,下面开始扯正题,最近有个同事问我“模块、组件插件还有热更新他们之间有什么关系和区别?“概述随着产品的业务不断的增加,我们的APP中代码就会越来越多,这时侯为了方便我们多个成员之间协同开发,所以就出现的根据业务,将我们代码分割为不同的模块(用户中心模块,首页
插件结构的利与弊最近在做Java的插件架构设计,插件,或称组件。最大的优势就是按照功能区分,系统耦合度低,一块功能的添加或删除,并不影响其他功能的使用。我设计的一个Android聊天机器人程序,代码量并不算大,但结构复杂,功能繁复。有本地聊天机器人,在线聊天机器人,网络通信,音乐播放,打电话,发短信,数据统计,语料更新等诸多功能。如果所有的功能都打包在一个工程内,简单可靠,但扩展性极为不佳
转载 2023-10-06 13:38:35
83阅读
文章目录1. 为什么需要插件技术2. 插件技术的历史3. 插件实现思路3.1 InfoQ:您在 GMTC 中的议题叫做《Android 插件:从入门到放弃》,请问这个标题代表什么意思?3.2 InfoQ:请问您是如何学习的?对于初学者有什么建议?4. 其他 1. 为什么需要插件技术插件技术最初源于将app中一些不常用的功能模块做成插件,主要有两个方面的好处:减小了安装包的大小;实现a
一、插件概述 1、插件和组件的区别组件是将一个app拆分为多个模块进行协作开发,每个模块都是一个单独的组件,这些组件可以相互依赖,也可以单独调试运行。但是最终发布的时候,这些组件会合并在一起,组成一个整体的apk,这就是组件化开发。插件化开发和组件是有所不同的,插件化开发就是将一个app拆分成多个模块,但是每一个模块都是一个apk,最终打包的时候将宿主apk和插件apk分开打包
一、Android插件介绍1.含义所谓插件,就是让我们的应用不必再像原来一样把所有的内容都放在一个apk中,可以把一些功能和逻辑单独抽出来放在插件apk中,然后主apk做到[按需调用],这样的好处是一来可以减少主apk的体积,让应用更轻便,二来可以做到热插拔,更加动态。2.背景3.优点二、Android插件基础1.插件的特点1) 应用在运行的时候通过加载一些本地不存在的可执行文件实现一些
什么是组件?通俗易懂来讲就是,拆成多个module开发就是组件。什么是插件?App的部分功能模块在打包时并不以传统⽅式打包进apk⽂件中,⽽是以另⼀种形式⼆次封装进apk内部,或者放在⽹络上适时下载,在需要的时候动态对这些功能模块进⾏加载,称之为插件。这些单独⼆次封装的功能模块apk,就称作插件,初始安装的apk称作宿主。插件是组件的更进⼀步推进。插件基础之反射:反射的写法try {
为什么会需要组件随着项目的发展,业务逻辑越来越复杂,代码量越来越多,会带来:各种业务模块耦合在一起,不利于维护,不利于新入职成员的阅读改动一个小功能,就要重新编译整个工程,编译时间较长代码量越来越大,不利于对代码的拆分对于测试,新功能无法单独测试 这样就需要使用组件插件什么是组件组件:模块组件和通用组件,可分为业务组件和UI组件等等,比如下拉刷新可作为通用ui组件,供多个项目调用,登录
转载 2023-07-10 16:10:18
164阅读
LeakCanary 与 鹅场Matrix ResourceCanary对比分析 Android插件已经出来好几年了,各大厂都出了各自方案,引用Wiki中VirtualAPK和其他开源框架的对比如下:  VirtualAPKVirtualAPK是滴滴出行自研的一款优秀的插件框架,主要有如下几个特性。功能完备支持几乎所有的Android特性;四大组件方面四大组件均不
一、什么是组件1、概念在项目迭代过程中,随着功能和开发人员增多,代码会逐渐臃肿起来,如何设计架构,保证代码质量和后续拓展变得尤为重要。一般的过程是从无架构到模块,再到组件插件,本质上是分而治之,降低耦合。模块:一般按照业务划分不同module,一个业务可能包含多个功能,偏向业务层。组件:将一个app按照功能划分不同module,更偏向底层,每个module可集成到app中,也可独立打
转载 9月前
384阅读
从事Adroid开发几年来,逐渐对Android应用架构和发展趋势有一点点认识,总结为三个词:“组件,模块插件”。 下面以一张图为基础,分别从这个三个方面进行阐述。如有不足,还请指正。 组件化为什么需要组件Android的原生控件,基本上都没法直接拿来用,太丑了。另外一方面,原生控件在不同的Android版本上可能有不同风格,Holo,Material Design等。而从应用开发者角
前言聊完了热修复,那么它的好姐们插件怎么能不说。原理剖析一、加载类即加载外部的dex,这里有两步操作第一步:安装即把外部的apk里的dex拷贝系统目录下。apk 来源分两种,一种来自内置在Assert目录下的插件,一种是来自网络下载的。 拷贝包含三个部分:将插件(apk)拷贝到创建的存储插件的文件夹下,data/data/包名/插件名创建一个dex 输出文件夹,即dexOutputDir ,这个
转载 2023-07-10 14:58:05
58阅读
  • 1
  • 2
  • 3
  • 4
  • 5