android Html Package机制说明

来源:互联网 发布:淘宝同款图片怎么处理 编辑:程序博客网 时间:2024/05/22 11:35

术语说明                                                                                                                              2

使用说明                                                                                                                              2

1)Package初始发布                                                                                                        2

     a)Package配置                                                                                                     2

      b)Package源码文件夹                                                                                        2

     c)META.json文件格式                                                                                        2

     d)安全性                                                                                                                3

2)Package在线更新                                                                                                        3

     a)证书文件                                                                                                            3

      b)更新接口                                                                                                            3

     c)更新过程                                                                                                             3

     d)安全性                                                                                                                3

3)META.json生成工具                                                                                                   3

4)多Package支持                                                                                                           3

5)动态package安装                                                                                                       4

6)网络访问限制                                                                                                                4

7)实现概述,详见代码注释                                                                                            4

     a)HtmlPackageInfo                                                                                               4

      b)HtmlPackageSQLiteOpenHelper                                                                  4

     c)HtmlPackageContentProvider                                                                         4

     d)HtmlPackageController                                                                                     4


 

 

术语说明

         HtmlPackage:H5源码包

         ApiEx:原生对H5功能扩展,现有机制版本号为1.0,新机制从2.0开始

使用说明

         1)引入orangehtml作为依赖模块

         2)把H5源码包放在assets目录下,格式为:

                   assets

                     + tylc

                          +META.json // 源码包描述文件

                           |src.zip // h5源码包

         3)通过HtmlSettings.addHtmlPackage()添加h5

         4)将服务器证书保存为assets/HtmlPackage.cer,通过HtmlSettings.setHtmlPackageCertificateFile()设置证书文件

         5)在HtmlFragment中,用orange://name/path访问数据,例如:orange://package1/a.html

         6)H5中可通过orange:///orange.js获得ApiEx扩展js文件

1)Package初始发布

       Html Package最初伴随Apk程序包发布,放置于assets文件夹下:

      a)Package配置

            通过HtmlSettings.addHtmlPackage()接口添加package

            独立理财项目为HtmlSettings.addHtmlPackage(“tylc”)

      b)Package源码文件夹

            与配置文件对应,包含H5相关源码src.zip和信息文件META.json

            例如:assets/package1,assets/package2

            独立理财项目为assets/tylc/{src.zipMETA.json}

      c)META.json文件格式

            描述package版本信息等的文件,每个package下的META.json文件

            独立理财项目为assets/tylc/META.json

            文件格式,合法josn object字符串:

                   {

                          “name": "tylc",                   //package名

                          "version": “4.1.2”,            // 版本号

                           "url": “src.zip路径”,          // 源码包url

                          "sha1": “sha1”,        //src.zip的sha1摘要

                          "sha1WithRSA": “sign”,  // src.zip的sha1WithRSA签名

                          "minApiex":"1.0",             // 要求的最低ApiEx版本,应不低于当前apk的ApiEx

                          "updateDate":"date",       //package发布时间

                          "size": size                      // src.zip文件大小

                   }

      d)安全性

             PackageController会将assets下的src.zip拷贝到程序运行目录,并通过数字签名校验的方式确保数据安全

                  

2)Package在线更新

      a)证书文件

             Apk中打包了CMS服务器的证书文件,保存于assets/HtmlPackage.cer,并通过HtmlSetting接口设置证书,用于验证下载的H5压缩包

            证书的过期不会影响验证过程,机制中没有证书更新逻辑

      b)更新接口

         {

                   “name”:“H5应用名”,

                   “version”:“H5源码版本”,

                   “url”:“下载地址”,

                   “sha1”:“sha1, Base64字符串”,

                  “sha1WithRSA” :“sha1WithRSA, Base64字符串”,

                   “minApiex”:“要求最低的ApiEx版本”,

                   “updateDate”:“更新时间,格式为:yyyy-MM-dd HH:mm:ss Z”,

                       “size”: “源码包大小”

          }

     c)更新过程

            1.检查可用更新,可用package的状态为available

            2.下载文件并检验sha1WithRSA信息,package状态可为:[ready,download_failed,verify_failed]

            3.激活,package状态转为active,数据可用

      d)安全性

            H5数据包保存在程序的内部数据存储区,通过Linux的访问权限控制保护,其他app或adb shell访问需要root权限

            H5源码包不会解压,而是通过ZipFile读取,加载前通过sha1WithRSA方式验证,确保数据不被替换

 

3)META.json生成工具

       程序提供一份META.json文件格式的生成工具,用于解析h5源码压缩包,并自动生成META.json文件,用于随apk发布或自动更新

       a)源码包中的META.json需包含输入字段:name,version,minApiEx

       b)压缩包结构首层目录为单一文件夹,且名字与name对应

4)多Package支持

       可同时支持多个package,以name区分

       独立理财项目的package名为tylc,且当前只有一个package

5)动态package安装

       asserts/HtmlPackage.json配置文件用于导入asserts下的初始化package,如果从服务器获得未定义在HtmlPackage.json中的package信息,则同样可被下载和激活(通过签名验证)

6)网络访问限制

        由于Package管理机制接管了文件访问,并将其控制在orange://package/的域名下,本地Html中的js由于跨域限制而不能直接访问网络

        相应地,Html容器提供了HttpClient扩展,用于提供本地js网络访问能力

7)实现概述,详见代码注释

      a)HtmlPackageInfo

            package数据对象,包括数据字段和一些便捷函数

      b)HtmlPackageSQLiteOpenHelper

            package数据库管理类,访问应通过ContentProvider封装

      c)HtmlPackageContentProvider

            标准Android控件,封装对数据库的访问,和提供监听模式

            提供字段:

                   “id”:唯一标识

                   “name”:packagename

                   “version”:版本

                   “url”:下载地址

                   “sha1”:sha1的Base64

                “sha1_with_rsa”:sha1WithRSA的Base64

                   “min_api_ex":ApiEx版本要求

                   “update_date”:更新发布时间

               “size”:数据包大小

               “state”:状态,可取值

                            [available,downloading,download_failed,verify_failed,ready,active]

               “downloaded”:已下载数据

               “local_path”:数据包本地路径

      d)HtmlPackageController

            package管理中心对象,包括

            1.更新流程接口:

                   checkUpdate:检测更新

                   downloadAndVerifyPackage:下载并验证package

                   applyPackage:激活package

            2.package信息:

                   getHtmlPackageList:package namelist

                   etActiveHtmlPackageInfo(name):当前激活的package,指定名称

                   getUpdatableHtmlPackageInfo(name) :可用的package更新,指定名称

                   getHtmlPackageInfo(uri):获取package信息,指定Uri

           3.package数据:

                   getResource(uri):获取数据输入流,uri格式为:orange://package/path

1 0
原创粉丝点击