前言聊完了热修复,那么它的好姐们插件怎么能不说。原理剖析一、加载类即加载外部的dex,这里有两步操作第一步:安装即把外部的apk里的dex拷贝系统目录下。apk 来源分两种,一种来自内置在Assert目录下的插件,一种是来自网络下载的。 拷贝包含三个部分:将插件(apk)拷贝到创建的存储插件的文件夹下,data/data/包名/插件名创建一个dex 输出文件夹,即dexOutputDir ,这个
转载 2023-07-10 14:58:05
73阅读
如今移动app市场已经是百花齐放,其中有不乏有很多大型公司、巨型公司都是通过app创业发展起来的;app类型更加丰富,有电子商务、有视频、有社交、有工具等等,基本上涵盖了各行各业每个角落,为了更加具有竞争力app不仅功能上有创性,内容也更加多元,更加饱满,所以出现了巨大的工程。这些工程代码不停添加如果没有一个好的架构所有代码将会强耦合在一起,功能直接也会有很多依赖,那么就会出现很多问题;例如:1
转载 2023-08-10 00:28:35
0阅读
插件的基本概念我们在第一篇文章中就介绍过插件的基本概念,这里再强调一次。随着下面这些问题的出现:APP的体积越来越大,功能模块越来越多模块之间的耦合度高,协同开发沟通成本越来越大方法数目可能超过65535,APP占用的内存过大相应的解决办法:将一个大的APK按照业务划分为多个小的APK每个小的APK又可以独立运行、又可以依附于宿主APK运行那么,就会有如下优势:业务模块之间基本完全解偶协同并行
转载 2023-11-06 23:30:46
89阅读
1、前言这篇文章来讲一下Android插件的原理和大概的一个运行流程,最后将一个demo呈现出来。2、分析插件说到底就是一个apk文件,我们要做的事情是从宿主中加载该apk文件的类对象(比如启动Activity)和使用该apk文件的资源等操作。我们知道系统是不会安装apk插件的,所以宿主是不知道我们的插件的任何信息。我们之前分析了Activity的启动过程,其实就是在ActivityThread
转载 2023-07-27 10:57:26
152阅读
插件学习 准备知识classloader 类加载机制Binder,AIDL,IPC插件与组件区别组件化开发就是将一个app分成多个模块,每个模块都是一个个组件,开发的过程中我们可以让这些组件相互依赖或者单独调试组件,但是最终发布的时候是将这些组件并成一个apk发布,而插件话 是分为一个宿主 和多个插件apk ,插件话成本高就是 适配 android版本,每个android版本的源码实现都不同,
转载 2023-07-12 14:43:34
157阅读
Spring Boot如何实现自定义Spring Boot插件?在 Spring Boot 中,插件是一种扩展机制,它可以帮助我们在应用程序中快速地添加一些额外的功能。在本文中,我们将介绍如何使用 Spring Boot 实现自定义插件。什么是 Spring Boot 插件?Spring Boot 插件是一种扩展机制,它提供了一种简单的方式来扩展 Spring Boot 的功能。插件可以添加一些自
上篇了解了热修复原理,热修复技术主要用来修复 bug,插件则主要解决应用越来越庞大以及功能模块的解耦。插件化处理两部分业务,一种是自身的业务模块,一种是接入其他的应用业务。这种方式在淘宝、支付宝、美团、滴滴、360 等航母应用上十分常见。代表方案有阿里的 Atlas、360 的 RePlugin、滴滴的 VirtualAPK 等。插件的 apk 分为宿主和插件两部分组成,先被安装到手机中的 a
转载 2023-12-08 15:21:40
99阅读
插件技术随着360公司2016年DroidPlugin、2017年RePlugin的相继公布和开源,达到了顶峰。随后这几年进入了普及和落地期,到今天已不再新鲜和热门。但对于以插件框架为基础架构进行业务开发的同学而言,熟悉其原理和具体实现,不仅是工作本身需要,也能增进Android内功的修炼。相信了解过Replugin的同学都知道,Replugin的最大特点是坑位和唯一Hook点。那么问题来了,
转载 2023-12-14 13:39:10
84阅读
今日科技快讯近日,滴滴方面表示:按照北京市网约车细则的规定,将于4月1日前停止对全北京地区(包括六环外)外地牌照网约车进行派单。同时因近期运力减少,在部分地区、部分时段上,可能会在一定程度上对用户打车成功率、等待时长等方面造成影响,对此表示歉意。 作者简介本篇来自 刘镓旗 的投稿,详细地分析了插件的原理并给出了实现过程。本文着重于思路分析以及实践,文中涉及的某些知识点(比如 Bind
写在前面;这几年移动开发业界兴起的「 插件技术 」的旋风,各个大厂都推出了自己的插件框架,各种开源框架都评价自身功能优越性,令人目不暇接。随着公司业务快速发展,项目增多,开发资源却有限,如何能在有限资源内满足需求和项目的增长,同时又能快速响应问题和迭代新需求,这就是一个矛盾点。此时,插件技术正好风生水起,去了解各个主流框架实现思路,看看能对目前工作是否有帮助,是很有必要的。主要分为以下几个部
在尝试 DroidPlugin 插件的过程中,会遇到一些挺细节的问题,最终大部分情况还是通过阅读框架代码或者源码解决,个人觉得这个也是一个比较好的学习过程,所以将一些细节问题纪录一下。关于插件Applaciton的问题(资源加载引发的思考)这个问题,主要和同事讨论,如果避免资源文件冲突的问题,因为部分插件框架中,通过编译的时的设置,改变资源文件在R文件中的ID值,然后通过反射的方式借助 Ass
| 导语 插件技术最早从2012年诞生至今,已经走过了5个年头。从最初只支持Activity的动态加载发展到可以完全模拟app运行时的沙箱系统,各种开源项目层出不穷,在此挑选了几个代表性的框架,总结其中的技术原理。由于本人水平有限,插件框架又相当复杂,文中若有错误或者不准确的地方望高手指点。内容概要一、发展历史插件技术最初源于免安装运行apk的想法,这个免安装的apk可以理解为插件。支持插件
转载 2023-06-29 23:53:40
2348阅读
前言已经好久好久没有更新博客了,去年后半年太忙,没怎么抽出时间来写博客。以后给自己定个小目标,不管多忙,每周都要写一篇博客。闲话不多说,下面开始扯正题,最近有个同事问我“模块、组件插件还有热更新他们之间有什么关系和区别?“概述随着产品的业务不断的增加,我们的APP中代码就会越来越多,这时侯为了方便我们多个成员之间协同开发,所以就出现的根据业务,将我们代码分割为不同的模块(用户中心模块,首页
插件结构的利与弊最近在做Java的插件架构设计,插件,或称组件。最大的优势就是按照功能区分,系统耦合度低,一块功能的添加或删除,并不影响其他功能的使用。我设计的一个Android聊天机器人程序,代码量并不算大,但结构复杂,功能繁复。有本地聊天机器人,在线聊天机器人,网络通信,音乐播放,打电话,发短信,数据统计,语料更新等诸多功能。如果所有的功能都打包在一个工程内,简单可靠,但扩展性极为不佳
转载 2023-10-06 13:38:35
109阅读
一、简介插件化开发是将整个app拆分成很多模块,这些模块包括一个宿主和多个插件,每个模块都是一个apk(组件的每个模块是个lib),最终打包的时候将宿主apk和插件apk分开或者联合打包。由宿主APP去加载以及运行插件APP。二、存在的意义宿主和插件分开编译并发开发动态更新插件按需下载模块解除单个dex函数不能超过65535的限制处境:开放出来的插件化开发框架比较多,他们各自都有自己的优势和和不
概述插件是一种动态升级app功能的解决方案,不同于热修复(仅仅是修复功能),类似于RN、Weex(目的类似)。都是为了在不发版本的情况下,可以让用户用上最新的功能。不过RN、Weex还额外支持跨平台。相对于RN和Weex,插件有以下的优缺点:优点:对于业务方,无额外的学习成本,基本无感知性能等同于原生、可以做任何原生可以做的事情天然代码隔离、使得插件的代码更加的“高内聚、低耦合”插件并发开发
0.  前言 在Android开发中,插件就是让我们的应用可以把一些功能和逻辑单独抽出来放在插件apk中,然后主apk做到按需调用,这样的好处是一来可以减少主apk的体积,二来可以做到热插拔,在不发布新版本的情况下实现更新某些模块,更加动态。网上有很多插件的解决方案和框架,但是它们都必须解决几个基础问题:插件类的加载,插件资源的加载和插件Activity的管理。1.&nb
转载 2023-08-29 20:09:08
125阅读
前言在Android 高阶技术中,动态算是一个方向,而在动态中最知名的就是插件相关技术了。插件技术最初源于免安装运行apk的想法,这个免安装的apk可以理解为插件。支持插件的app可以在运行时加载和运行插件,这样便可以将app中一些不常用的功能模块做成插件,一方面减小了安装包的大小,另一方面可以实现app功能的动态扩展。想要实现插件,主要是解决下面三个问题:1. 插件中代码的加载和与主
转载 2023-11-04 21:14:55
53阅读
1.   dynamic-load-apk/DL动态加载框架  是基于代理的方式实现插件框架,对 App 的表层做了处理,通过在 Manifest 中注册代理组件,当启动插件组件时,首先启动一个代理组件,然后通过这个代理组件来构建,启动插件组件。 需要按照一定的规则来开发插件 APK,插件中的组件需要实现经过改造后的 Activity、FragmentActivity
转载 2023-07-12 23:01:56
178阅读
随着web前端技术的发展,插件技术已逐渐被抛弃,但是理解这三者的概念和区别,对编程思想的提高仍有帮助。1 模块狭义上说: 是指Android studio支持了多个module开发时,提出的模块概念。 具体实践:把常用的功能、控件、基础类、第三方库、权限等公共部分抽离封装,把业务拆分成N个模块进行独立(module)的管理。 而所有的业务组件都依赖于封装的基础库,业务组件之间不做依赖,这样的
转载 2023-11-22 13:27:04
98阅读
  • 1
  • 2
  • 3
  • 4
  • 5