应用程序免安装运行控制方法及其装置的制造方法

文档序号:9375311阅读:370来源:国知局
应用程序免安装运行控制方法及其装置的制造方法
【技术领域】
[0001] 本发明涉及应用程序运行控制领域,具体而言,本发明涉及以Android系统原理 为基础的一种应用程序免安装运行控制方法及其装置。
【背景技术】
[0002] 随着移动互联网的发展,移动终端安装的应用程序越来越多,为了不断满足用户 的新需求,就需要不断地增加新的功能模块,而现有技术中应用程序每次更新升级时都需 要重新安装,会使得用户体验度下降,且升级后的应用程序的体积大,安装占用内存大,且 浪费大量的用户流量。
[0003] 为了克服应用程序版本更迭所导致的流量浪费的问题,现有技术常以提供增量包 的形式来降低安装流量,这种方式则需要架设繁重的云端服务架构,并且对终端的计算量 也提出了更高的要求。更关键的,这种方式并不能满足应用程序功能模块灵活扩展这一需 求。
[0004] 现有技术也尝试在Activity提供的界面中进一步提供网页访问接口,甚至结合 HTML5等新型技术,以期实现应用程序的功能扩充,但是,网页提供的交互功能毕竟有限,未 必能充分开发终端的最大性能,用户体验上也将有所下降。
[0005] 同时,应用程序的免安装运行需求也变得日益迫切,免安装可以大大减少安装应 用程序占用的内存空间,提高用户使用应用程序的体验度,故而提供一种应用程序的免安 装运行方法变得极其重要。

【发明内容】

[0006] 本发明的目的旨在解决上述至少一个问题,提供一种应用程序免安装运行控制方 法及其相应装置。
[0007] 为了实现上述目的,本发明采用以下技术方案:
[0008] 本发明提供一种应用程序免安装运行控制方法,包括以下步骤:
[0009] 响应于运行所述应用程序的指令,解析该应用程序的安装文件,获取其所需的运 行信息,并据其中的配置文件预先注册应用程序运行所需程序资源和进程资源;
[0010] 基于所述运行信息构造所述应用程序的运行环境,利用所述预注册的程序资源及 进程资源运行该应用程序;
[0011] 在所述应用程序运行过程中,调度应用程序运行所需的系统资源,以确保该应用 程序正常运行。
[0012] 具体的,所述运行信息包括应用程序的包名、版本号、组件。
[0013] 进一步,所述组件包括 Activity 组件、Broadcast Receiver 组件、Service 组件、 ContentProvider 组件。
[0014] 具体的,所述预先注册应用程序运行所需程序资源和进程资源的过程包括:
[0015] 向系统预注册多个Activity坑位;
[0016] 向系统预注册多个进程;
[0017] 每个进程向系统预注册一个ContentProvider和一个Service。
[0018] 进一步,所述构造所述应用程序的运行环境的过程包括在每个进程启动时动态注 册广播。
[0019] 进一步,所述构造所述应用程序的运行环境的过程还包括:
[0020] 基于注册的组件坑位为待加载的应用程序组件分配相适配的目标组件坑位;
[0021] 将待加载应用程序的组件加载到目标坑位所对应的进程空间中运行。
[0022] 进一步,所述方法还包括步骤,将获取的运行信息缓存于系统内存,以供应用程序 所处的进程在运行过程中查询相关信息。
[0023] 进一步,所述方法还包括步骤,在应用程序运行过程中,其所处的进程通过binder 接口查询缓存于内存中的运行信息。
[0024] 进一步,所述方法还包括步骤,依据应用程序匹配的系统版本号为应用程序适配 相应的系统接口函数。
[0025] 具体的,所述调用相应的运行资源的步骤包括,拦截系统接口函数 StartActivity (),将系统进程的相应Activity组件参数替换为应用程序相应的Activity 组件参数,以启动应用程序的Activity组件。
[0026] 具体的,所述调用相应的运行资源的步骤包括,拦截系统接口函数 getContetProvider (),将系统进程的相应ContentProvider组件参数替换为应用程序相 应的ContentProvider组件参数,以启动应用程序的ContentProvider组件。
[0027] 具体的,所述调用相应的运行资源的步骤包括,拦截系统接口函数 startService (),将系统进程的相应Service组件参数替换为应用程序相应的Service组 件参数,以启动应用程序的Service组件。
[0028] 具体的,所述对系统接口函数的拦截采用Hook技术。
[0029] 进一步,所述方法还包括步骤,当应用程序在运行过程中执行写操作时,对其写操 作进行重定向,以使其写入其所属的文件存储目录。
[0030] 进一步,还包括步骤,在对系统接口函数进行调用的过程中,将函数对象缓存入内 存中,以供重复调用时直接获取相应的函数对象。
[0031] 进一步,还包括步骤,在应用程序运行过程中,解析系统传输的Intent以获取要 启动的组件,与应用程序的所有组件进行匹配,以确定要启动的应用程序组件并启动。
[0032] 进一步,还包括步骤,在应用程序运行过程中,解析所述系统传输的Intent以获 取相应的特征信息,基于特征信息匹配确定要启动的应用程序组件并启动。
[0033] 一种应用程序免安装运行控制装置,包括:
[0034] 响应单元:用于响应于运行所述应用程序的指令,解析该应用程序的安装文件,获 取其所需的运行信息,并据其中的配置文件预先注册应用程序运行所需程序资源和进程资 源;
[0035] 构造单元:用于基于所述运行信息构造所述应用程序的运行环境,利用所述预注 册的程序资源及进程资源运行该应用程序;
[0036] 调度单元:用于在所述应用程序运行过程中,调度应用程序运行所需的系统资源, 以确保该应用程序正常运行。
[0037] 具体的,所述运行信息包括应用程序的包名、版本号、组件。
[0038] 具体的,所述组件包括Activity组件、Broadcast Receiver组件、Service组件、 ContentProvider 组件。
[0039] 具体的,所述响应单元预先注册应用程序所需程序资源和进程资源的过程包括:
[0040] 向系统预注册多个Activity坑位;
[0041] 向系统预注册多个进程;
[0042] 每个进程向系统预注册一个ContentProvider和一个Service。
[0043] 进一步,所述构造单元构造所述应用程序的运行环境的过程包括在每个进程启动 时动态注册广播。
[0044] 进一步,所述构造单元构造所述应用程序的运行环境的过程还包括:
[0045] 基于注册的组件坑位为待加载的应用程序组件分配相适配的目标组件坑位;
[0046] 将待加载应用程序的组件加载到目标坑位所对应的进程空间中运行。
[0047] 进一步,还包括第一存储单元,用于将获取的运行信息缓存于系统内存,以供应用 程序所处的进程在运行过程中查询相关信息。
[0048] 进一步,还包括查询单元,用于在应用程序运行过程中,其所处的进程通过binder 接口查询缓存于内存中的运行信息。
[0049] 进一步,还包括适配单元,用于依据应用程序匹配的系统版本号为应用程序适配 相应的系统接口函数。
[0050] 具体的,所述调度单元执行的步骤包括,拦截系统接口函数StartActivityO,将 系统进程的相应Activity组件参数替换为应用程序相应的Activity组件参数,以启动应 用程序的Activity组件。
[0051] 具体的,所述调度单元执行的步骤包括,拦截系统接口函数 getContetProvider (),将系统进程的相应ContentProvider组件参数替换为应用程序相 应的ContentProvider组件参数,以启动应用程序的ContentProvider组件。
[0052] 具体的,所述调度单元执行的步骤包括,拦截系统接口函数StartServiceO,将系 统进程的相应Service组件参数替换为应用程序相应的Service组件参数,以启动应用程 序的Service组件。
[0053] 具体的,所述对系统接口函数的拦截采用Hook技术。
[0054] 进一步,还包括重定向单元,用于当应用程序在运行过程中执行写操作时,对其写 操作进行重定向,以使其写入其所属的文件存储目录。
[0055] 进一步,还包括第二存储单元,用于在对系统接口函数进行调用的过程中,将函数 对象缓存入内存中,以供重复调用时直接获取相应的函数对象。
[0056] 进一步,还包括Intent解析单元,用于在应用程序运行过程中,解析系统传输的 Intent以获取要启动的组件,与应用程序的所有组件进行匹配,以确定要启动的应用程序 组件并启动。
[0057] 进一步,还包括Intent解析单元,用于在应用程序运行过程中,解析所述系统传 输的Intent以获取相应的特征信息,基于特征信息匹配确定要启动的应用程序组件并启 动。
[0058] 相比现有技术,本发明的方案具有以下优点:
[0059] 1、本发明通过对Android系统的包管理服务相关函数进行拦截,绕过系统查验的 同时,解析获取免安装应用程序的各组件信息,由宿主程序预先向系统注册多个进程及组 件坑位。运行应用程序过程中,为应用程序的组件分配相匹配的组件坑位,并加载相应的应 用程序组件,在应用程序运行过程中,对系统的相应接口函数进行拦截,将相应组件参数替 换为应用程序的组件参数,从而使应用程序通过宿主程序的进程及预注册组件坑位实现免 安装运行。同时,在宿主程序运行免安装应用程序的过程中,对应用程序的写操作进行重定 位,以使其写入所属的路径下。由此,实现应用程序的免安装运行,对于多功能模块的应用 程序来说,将各功能模块独立出来,可以减小主程序的体积,对于远程下载进行更新升级的 情况而言,每次只需下载相应的功能模块即可,即节省流量,又提高效率,提高用户体验度。
[0060] 2、基于本发明所述方法可以实现应用程序的动态加载,对于包括多种功能模块的 应用程序而言,使其各模块实现解耦合,当单个模块升级修改时,其他模块不受影响,同时 也使该应用程序增加或修改某个功能模块时,无需修改主程序,不需要发布新版本,有利于 应用程序的功能模块的灵活扩展,从而大大增加了应用程序开发的灵活度。
[0061] 3、基于本发明所述方法,应用程序的功能模块可以实现标准化,由此便可以简化 应用分发系统的云端实现,有利于不同应用程序之间的资源共享。不同应用程序之间只要 构建了实施本发明的架构,即可通过下载一些通用的功能模块来实现同一功能,显然大大 减轻了开发者的劳动,也简化了服务器的程序资源的复杂度。
[0062] 本发明附加的方面和优点将在下面的描述中部分给出,这些将从下面的描述中变 得明显,或通过本发明的实践了解到。
【附图说明】
[0063] 本发明上述的和/或附加的方面和优点从下面结合附图对实施例的描述中将变 得明显和容易理解,其中:
[0064] 图1为本发明的应用程序免安装运行控制方法的流程示意图;
[0065] 图2为本发明的活动组件进行空间分配方法的流程示意图;
[0066] 图3为本发明的应用程序免安装运行控制装置原理框图。
【具体实施方式】
[0067] 下面详细描述本发明的实施例,所述实施例的示例在附图中示出,其中自始至终 相同或类似的标号表示相同或类似的元件或具有相同或类似功能的元件。下面通过参考附 图描述的实施例是示例性的,仅用于解释本发明,而不能解释为对本发明的限制。
[0068] 本技术领域技术人员可以理解,除非特意声明,这里使用的单数形式"一"、"一 个"、"所述"和"该"也可包括复数形式。应该进一步理解的是,本发明的说明书中使用的措
当前第1页1 2 3 4 5 6 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1