zoukankan      html  css  js  c++  java
  • 插件化一(android)

    插件化设计概述(android)

    一、             模块划分

    1. Basic模块包括:初始化接口、插件加载接口、插件更新接口和埋点接口。

    a)         初始化接口:完成一些必要的初始化工作。

    b)         插件加载接口:包括验证插件和加载插件的工作。

    c)         插件更新接口:与服务端通信更新指定插件。

    1. Marketing模块:依赖Basic模块,实现具体的业务逻辑。

                           

    接口组件 图1

     

    插件活动 图2

     

    Sdk加载序列 图3

    二、             具体设计

    1. 插件信息规划

    重点考虑插件加载机制,更新、安全防护和后续版本兼容等事项,需要考虑的点有,插件信息写入的位置,插件信息字段规划,字段名称与信息加密方式。

    1)插件信息写入位置

      在jar中添加一个文件包括插件信息

      将插件信息写入zip文件格式内

    2)插件信息防止篡改

      以非对称加密的方式,服务端以私钥加密插件信息,客户端以公钥解密

    字段名称

    字段意义

    是否可选

    PluginName

    插件名称

    PluginVer

    插件版本

    TargetLibVer

    对应的lib版本

    主要为了插件与lib的兼容性

    MinLibVer

    所需的lib最低版本

    Entry

    插件的入口点

    后续如果实现自启动所需要的入口点配置

    DexMD5

    插件对应dex的md5

    防止dex被篡改

    Extra

    额外信息键值对

    1. 插件校验流程

     

    插件校验流程 图4

    1. 插件加载流程

    见图3

      2. 插件更新流程

    在sdk调起的时,尽快发起插件更新请求(建议在另外的进程进行更新防止正在运行逻辑出问题,造成更新无进行)。请求插件时应用的基本信息,插件信息,使服务端能按照一定条件,下发插件(后期可以加入灰度更新).

  • 相关阅读:
    el标签 2016-06-05 21:39 477人阅读 评论(15) 收藏
    5月英语总结 2016-05-31 21:31 395人阅读 评论(12) 收藏
    通过在__init__.py中定义__all__变量,来简化from*import*的书写
    python已安装包的查看方法和requirements.text的使用
    virtualenv安装 以及在PyCharm中的使用
    利用Fitnesse测试外部jar包
    说一下个人对自动化测试以及测试的看法
    oracle 导入sql文件乱码
    问题收集
    Gson应用:从json格式简单字符串中获取value
  • 原文地址:https://www.cnblogs.com/anye6488/p/3878723.html
Copyright © 2011-2022 走看看