重磅开源!腾讯内部强势推出的“插件化实战学习手册”已出炉,看完还不会算我输!

简介


对于App而言,所谓的插件化,个人的理解就是把一个完整的App拆分成宿主和插件两大部分,我们在宿主app运行时可以动态的载入或者替换插件的部分,插件不仅是对宿主功能的扩展而且还能减小宿主的负担,所谓的宿主就是运行的app,插件即宿主运行时加载的apk文件,这样宿主和插件结合的方案技术就是插件化。

为什么要插件化?


  • 解耦,独立各大模块的业务成为插件,互不干扰,即用即插,方便开发与维护。当业务庞大、繁琐之后,是否存在牵一发而动全身的感觉,是否存在逻辑过于复杂、耦合度较高、难以掌控整个项目。

  • 加快编译。每次修改后无需重新编辑整个工程项目,可以单独编译某个插件工程,对于庞大的项目而言,速度就是至上的武功。

  • 动态更新。无需重新下载与安装app,可以单独下载某个插件apk,直接加载,从动态更新、包体积和流量上感觉是个不错的选择。

  • 模块定制。需要什么模块下载什么模块,无需让app变得庞大,所需所得。

难点在哪


大家其实都知道,Android 应用本身是基于魔改的 Java 虚拟机的,动态加载代码简直不要太简单,只需要使用 DexClassLoader 加载 Apk,然后反射里面的代码就可以了。

但是光能反射代码是没有意义的,插件化真正的魅力在于,可以动态加载执行 Android 组件(即 Activity、Service、BroadcastReceiver、ContentProvider、Fragment)等。

仔细想一下,其实要做到这一点是有难度的,最主要的阻碍是,四大组件是在系统里面中注册的,具体来说是在 Android 系统的 ActivityManagerService (AMS) 和 PackageManagerService (PMS) 中注册的,而四大组件的解析和启动都需要依赖 AMS 和 PMS,如何欺骗系统,让他承认一个未安装的 Apk 中的组件,就是插件化的最大难点。

另外,资源(特指 R 中引用的资源,如 layout、values 等)也是一大问题,想象一下你在宿主进程中使用反射加载了一个插件 Apk,代码中的 R 对应的 id 却无法引用到正确的资源,会产生什么后果。

总结一下,其实做到插件化的要点就这几个:

  • 反射并执行插件 Apk 中的代码(ClassLoader Injection)

  • 让系统能调用插件 Apk 中的组件(Runtime Container)

  • 正确识别插件 Apk 中的资源(Resource Injection)

当然还有其他一些小问题,但可能不是所有场景下都会遇到,下次再另外详细阐述。

插件化是一门很有意思的学问,网上已经有很多“入门知识”和“实现原理”之类的文章,但是关于插件化的实战却没有一个系统、全面的分享,下面我要分享的是最近小编有幸在腾讯高工手里扒到这份“插件化实战学习手册”,这位大佬主导开发过多个采用插件化架构的APP项目。手册中收录了各互联网大厂热门的插件化项目实战,从新手到架构师,这份学习手册足以。

第一章、插件化技术的前世今生


  • 插件化提要

  • 插件化发展历史

第二章 插件化原理


  • 类加载

  • 双亲委托机制

  • 资源加载

  • 四大组件支持

  • Proxy Activity代理

  • hook方式

第三章 Android插件化初探


  • 从零开始实现一个插件化框架

  • Activity的启动流程

  • 寻找Hook点

  • 撸码阶段

  • 代理对象

  • 偷天换日,替换原来的Intent

  • ActivityThread

  • 将代理的intent替换回来

有需要的朋友直接点击此处的蓝色字体获取完整文档。

第四章 架构演化(大厂篇)


  • 360插件开发之DroidPlugin

插件开发之360 DroidPlugin源码分析

插件开发之360 DroidPlugin源码分析之Hook机制

Hook机制的包结构关系

Hook机制类图关系

Hook机制的时序图关系

Manifest权限申请

基类Hook做了什么?

  • 滴滴VirtualApk实战

配置

应用

原理

最后

只要是程序员,不管是Java还是Android,如果不去阅读源码,只看API文档,那就只是停留于皮毛,这对我们知识体系的建立和完备以及实战技术的提升都是不利的。

真正最能锻炼能力的便是直接去阅读源码,不仅限于阅读各大系统源码,还包括各种优秀的开源库。

腾讯、字节跳动、阿里、百度等BAT大厂 2019-2021面试真题解析

资料太多,全部展示会影响篇幅,暂时就先列举这些部分截图

《Android学习笔记总结+移动架构视频+大厂面试真题+项目实战源码》点击传送门,即可获取!
、百度等BAT大厂 2019-2021面试真题解析**

[外链图片转存中…(img-s4CYhOCM-1715420377541)]

资料太多,全部展示会影响篇幅,暂时就先列举这些部分截图

《Android学习笔记总结+移动架构视频+大厂面试真题+项目实战源码》点击传送门,即可获取!

  • 21
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值