Android插件化学习笔记一

前言

最近在腾讯课堂里面看了一遍关于插件化的一门课程《解密支付宝如何在不安装淘票票的情况下加载淘票票原生App》,借此机会,自己尝试着去学习下!

插件化优点

  • 宿主和插件分开编译
  • 并发进行开发
  • 动态更新插件
  • 按需下载模块,第一次加载比较慢
  • 方法数和变量数 65536问题

插件化步骤

  • 插件化分为宿主应用和插件应用
  • 新建Project - 也就是宿主应用
  • 新建一个Module,具有生命周期接口,宿主跳插件应用需要遵守一些标准规范
  • 新建Table Module - 也就是插件应用,同时在BaseActivity里面实现生命周期接口
  • Module通过attach方法注入上下文context,因为插件apk未安装,所以不能直接使用插件的上下文
  • 插件里面重写setContextView(),getWindowManger,getClassLoader这些需要使用上下文的方法,然后使用注入的that进行替换super调用
  • 在宿主app里面创建ProxyActivity,通过插桩的方式进行注册插件的Activity。ProxyActivity里面获取跳转传入的className,同时重写getClassLoader和getResource的方法,替换为PluginManager创建的ClassLoader和Resource
  • 创建PluginManager,单例的形式创建,实现loadPath方法,去加载apk(DexClassLoader)。因为 未安装就不能通过getClassLoader的方式Class.forName这样的方式了
  • 加载未安装apk(DexClassLoader)
  • 插件二级Activity的地方回传到宿主APP里面,BaseActivity里面startActivity

详细Demo查看Github-GoachAlipay

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值