FEATURED · 精选文章

又一开源项目爆火于GitHub,Android高级插件化强化实战

发布时间 / 2026/8/27 19:07:04
来源 / 创域科博编辑部
栏目 / 资讯中心
又一开源项目爆火于GitHub,Android高级插件化强化实战 一、插件化起源插件化技术最初源于免安装运行Apk的想法这个免安装的Apk就可以理解为插件而支持插件的app我们一般叫 宿主。想必大家都知道在Android系统中应用是以Apk的形式存在的应用都需要安装才能使用。但实际上Android系统安装应用的方式相当简单其实就是把应用Apk拷贝到系统不同的目录下、然后把so解压出来而已。常见的应用安装目录有/system/app系统应用/system/priv-app系统应用/data/app用户应用那可能大家会想问既然安装这个过程如此简单Android是怎么运行应用中的代码的呢我们先看Apk的构成一个常见的Apk会包含如下几个部分classes.dexJava代码字节码res资源文件libso文件assets静态资产文件AndroidManifest.xml清单文件其实Android系统在打开应用之后也只是开辟进程然后使用ClassLoader加载classes.dex至进程中执行对应的组件而已。那大家可能会想一个问题既然Android本身也是使用类似反射的形式加载代码执行凭什么我们不能执行一个Apk中的代码呢二、插件化优点插件化让Apk中的代码主要是指Android组件能够免安装运行这样能够带来很多收益减少安装Apk的体积、按需下载模块动态更新插件宿主和插件分开编译提升开发效率解决方法数超过65535的问题想象一下你的应用拥有Native应用一般极高的性能又能获取诸如Web应用一样的收益。嗯理想很美好不是嘛三、与组件化的区别组件化是将一个App分成多个模块每个模块都是一个组件module开发过程中可以让这些组件相互依赖或独立编译、调试部分组件但是这些组件最终会合并成一个完整的Apk去发布到应用市场。插件化是将整个App拆分成很多模块每个模块都是一个Apk组件化的每个模块是一个lib最终打包的时候将宿主Apk和插件Apk分开打包只需发布宿主Apk到应用市场插件Apk通过动态按需下发到宿主Apk。四、插件化的技术难点​ 想让插件的Apk真正运行起来首先要先能找到插件Apk的存放位置然后我们要能解析加载Apk里面的代码。​ 但是光能执行Java代码是没有意义的在Android系统中有四大组件是需要在系统中注册的具体来说是在Android系统的ActivityManagerService (AMS)和PackageManagerService (PMS)中注册的而四大组件的解析和启动都需要依赖AMS和PMS如何欺骗系统让他承认一个未安装的Apk中的组件如何让宿主动态加载执行插件Apk中Android组件即Activity、Service、BroadcastReceiver、ContentProvider、Fragment等是插件化最大的难点。​ 另外应用资源引用特指R中引用的资源如layout、values等也是一大问题想象一下你在宿主进程中使用反射加载了一个插件Apk代码中的R对应的id却无法引用到正确的资源会产生什么后果。总结一下其实做到插件化的要点就这几个如何加载并执行插件Apk中的代码ClassLoader Injection让系统能调用插件Apk中的组件Runtime Container正确识别插件Apk中的资源Resource Injection插件化是一门很有意思的学问网上已经有很多“入门知识”和“实现原理”之类的文章但是关于插件化的实战却没有一个系统、全面的分享下面我要分享的是最近小编有幸在腾讯高工手里扒到这份“插件化实战学习手册这位大佬主导开发过多个采用插件化架构的APP项目。手册中收录了各互联网大厂热门的插件化项目实战从新手到架构师这份学习手册足以。第一章、插件化技术的前世今生插件化提要插件化发展历史第二章 插件化原理类加载双亲委托机制资源加载四大组件支持Proxy Activity代理hook方式第三章 Android插件化初探从零开始实现一个插件化框架Activity的启动流程寻找Hook点撸码阶段代理对象偷天换日替换原来的IntentActivityThread将代理的intent替换回来第四章 架构演化大厂篇360插件开发之DroidPlugin插件开发之360 DroidPlugin源码分析插件开发之360 DroidPlugin源码分析之Hook机制Hook机制的包结构关系Hook机制类图关系Hook机制的时序图关系Manifest权限申请基类Hook做了什么…滴滴VirtualApk实战配置应用原理总结问题基于VirtualAPK Android重构之插件化Plug-in Hello World插件化框架的选择插件化原理引入插件化之痛爱奇艺插件化原理分析之 Neptune框架插件化基础知识点类加载插件化中资源使用限制Apk打包流程四大组件的插件化插件Activity任务栈处理插件中的广播处理插件中的Service腾讯插件化框架 Shadow项目解析sample示例代码AndroidManifest.xml分析Activity 实现替换插件 Activity 的父类Service 实现BroadcastReceiver 实现ContentProvider 实现框架自身动态化由于篇幅限制这里只能展示部分内容朋友们如果需要这份完整版的PDF资料合集微信扫描下方CSDN官方二维码【免费获取】。写在最后插件化是一门很有意思的学问用一句话来形容就是偷天换日灯下黑在各种坑的限制下不断跟系统博弈寻找出路。随着了解的深入大家肯定能理解我这句话本文也只是抛砖引玉更多的乐趣还是要自己去发掘。
RELATED — 相关阅读

相关资讯

LATEST — 最新资讯

最新发布

TODAY — 本日精选

新闻

WEEKLY — 本周精选

新闻

MONTHLY — 本月精选

新闻