插件化一(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调起的时,尽快发起插件更新请求(建议在另外的进程进行更新防止正在运行逻辑出问题,造成更新无进行)。请求插件时应用的基本信息,插件信息,使服务端能按照一定条件,下发插件(后期可以加入灰度更新).
插件化一(android)的更多相关文章
- Android基于代理的插件化思路分析
前言 正常的App开发流程基本上是这样的:开发功能-->测试--->上线,上线后发现有大bug,紧急修复---->发新版本---->用户更新----->bug修复.从发现 ...
- 小白也能看懂插件化DroidPlugin原理(一)-- 动态代理
前言:插件化在Android开发中的优点不言而喻,也有很多文章介绍插件化的优势,所以在此不再赘述.前一阵子在项目中用到 DroidPlugin 插件框架 ,近期准备投入生产环境时出现了一些小问题,所以 ...
- 小白也能看懂的插件化DroidPlugin原理(一)-- 动态代理
前言:插件化在Android开发中的优点不言而喻,也有很多文章介绍插件化的优势,所以在此不再赘述.前一阵子在项目中用到 DroidPlugin 插件框架 ,近期准备投入生产环境时出现了一些小问题,所以 ...
- Android组件化和插件化开发
http://www.cnblogs.com/android-blogs/p/5703355.html 什么是组件化和插件化? 组件化开发就是将一个app分成多个模块,每个模块都是一个组件(Modul ...
- Android 插件化
1.介绍 涛哥写的文章 <Android 插件化的 过去 现在 未来> http://kymjs.com/code/2016/05/04/01#rd
- Android Small插件化框架源码分析
Android Small插件化框架源码分析 目录 概述 Small如何使用 插件加载流程 待改进的地方 一.概述 Small是一个写得非常简洁的插件化框架,工程源码位置:https://github ...
- Android 插件化 动态升级
最新内容请见原文:Android 插件化 动态升级 不少朋友私信以及 Android开源交流几个 QQ 群 中都问到这个问题,这里简单介绍下 1.作用 大多数朋友开始接触这个问题是因为 App 爆棚了 ...
- Android的Proxy/Delegate Application框架 (主要介绍插件化开发)
1. 插件化的原理 是 Java ClassLoader 的原理:Java ClassLoader基础 常用的其他解决方法还包括:Google Multidex,用 H5 代替部分逻辑,删无用代码,买 ...
- Android插件化开发
客户端开发给人的印象往往是小巧,快速奔跑.但随着产品的发展,目前产生了大量的门户型客户端.功能模块持续集成,开发人员迅速增长.不同的开发小组开发不同的功能模块,甚至还有其他客户端集成进入.能做到功能模 ...
- 携程Android App插件化和动态加载实践
携程Android App的插件化和动态加载框架已上线半年,经历了初期的探索和持续的打磨优化,新框架和工程配置经受住了生产实践的考验.本文将详细介绍Android平台插件式开发和动态加载技术的原理和实 ...
随机推荐
- spark accumulator累加器
java /** * accumulator可以让多个task共同操作一份变量,主要进行多个节点对一个变量进行共享性的操作,accumulator只提供了累加的功能 * 只有driver可以获取acc ...
- MySQL实现类似Oracle中的nextval和currval
CREATE TABLE `sequence` ( `seq_name` varchar(50) NOT NULL, `current_val` int(11) NOT NULL, `incremen ...
- android (12) Fragment使用
一.Fragment概要: 于Fragment经,布局更好地适应各种尺寸的android打电话,加方便的实现不同页面的切换,就不像曾经activity的跳转那样的麻烦了.能够在activity中嵌套不 ...
- Linux 网络编程——TCP
环境:Linux C 一.协议介绍 TCP是面向连接的协议,提供可靠的数据传输:TCP协议的可靠传输基于三次握手.四次挥手以及确认重传机制实现.下面来具体展示下TCP的三次握手.四次挥 ...
- vista/win7系统 红警/CS/星际争霸 局域网连接方法
昨晚,闲来无事,忽然想起打红警来,于是和宿舍舍友商量一起联机打红警, 可是在win7下不能联机红警,网上很多人都这么说,昨晚我折腾了2小时,终于解决了这个问题. win7系统是可以联机打红警的!!!! ...
- Extension of write anywhere file system layout
A file system layout apportions an underlying physical volume into one or more virtual volumes (vvol ...
- 如何JOPtionPane的showConfirmDialog对话框button设置监视器
只是最近才知道javaGUI编程.我认为,独立撰写一个记事本,要在其中的对话框过程button设置监视器.但找了一下api相应的方法已被发现,只有找到: Returns: an integer ind ...
- Java设计模式透析之 —— 单例(Singleton)
写软件的时候经常需要用到打印日志功能,可以帮助你调试和定位问题,项目上线后还可以帮助你分析数据.但是Java原生带有的System.out.println()方法却很少在真正的项目开发中使用,甚至像f ...
- 阐述php(五岁以下儿童)
注意事项和使用功能
1.函数声明 <?php /** * function 函数名(參数1, 參数2.... ){ * 函数体; * 返回值; * } */ $sum = sum(3, 4); echo $sum; ...
- DDD实战6 单元测试
1.在Products解决方案文件夹下面新建一个项目 一个单元测试项目 Product.Tests.