安卓插件化之 插桩式

安卓插件化优缺点

优点:模块解耦,扩展性强;应用间的介入;解决65535不能编译问题;动态升级和修复bug;

缺点:增加主应用的逻辑难度;技术难度,现在成熟的技术都没有开源;

实现插件化方式:插桩式 ;hook;反射

插桩式原理:下载淘票票apk,利用packageManger解析获取packageInfo包信息(例如activity信息,service信息等等);这里我以activity为例;通过packageInfo获取插件的 dexClassLoad对象resources对象,在主APP创建个activity代理,代理插件里面所有activity;

通过 重写getClassLoad()方法返回插件的dexclassload对象(那加载的就是插件里面的类),getResources()方法 返回插件的resources对象(这样就加载插件里面的资源);因为插件apk没有安装所有是获取不到上下文的,通过接口回调方法,主APP反射获取接口实例 实现接口方法,插件activity实现接口,这个插件activity就能调用接口里面的方法;

核心原理是定义接口,主App实现接口里面的方法,插件实现接口;利用接口回调方法。

 


 

我们以支付宝app为例,在支付宝里面我们点击淘票票就直接打开淘票票App了,但是实际我们手机可能都没有安装淘票票软件,而且支付宝apk安装包大小也不是很大,排除淘票票的apk依赖进去了;支付宝是如何做到的呢,利用插件化实现这功能的。

 

1:定义lib里面定义个接口  代码如下

2:定义个插件(就是一个正常的apk工程)依赖接口lib,定义个BaseActivity实现接口

 

3:主app 也需要依赖lib 负责获取插件包的classload 和resources

 

//测试 插件打包成apk修改名字为taopiaopiao.apk,放到sd卡里面

这里只是以activity为例,实际开发四大组件 都需要处理;

 

源码地址:https://github.com/zhudaihao/MyPlugIn

 

 

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值