小码匠小程序制作 潜水
  • 9发帖数
  • 6主题数
  • 0关注数
  • 0粉丝
开启左侧

腾讯自主研发的Android插件框架,经过线上亿级用户量检验附源码

[复制链接]
小码匠小程序制作 发表于 2021-11-9 10:15:01 | 显示全部楼层 |阅读模式 打印 上一主题 下一主题
先容

Shadow是一个腾讯自主研发的Android插件框架,经过线上亿级用户量检验。 Shadow不仅开源分享了插件技术的关键代码,还完整的分享了上线部署所需要的全部设计。

与市面上其他插件框架相比,Shadow主要具有以下特点:


  • 复用独立安装App的源码:插件App的源码原来就是可以正常安装运行的。
  • 零反射无Hack实现插件技术:从理论上就已经确定无需对任何系统做兼容开发,更无任何隐藏API调用,和Google限制非公开SDK接口访问的策略完全不冲突。
  • 全动态插件框架:一次性实现完美的插件框架很难,但Shadow将这些实现全部动态化起来,使插件框架的代码成为了插件的一部门。插件的迭代不再受宿主打包了旧版本插件框架所限制。
  • 宿主增量极小:得益于全动态实现,真正合入宿主步伐的代码量极小(15KB,160方法数左右)。
  • Kotlin实现:core.loader,core.transform核心代码完全用Kotlin实现,代码简便易维护。
支持特性


  • 四大组件
  • Fragment(代码添加和Xml添加)
  • DataBinding(无需特别支持,但已验证可正常工作)
  • 跨进程利用插件Service
  • 自界说Theme
  • 插件访问宿主类
  • So加载
  • 分段加载插件(多Apk分别加载或多Apk以此依赖加载)
  • 一个Activity中加载多个Apk中的View
编译与开发环境

环境准备

第一次clone Shadow的代码到本地后,建议先在下令行编译一次。


  • 在编译前,必须设置ANDROID_HOME环境变量。
  • 在编译时,必须利用gradlew脚本,以包管采用了项目配置的Gradle版本。
在下令行测试编译时可以实验这个任务:

./gradlew build
如果Gradle提示需要Java 11,建议直接利用Android Studio Arctic Fox内置的JDK。 macOS:export JAVA_HOME=/Applications/Android\ Studio.app/Contents/jre/Contents/Home 其他OS欢迎PR补充。

如果没有堕落,再实验用Android Studio打开工程。


  • 必须利用3.5或更高版本的Android Studio打开工程。(业务插件开发时没有限制)
  • 必须关闭Android Studio的Instant Run功能。
然后就可以在IDE中选择sample-host模块直接运行了。


                               
登录/注册后可看大图

Shadow的全部代码都位于projects目录下的3个目录,分别是:


  • sdk包罗SDK的全部代码
  • test包罗SDK的主动化测试代码
  • sample包罗演示代码
其中sample应该是各人体验Shadow的最佳环境。 详见sample目录中的README先容。

本身写的测试代码堕落?

以我们多年的插件环境下业务开发履历,插件框架是不可能一步到位实现完美的。 因此,我们信赖大部门业务在接入时都是需要肯定的二次开发工作。 Shadow现有的代码满足的是我们本身的业务如今的需求。得益于全动态的设计, 插件框架和插件本身都是动态发布的,插件包里既有插件代码也有插件框架代码, 所以可以根据新版本插件的需要同时开发插件框架。

例如,ShadowActivity没有实现全全部Activity方法,你写的测试代码可能用到了, 就会出现Method Not Found错误,只需要在ShadowActivity中实现对应方法就可以了。 大部门方法的实现都只是需要简单的转调就能工作正常。

想要源码,记得关注+转发+私信 私信回复【Android插件框架
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

猜你喜欢
在线客服邮箱
wxcy#wkgb.net

邮箱地址#换为@

Powered by 创意电子 ©2018-现在 专注资源实战分享源码下载站联盟商城