插件化:⼤⼚实战项⽬解说(含腾讯Shadow项⽬解析)
⼀、发展历史
2012年:AndroidDynamicLoader 给予 Fragment 实现了插件化框架,可以动态加载插件中的 Fragment 实现页⾯的切换。
2013年:阿⾥技术沙龙上,伯奎做了 Atlas 插件化框架的分享,说明那时候阿⾥已经在做插件化的运⽤和开发了。
2014年:任⽟刚开源了 dynamic-load-apk,通过代理分发的⽅式实现了动态化
2015年:张勇 发布了 DroidPlugin,使⽤ hook 系统⽅式实现插件化。
2017年:阿⾥推出 Atlas
2019年:腾讯推出了 Shadow,号称是零反射,并且框架⾃⾝也可实现动态化,看了代码以后发现,其实本质上还是使⽤了代理分发⽣命周期实现四⼤组件动态化,然后抽象接⼝来实现框架的动态化。后⾯有机会可以对其做⼀下分析。
从2012⾄今,可以说插件化技术基本成型了,主要是代理和 hook 系统两种⽅式。
⼆、常⽤名词
在插件化中有⼀些专有名词,如果是第⼀次接触可能不太了解,这⾥解释⼀下。
宿主:负责加载插件的 apk,⼀般来说就是已经安装的应⽤本⾝。
StubActivity:宿主中的占位 Activity,注册在宿主 Manifest ⽂件中,负责加载插件 Activity。
shadow什么意思啊
PluginActivity:插件 Activity,在插件 apk 中,没有注册在 Manifest ⽂件中,需要 StubActivity 来加载。
插件化是⼀门很有意思的学问,⽹上已经有很多“⼊门知识”和“实现原理”之类的⽂章,但是关于插件化的实战却没有⼀个系统、全⾯的分享,下⾯我要分享的是最近⼩编有幸在腾讯⾼⼯⼿⾥扒到这份《插件化实战学习⼿册》,这位⼤佬主导开发过多个采⽤插件化架构的APP 项⽬。⼿册中收录了各互联⽹⼤⼚热门的插件化项⽬实战,从新⼿到架构师,这份学习⼿册⾜以。
第⼀章、插件化技术的前世今⽣插件化提要
插件化发展历史
第⼆章插件化原理
类加载
双亲委托机制
资源加载
四⼤组件⽀持
Proxy Activity代理
hook⽅式
第三章 Android插件化初探从零开始实现⼀个插件化框架
Activity的启动流程
寻Hook点
撸码阶段
代理对象
偷天换⽇,替换原来的Intent
ActivityThread
将代理的intent替换回来
第四章架构演化(⼤⼚篇)
360插件开发之DroidPlugin 插件开发之360 DroidPlugin源码分析 插件开发之360 DroidPlugin源码分析之Hook机制 Hook机制的包结构关系 Hook机制类图关系 Hook机制的时序图关系 Manifest权限申请 基类Hook做了什么? …
滴滴VirtualApk实战 配置 应⽤ 原理 总结 问题
基于VirtualAPK Android重构之插件化 Plug-in Hello World 插件化框架的选择 插件化原理 引⼊插件化之痛
爱奇艺插件化原理分析之 Neptune框架 插件化基础知识点 类加载 插件化中资源使⽤限制 Apk打包流程 四⼤组件的插件化 插件Activity任务栈 处理插件中的⼴播 处理插件中的Service

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。