首页 > 代码库 > 插件化(android)
插件化(android)
插件化设计概述(android)
一、 模块划分
- Basic模块包括:初始化接口、插件加载接口、插件更新接口和埋点接口。
a) 初始化接口:完成一些必要的初始化工作。
b) 插件加载接口:包括验证插件和加载插件的工作。
c) 插件更新接口:与服务端通信更新指定插件。
- Marketing模块:依赖Basic模块,实现具体的业务逻辑。
接口组件 图1
插件活动 图2
Sdk加载序列 图3
二、 具体设计
- 插件信息规划
重点考虑插件加载机制,更新、安全防护和后续版本兼容等事项,需要考虑的点有,插件信息写入的位置,插件信息字段规划,字段名称与信息加密方式。
1)插件信息写入位置
在jar中添加一个文件包括插件信息
将插件信息写入zip文件格式内
2)插件信息防止篡改
以非对称加密的方式,服务端以私钥加密插件信息,客户端以公钥解密
字段名称 | 字段意义 | 是否可选 |
|
PluginName | 插件名称 | 否 |
|
PluginVer | 插件版本 | 否 |
|
TargetLibVer | 对应的lib版本 | 是 | 主要为了插件与lib的兼容性 |
MinLibVer | 所需的lib最低版本 | 否 | |
Entry | 插件的入口点 | 是 | 后续如果实现自启动所需要的入口点配置 |
DexMD5 | 插件对应dex的md5 | 否 | 防止dex被篡改 |
Extra | 额外信息键值对 | 是 |
|
- 插件校验流程
插件校验流程 图4
- 插件加载流程
见图3
2. 插件更新流程
在sdk调起的时,尽快发起插件更新请求(建议在另外的进程进行更新防止正在运行逻辑出问题,造成更新无进行)。请求插件时应用的基本信息,插件信息,使服务端能按照一定条件,下发插件(后期可以加入灰度更新).
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。