CN106383723A - 一种动态修改用户已安装移动App程序的方法 - Google Patents
一种动态修改用户已安装移动App程序的方法 Download PDFInfo
- Publication number
- CN106383723A CN106383723A CN201610917793.2A CN201610917793A CN106383723A CN 106383723 A CN106383723 A CN 106383723A CN 201610917793 A CN201610917793 A CN 201610917793A CN 106383723 A CN106383723 A CN 106383723A
- Authority
- CN
- China
- Prior art keywords
- mobile app
- engine
- enforcement engine
- app program
- application enforcement
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Granted
Links
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F8/00—Arrangements for software engineering
- G06F8/60—Software deployment
- G06F8/65—Updates
- G06F8/658—Incremental updates; Differential updates
Landscapes
- Engineering & Computer Science (AREA)
- Software Systems (AREA)
- General Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Computer Security & Cryptography (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Stored Programmes (AREA)
Abstract
本发明公开了一种动态修改用户已安装移动App程序的方法,其实现步骤为:在已安装的移动APP程序中设置应用执行引擎、渲染引擎;应用执行引擎在移动App程序启动时被初始化,并由该应用执行引擎托管移动APP程序后续代码的加载与执行;应用执行引擎在初始化过程中还负责启动渲染引擎,该渲染引擎托管移动App程序的UI展示。本发明的一种动态修改用户已安装移动App程序的方法与现有技术相比,能够在服务器端动态的修改用户已安装到手机上的App的程序逻辑,满足产品运营时,快速动态修复产品缺陷的需求,实用性强。
Description
技术领域
本发明涉及计算机应用技术领域,具体地说是一种动态修改用户已安装移动App程序的方法。
背景技术
在移动App开发领域,尤其是在移动App发布后的运维阶段,产品经常需要发布新版本来支持新特性或修复错误。这类更新发布往往会非常频繁。但应用程序的发布方(应用商店)往往因审查流程的限制,不能满足如此高的发布频次。因此移动App的开发及运维人员非常迫切的需要找到一种手段来抵消应用商店审查流程所带来的负面影响。目前一个比较理想的解决思路就是:让App能够被动态修改,实现修改已安装程序的行为。
目前市场上也有相关的产品去解决这类问题,例如:iOS开发领域的JSPatch项目。此类项目的设计与本发明提到技术具有相同的目标,但实际的解决思路具有一定的局限性。例如JSPatch只能替换程序中的一部分逻辑代码,存在一定的“死角”。例如JSPatch显示调用启动,且对调用点所在函数无法进行修改。基于此,现提供一种动态修改用户已安装移动App程序的方法,来解决上述问题,本发明的核心关注点是能够实现动态修改已安装移动App行为的同时,最大化的扩展可修改代码块的范围,实现真正意义上的在线热修复。
发明内容
本发明的技术任务是针对以上不足之处,提供一种动态修改用户已安装移动App程序的方法。
一种动态修改用户已安装移动App程序的方法,其实现步骤为:
在已安装的移动APP程序中设置应用执行引擎、渲染引擎,其中应用执行引擎用于解析执行代码,即时编译或预编译,同时该应用执行引擎提供接口用于内部托管的代码访问外部的API;渲染引擎用于解析UI定义来了解UI的布局、样式以及UI元素的事件绑定信息,并通过调用原生API实现界面绘制;
应用执行引擎在移动App程序启动时被初始化,并由该应用执行引擎托管移动APP程序后续代码的加载与执行;
应用执行引擎在初始化过程中还负责启动渲染引擎,该渲染引擎托管移动App程序的UI展示。
应用执行引擎的初始化阶段向服务端发出请求来校验是否存在新的补丁,当发现新的补丁时,应用执行引擎将下载其至本地移动APP程序,并替换旧的代码。
应用执行引擎还解析执行代码,业务逻辑使用应用执行引擎所支持的语言进行开发,且在移动APP程序内,应用执行引擎支持所有的动态编程语言。
渲染引擎解析的UI定义是指UI定义的数据结构,该数据结构来自于文件、网络请求返回的数据或代码中的定义,该数据结构包括YAML、JSON、XML。
渲染引擎在解析UI定义之后,通过转调系统本地接口生成UI,且该UI引擎可通过预处理并缓存结果的方式加快处理速度。
UI绘制界面时,对于UI元素的事件绑定,统一绑定至应用执行引擎上,当有事件触发时应用执行引擎直接截获事件,待识别事件来源与目标代码后进行转发调用。
所述应用执行引擎使用移动APP程序允许的任意动态语言执行引擎进行实现,包括JavaScript、Lua;渲染引擎使用原生代码实现,或使用与应用执行引擎一致的动态语言实现。
本发明的一种动态修改用户已安装移动App程序的方法和现有技术相比,具有以下有益效果:
本发明的一种动态修改用户已安装移动App程序的方法,能够在服务器端动态的修改用户已安装到手机上的App的程序逻辑,满足产品运营时,快速动态修复产品缺陷的需求,在实现动态修改已安装移动App行为的同时,最大化的扩展可修改代码块的范围,实用性强,适用范围广泛,具有很好的推广应用价值。
具体实施方式
下面结合具体实施例对本发明作进一步说明。
本发明公开了一种动态修改用户已安装移动App程序的方法,实现移动App内部整体逻辑最大化的动态化,利用本发明可以根据需要将任意范围但不包括系统限定范围的逻辑代码转换为可被动态修改或替换的代码。从而实现在程序分发安装后,通过服务端动态修改客户端行为能力的目的。
其实现步骤为:
移动App程序初始阶段初始化应用执行引擎。后续代码的加载与执行由应用执行引擎托管。
移动App程序的UI展示由渲染引擎托管。渲染引擎在应用执行引擎启动后,由其帮助初始化。之后通过被其发挥所用。
应用执行引擎能够具备解析执行代码的能力。在移动操作系统环境允许的情况下,应当具备即时编译或预编译的能力。同时应用执行引擎应当能够提供接口帮助内部托管的代码访问外部的API。
应用执行引擎的初始化阶段会向服务端发出请求来校验是否存在新的补丁。一旦发现新的补丁,应用执行引擎将下载其至本地。并替换旧的代码。
渲染引擎通过解析UI定义来理解UI的结构、样式及UI元素的事件绑定。UI定义可以是任意的能够承载数据结构的形式。渲染引擎在解析“UI定义”之后,通过转调系统本地接口生成UI。必要的时候UI引擎可以通过预处理并缓存结果的方式加快处理速度。
渲染引擎所支持的UI定义数据结构可以来自于文件、网络请求返回的数据或者代码中的定义。
应用执行引擎在应用启动时被初始化,之后接管后续的代码加载和执行。初始化过程中会检查服务端是否存在相对当前版本更新的补丁。如果有则下载到本地,替换掉旧的代码。
应用执行引擎可以解析执行代码。因此业务逻辑需要使用应用执行引擎所支持的语言进行开发。在移动操作系统允许方位内,应用执行引擎可以支持任何的动态编程语言。
应用执行引擎在初始化过程中还负责启动UI渲染引擎。UI渲染引擎通过解析UI定义的数据结构,了解UI的布局、样式以及UI元素的事件绑定信息。之后通过调用原生API实现界面绘制。
UI绘制时,对于UI元素的事件绑定会统一绑定至应用执行引擎上。当有事件触发时应用执行引擎现行截获事件,待识别事件来源与目标代码后进行转发调用。
以下将通过一个实际实施场景举例,实施过程需要设计一种承载UI定义的数据结构、设计并开发一个应用执行引擎以及一个UI渲染引擎:
UI定义可以使用已有的数据结构进行承载。例如YAML、JSON、XML等。具体的例如:
view:
form:
input:
label: 用户名
type: textfield
validator: { length > 6, length < 32, pattern: \w{6,32} }
input:
label: 密码
type: password
validator: { length > 8, length < 1024 }
应用执行引擎可以使用系统允许的任意动态语言执行引擎进行实现。例如JavaScript、Lua等。
UI渲染引擎可以使用原生代码实现,也可以使用与应用执行引擎一致的动态语言实现。UI渲染引擎再解析UI定义后通过调用原生API实现UI绘制。
通过上面具体实施方式,所述技术领域的技术人员可容易的实现本发明。但是应当理解,本发明并不限于上述的具体实施方式。在公开的实施方式的基础上,所述技术领域的技术人员可任意组合不同的技术特征,从而实现不同的技术方案。
除说明书所述的技术特征外,均为本专业技术人员的已知技术。
Claims (7)
1.一种动态修改用户已安装移动App程序的方法,其特征在于,其实现步骤为:
在已安装的移动APP程序中设置应用执行引擎、渲染引擎,其中应用执行引擎用于解析执行代码,即时编译或预编译,同时该应用执行引擎提供接口用于内部托管的代码访问外部的API;渲染引擎用于解析UI定义来了解UI的布局、样式以及UI元素的事件绑定信息,并通过调用原生API实现界面绘制;
应用执行引擎在移动App程序启动时被初始化,并由该应用执行引擎托管移动APP程序后续代码的加载与执行;
应用执行引擎在初始化过程中还负责启动渲染引擎,该渲染引擎托管移动App程序的UI展示。
2.根据权利要求1所述的一种动态修改用户已安装移动App程序的方法,其特征在于,应用执行引擎的初始化阶段向服务端发出请求来校验是否存在新的补丁,当发现新的补丁时,应用执行引擎将下载其至本地移动APP程序,并替换旧的代码。
3.根据权利要求2所述的一种动态修改用户已安装移动App程序的方法,其特征在于,应用执行引擎还解析执行代码,业务逻辑使用应用执行引擎所支持的语言进行开发,且在移动APP程序内,应用执行引擎支持所有的动态编程语言。
4.根据权利要求1所述的一种动态修改用户已安装移动App程序的方法,其特征在于,渲染引擎解析的UI定义是指UI定义的数据结构,该数据结构来自于文件、网络请求返回的数据或代码中的定义,该数据结构包括YAML、JSON、XML。
5.根据权利要求4所述的一种动态修改用户已安装移动App程序的方法,其特征在于,渲染引擎在解析UI定义之后,通过转调系统本地接口生成UI,且该UI引擎可通过预处理并缓存结果的方式加快处理速度。
6.根据权利要求4所述的一种动态修改用户已安装移动App程序的方法,其特征在于,UI绘制界面时,对于UI元素的事件绑定,统一绑定至应用执行引擎上,当有事件触发时应用执行引擎直接截获事件,待识别事件来源与目标代码后进行转发调用。
7.根据权利要求4所述的一种动态修改用户已安装移动App程序的方法,其特征在于,所述应用执行引擎使用移动APP程序允许的任意动态语言执行引擎进行实现,包括JavaScript、Lua;渲染引擎使用原生代码实现,或使用与应用执行引擎一致的动态语言实现。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201610917793.2A CN106383723B (zh) | 2016-10-21 | 2016-10-21 | 一种动态修改用户已安装移动App程序的方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201610917793.2A CN106383723B (zh) | 2016-10-21 | 2016-10-21 | 一种动态修改用户已安装移动App程序的方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN106383723A true CN106383723A (zh) | 2017-02-08 |
CN106383723B CN106383723B (zh) | 2019-12-31 |
Family
ID=57958820
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201610917793.2A Active CN106383723B (zh) | 2016-10-21 | 2016-10-21 | 一种动态修改用户已安装移动App程序的方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN106383723B (zh) |
Cited By (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN107169007A (zh) * | 2017-03-31 | 2017-09-15 | 北京奇艺世纪科技有限公司 | 一种移动终端的显示界面设置方法及装置 |
CN107273748A (zh) * | 2017-05-23 | 2017-10-20 | 成都联宇云安科技有限公司 | 一种基于漏洞poc实现安卓系统漏洞检测的方法 |
CN108279902A (zh) * | 2018-02-08 | 2018-07-13 | 合肥盈云信息科技有限公司 | 基于Lua脚本技术的多终端共享底层框架生成、应用方法 |
CN109542542A (zh) * | 2017-09-21 | 2019-03-29 | 北京金山安全软件有限公司 | 一种更新用户交互界面的方法、装置、服务器及终端 |
CN109656611A (zh) * | 2018-12-24 | 2019-04-19 | 成都四方伟业软件股份有限公司 | 三维可视化应用热更新方法、装置和终端 |
CN110209413A (zh) * | 2019-05-05 | 2019-09-06 | 阿里巴巴集团控股有限公司 | 一种应用更新方法和装置 |
CN112153064A (zh) * | 2020-09-28 | 2020-12-29 | 上海缓存命中科技有限公司 | 应用商店及其使用方法 |
Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101763282A (zh) * | 2009-12-25 | 2010-06-30 | 中兴通讯股份有限公司 | 动态管理应用程序的方法及终端 |
CN104714830A (zh) * | 2015-04-03 | 2015-06-17 | 普元信息技术股份有限公司 | 基于原生开发语言实现跨平台应用开发的系统及方法 |
-
2016
- 2016-10-21 CN CN201610917793.2A patent/CN106383723B/zh active Active
Patent Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101763282A (zh) * | 2009-12-25 | 2010-06-30 | 中兴通讯股份有限公司 | 动态管理应用程序的方法及终端 |
CN104714830A (zh) * | 2015-04-03 | 2015-06-17 | 普元信息技术股份有限公司 | 基于原生开发语言实现跨平台应用开发的系统及方法 |
Cited By (9)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN107169007A (zh) * | 2017-03-31 | 2017-09-15 | 北京奇艺世纪科技有限公司 | 一种移动终端的显示界面设置方法及装置 |
CN107169007B (zh) * | 2017-03-31 | 2021-04-16 | 北京奇艺世纪科技有限公司 | 一种移动终端的显示界面设置方法及装置 |
CN107273748A (zh) * | 2017-05-23 | 2017-10-20 | 成都联宇云安科技有限公司 | 一种基于漏洞poc实现安卓系统漏洞检测的方法 |
CN109542542A (zh) * | 2017-09-21 | 2019-03-29 | 北京金山安全软件有限公司 | 一种更新用户交互界面的方法、装置、服务器及终端 |
CN108279902A (zh) * | 2018-02-08 | 2018-07-13 | 合肥盈云信息科技有限公司 | 基于Lua脚本技术的多终端共享底层框架生成、应用方法 |
CN109656611A (zh) * | 2018-12-24 | 2019-04-19 | 成都四方伟业软件股份有限公司 | 三维可视化应用热更新方法、装置和终端 |
CN110209413A (zh) * | 2019-05-05 | 2019-09-06 | 阿里巴巴集团控股有限公司 | 一种应用更新方法和装置 |
CN112153064A (zh) * | 2020-09-28 | 2020-12-29 | 上海缓存命中科技有限公司 | 应用商店及其使用方法 |
CN112153064B (zh) * | 2020-09-28 | 2022-11-22 | 上海缓存命中科技有限公司 | 应用商店及其使用方法 |
Also Published As
Publication number | Publication date |
---|---|
CN106383723B (zh) | 2019-12-31 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN106383723A (zh) | 一种动态修改用户已安装移动App程序的方法 | |
CN107168742B (zh) | 基于定制安卓平台的应用快速部署方法 | |
CN105094922B (zh) | 应用程序免安装运行控制方法及其装置 | |
Navarro et al. | Explicitly distributed AOP using AWED | |
US10048960B2 (en) | Identifying source code used to build executable files | |
WO2017084555A1 (zh) | 用于可信执行环境的可信应用生成及安装方法 | |
CN106055368B (zh) | 应用更新方法和装置 | |
US11360765B2 (en) | Metadata driven serverless functions in a multitenant environment | |
US8930684B2 (en) | Adding a runtime service for firmware-based images for a device not known to an operating system | |
CN112424746A (zh) | 服务网格内的原位触发的功能即服务 | |
CN104834541B (zh) | 功能模块挂载方法、挂载系统及更新挂载系统的方法 | |
JP7106001B2 (ja) | サブアプリケーション開発方法、装置、コンピュータ機器、並びにコンピュータプログラム | |
CN105159788A (zh) | 一种Android应用间动态共享资源的方法及系统 | |
US20060248508A1 (en) | Method and system for applet extensibility application program interface (API) | |
US9811353B1 (en) | Remotely invoking dynamic classes on a computing device | |
WO2018187798A1 (en) | Flow-based scoping | |
CN105897902B (zh) | 一种通过浏览器启动本地应用的方法及系统 | |
CN105159712B (zh) | 一种启动界面的方法及装置 | |
CN102156650B (zh) | 一种实现补丁自动分析的方法及装置 | |
CN106055348B (zh) | 一种通知系统属性更新的方法和装置 | |
JP2006276939A (ja) | 仮想マシンのプログラム起動方法およびクライアントサーバシステム | |
CN108334374A (zh) | 组件动态加载与执行的方法和装置 | |
WO2019228237A1 (zh) | 数据处理方法以及计算机设备 | |
CN109144595A (zh) | 基于插件框架启动组件的方法及装置 | |
US20170222944A1 (en) | Computing resource deployment in non-mutually configurable environments |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
TA01 | Transfer of patent application right |
Effective date of registration: 20191128 Address after: 250100 Ji'nan high tech Zone, Shandong, No. 1036 wave road Applicant after: Langchao General Software Co., Ltd Address before: 250100, Ji'nan province high tech Zone, Sun Village Branch Road, No. 2877, building, floor, building, on the first floor Applicant before: Ji'nan wave high and New Technology Investment Development Co., Ltd. |
|
TA01 | Transfer of patent application right | ||
GR01 | Patent grant | ||
GR01 | Patent grant |