当前位置: 首页 > news >正文

插件化:大厂实战项目解说(含腾讯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。
  • 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

  • 腾讯插件化框架 Shadow项目解析
    sample示例代码AndroidManifest.xml分析
    Activity 实现
    替换插件 Activity 的父类
    Service 实现
    BroadcastReceiver 实现
    ContentProvider 实现
    框架自身动态化

以上就是腾讯内部强势推出的“插件化实战学习手册”,有需要的朋友直接点击文末CSDN官方认证微信卡片免费领取。↓↓↓

http://www.cnnetsun.cn/news/4245690.html

相关文章:

  • 炒股十几年的我,不知道算不算老股民了,但我可以告诉你们的是:我现在可以靠“它”养家糊口自由,下面说十几条我炒股多年的经验总结!
  • 2022年要面试的注意啦,Android面试题全网最全汇总
  • 蓝桥杯印章题解析:动态规划求解赠券收集概率问题
  • 什么?你还不会用Kotlin?一起跟着官方文档学习Kotlin协程吧
  • 中国机器人突围:从核心零部件国产替代到AI大模型与ROS 2实践
  • K-均值聚类算法:从原理到实战的完整指南
  • 都说码农发展前景不好,那些35岁以上的程序员们,后来都干什么去了?
  • 医疗级可穿戴传感器模块设计:从指标到落地的全流程实战
  • 超低功耗MCU开发全攻略:选型、初始化、架构与排查技巧
  • 抖音视频批量下载入门:douyin-downloader 一步到位的完整指南
  • 90%的开发者都不知道的UI本质原理和优化方式
  • 刷到血赚!字节跳动内部出品:722页Android开发《360°全方面性能调优》学习手册首次外放,附项目实战!
  • 程序员为什么越老贬值的越厉害?
  • Cisco ACI Logical Architecture Diagram
  • AI GPU选型:NVIDIA vs AMD,成本效率差距背后的生态真相
  • iPhone 连不上 Windows?免 iTunes 装 iPhone 驱动,一条命令 3 分钟搞定
  • 基于SSM和vue的房屋中介管理系统的设计与开发(源码+lw+部署文档+讲解等)
  • 工业电源选型必看:聚合物电容与液态电解电容的关键差异及避坑指南
  • 无真人AI短剧出海全指南:从生成到变现的实操流程
  • Video-Downloader:7 平台分段视频下载工具,贴链接点下载两步搞定
  • Gofile批量下载:3条命令跑完20个带密码的链接
  • 专科生汇报降重太费劲?10个工具实测推荐
  • 草原生态承载力动态建模实战:从遥感数据到牧民决策
  • CMX7241/CMX7341通用平台处理器:一颗芯片实现多协议数字对讲机方案
  • Kafka Console UI 可视化管理平台部署使用指南
  • 基于微信小程序的汽车推荐系统(源码+lw+部署文档+讲解等)
  • 基于python的时光电影网数据可视化分析系统(源码+lw+部署文档+讲解等)
  • obs-multi-rtmp 多路推流一键开播:免费完整指南
  • MM1排队仿真GUI:离散事件建模的交互式教学工具
  • TVA与World模型在具身智能的融合机理研究