CN105955782B - 应用程序运行控制的方法及装置 - Google Patents
应用程序运行控制的方法及装置 Download PDFInfo
- Publication number
- CN105955782B CN105955782B CN201610302816.9A CN201610302816A CN105955782B CN 105955782 B CN105955782 B CN 105955782B CN 201610302816 A CN201610302816 A CN 201610302816A CN 105955782 B CN105955782 B CN 105955782B
- Authority
- CN
- China
- Prior art keywords
- application program
- target application
- resource
- calling
- native
- 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.)
- Active
Links
- 238000000034 method Methods 0.000 title claims abstract description 80
- 230000008569 process Effects 0.000 claims description 41
- 238000009434 installation Methods 0.000 claims description 26
- 238000012986 modification Methods 0.000 claims description 13
- 230000004048 modification Effects 0.000 claims description 13
- 238000012544 monitoring process Methods 0.000 claims description 8
- 230000006870 function Effects 0.000 abstract description 51
- 101100264195 Caenorhabditis elegans app-1 gene Proteins 0.000 description 94
- 238000004891 communication Methods 0.000 description 11
- 230000007246 mechanism Effects 0.000 description 10
- 238000010586 diagram Methods 0.000 description 6
- 230000004044 response Effects 0.000 description 6
- 230000015654 memory Effects 0.000 description 5
- 230000006399 behavior Effects 0.000 description 4
- 238000004590 computer program Methods 0.000 description 4
- 230000000694 effects Effects 0.000 description 4
- 244000035744 Hura crepitans Species 0.000 description 2
- 230000003190 augmentative effect Effects 0.000 description 2
- 238000005034 decoration Methods 0.000 description 2
- 238000011900 installation process Methods 0.000 description 2
- 230000003287 optical effect Effects 0.000 description 2
- 238000004806 packaging method and process Methods 0.000 description 2
- 238000012545 processing Methods 0.000 description 2
- 238000013461 design Methods 0.000 description 1
- 238000011161 development Methods 0.000 description 1
- 238000005516 engineering process Methods 0.000 description 1
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/44—Arrangements for executing specific programs
- G06F9/445—Program loading or initiating
- G06F9/44505—Configuring for program initiating, e.g. using registry, configuration files
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/44—Arrangements for executing specific programs
- G06F9/445—Program loading or initiating
- G06F9/44568—Immediately runnable code
- G06F9/44578—Preparing or optimising for loading
Landscapes
- Engineering & Computer Science (AREA)
- Software Systems (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Stored Programmes (AREA)
Abstract
本发明提供了应用程序运行控制的方法及装置,该方法包括:响应于启动目标应用程序的操作指令,启动目标应用程序,其中,包括加载重设模块;基于获取到的目标应用程序调用资源的资源名称,通过原生目标应用程序与目标应用程序调用资源的资源名称对应规则,将目标应用程序的配置信息修改为与原生应用程序对应的配置信息;根据目标应用程序修改后的配置信息,调用与目标应用程序的所需资源对应的原生应用程序的所需资源,以运行目标应用程序。通过本发明,实现了目标应用程序独立于原生应用程序在终端设备中正常的运行,在保证目标应用程序与原生应用程序分别独立运行互不干扰的同时,实现了目标应用程序具有原生应用程序的所有功能的目的。
Description
技术领域
本发明涉及计算机技术领域,具体而言,本发明涉及一种应用程序运行控制的方法,及一种应用程序运行控制的装置。
背景技术
随着时代的发展,各种终端设备已成为人们生活中必不可少的工具,各种功能强大的终端操作系统及终端应用程序不断涌现,为用户带来了更加便捷的体验。现有技术中,应用程序在终端设备的系统环境中仅可以唯一的形式安装并运行,如对于一种即时通信类应用程序,在一台终端设备中仅可以安装并运行一个该即时通信类应用程序,用户仅可以通过唯一的账号登录并对其执行相关操作。但是,随着即时通信类应用程序的普及,越来越多的用户希望在一台终端设备中通过多个账号登录一种即时通信类应用程序以实现对不同好友信息的区分管理及交流。现有技术中,具有通过多个域账号在不同操作系统之间的切换来实现在一台终端设备中通过多个账号登录一种即时通信类应用程序的解决方案。但是,该方案需要最高系统级别的权限且基于多操作系统才可以实现,并不具有普适性。
现有技术中,利用沙箱技术或通过修改Android底层机制,使得目标应用程序可实现原生应用程序的全部功能及相应服务,但是,在沙箱中运行的目标应用程序依赖于原生应用程序的运行,无法独立于原生应用程序独自运行于终端设备中,且修改Android底层机制的方式大大增加了技术实现的难度,尤其是在底层实现的编程问题上,开发者需要考虑到诸如资源重定向、包管理服务,活动组件鉴权等问题,程序实现难度大,出错机率高,一旦应用程序的版本出现更迭,还容易因应用程序的资源调度设计而引发潜在的问题,导致双开的目的不能得到很好的满足。
因此,需要一种控制目标应用程序运行的解决方案,使得目标应用程序可实现原生应用程序的全部功能及相应服务,且目标应用程序完全独立于原生应用程序运行于终端设备中,以解决现有技术中在一台终端设备中仅可以安装并运行一个应用程序,用户仅可以通过唯一的账号登录并对其执行相关操作的问题。
发明内容
为克服上述技术问题或者至少部分地解决上述技术问题,特提出以下技术方案:
本发明的实施例提出了一种应用程序运行控制的方法,包括:
响应于启动目标应用程序的操作指令,启动目标应用程序,其中,包括加载重设模块;
基于获取到的目标应用程序调用资源的资源名称,通过原生目标应用程序与目标应用程序调用资源的资源名称对应规则,将目标应用程序的配置信息修改为与原生应用程序对应的配置信息;
根据目标应用程序修改后的配置信息,调用与目标应用程序的所需资源对应的原生应用程序的所需资源,以运行目标应用程序。
优选地,其中,通过创建独立的进程来运行目标应用程序。
优选地,重设模块用于调用钩子函数;
其中,钩子函数用于:
挂钩目标应用程序调用资源的资源名称;
挂钩原生应用程序的签名。
优选地,获取目标应用程序调用资源的资源名称的方式,包括:
通过钩子函数对目标应用程序的进程进行监控以挂钩目标应用程序调用资源的资源名称。
优选地,基于获取到的目标应用程序调用资源的资源名称,通过原生目标应用程序与目标应用程序调用资源的资源名称对应规则,将目标应用程序的配置信息修改为与原生应用程序对应的配置信息,包括:
基于钩子函数挂钩到的目标应用程序调用资源的资源名称,通过原生目标应用程序与目标应用程序调用资源的资源名称对应规则,确定原生目标应用程序调用资源的资源名称;
基于原生目标应用程序调用资源的资源名称,将目标应用程序的配置信息修改为与原生应用程序对应的配置信息。
优选地,原生目标应用程序与目标应用程序资源名称的对应规则,包括:
目标应用程序与原生应用程序调用相同资源的资源名称一一对应的关系。
优选地,目标应用程序的配置信息,包括环境变量配置信息和对应调用资源的路径信息中的至少一项。
可选地,该方法还包括:
基于原生应用程序的升级安装文件,根据挂钩到的原生应用程序的签名,升级目标应用程序。
本发明的另一实施例提出了一种应用程序运行控制的装置,包括:
启动模块,用于响应于启动目标应用程序的操作指令,启动目标应用程序,其中,包括加载重设模块;
修改模块,用于基于获取到的目标应用程序调用资源的资源名称,通过原生目标应用程序与目标应用程序调用资源的资源名称对应规则,将目标应用程序的配置信息修改为与原生应用程序对应的配置信息;
调用模块,用于根据目标应用程序修改后的配置信息,调用与目标应用程序的所需资源对应的原生应用程序的所需资源,以运行目标应用程序。
优选地,其中,通过创建独立的进程来运行目标应用程序。
优选地,重设模块用于调用钩子函数;
其中,钩子函数用于:
挂钩目标应用程序调用资源的资源名称;
挂钩原生应用程序的签名。
优选地,获取目标应用程序调用资源的资源名称的方式,包括:
通过钩子函数对目标应用程序的进程进行监控以挂钩目标应用程序调用资源的资源名称。
优选地,修改模块,包括:
确定单元,用于基于钩子函数挂钩到的目标应用程序调用资源的资源名称,通过原生目标应用程序与目标应用程序调用资源的资源名称对应规则,确定原生目标应用程序调用资源的资源名称;
修改单元,用于基于原生目标应用程序调用资源的资源名称,将目标应用程序的配置信息修改为与原生应用程序对应的配置信息。
优选地,原生目标应用程序与目标应用程序资源名称的对应规则,包括:
目标应用程序与原生应用程序调用相同资源的资源名称一一对应的关系。
优选地,目标应用程序的配置信息,包括环境变量配置信息和对应调用资源的路径信息中的至少一项。
可选地,该装置还包括:
升级模块,用于基于原生应用程序的升级安装文件,根据挂钩到的原生应用程序的签名,升级目标应用程序。
本发明的实施例中,提出了一种应用程序运行控制的方案,响应于启动目标应用程序的操作指令,启动目标应用程序,其中,包括加载重设模块,加载重设模块能够及时拦截目标应用程序调用的资源请求,为后续获取目标应用程序调用资源提供了必要的前提保障;接着,根据原生目标应用程序与目标应用程序调用资源的资源名称对应规则,精确地获取对应原生目标应用程序调用资源的资源名称,使目标应用程序能够精确调用所需资源,并将目标应用程序的配置信息修改为与原生应用程序对应的配置信息,根据目标应用程序修改后的配置信息,调用与目标应用程序的所需资源对应的原生应用程序的所需资源,以运行目标应用程序,实现了目标应用程序独立于原生应用程序在终端设备中正常的运行,在保证目标应用程序与原生应用程序分别独立运行互不干扰的同时,实现了目标应用程序具有原生应用程序的所有功能的目的;进一步地,突破了原生应用程序在同一终端设备中仅可使用唯一的账户进行登录使用的局限,提高了用户体验。
本发明附加的方面和优点将在下面的描述中部分给出,这些将从下面的描述中变得明显,或通过本发明的实践了解到。
附图说明
本发明上述的和/或附加的方面和优点从下面结合附图对实施例的描述中将变得明显和容易理解,其中:
图1为本发明中一个实施例的应用程序运行控制的方法的流程图;
图2为本发明中一个优选实施例的应用程序运行控制的方法的流程图;
图3为本发明中另一实施例的应用程序运行控制的装置的结构示意图;
图4为本发明中另一优选实施例的应用程序运行控制的装置的结构示意图。
具体实施方式
下面详细描述本发明的实施例,所述实施例的示例在附图中示出,其中自始至终相同或类似的标号表示相同或类似的元件或具有相同或类似功能的元件。下面通过参考附图描述的实施例是示例性的,仅用于解释本发明,而不能解释为对本发明的限制。
本技术领域技术人员可以理解,除非特意声明,这里使用的单数形式“一”、“一个”、“所述”和“该”也可包括复数形式。应该进一步理解的是,本发明的说明书中使用的措辞“包括”是指存在所述特征、整数、步骤、操作、元件和/或组件,但是并不排除存在或添加一个或多个其他特征、整数、步骤、操作、元件、组件和/或它们的组。应该理解,当我们称元件被“连接”或“耦接”到另一元件时,它可以直接连接或耦接到其他元件,或者也可以存在中间元件。此外,这里使用的“连接”或“耦接”可以包括无线连接或无线耦接。这里使用的措辞“和/或”包括一个或更多个相关联的列出项的全部或任一单元和全部组合。
本技术领域技术人员可以理解,除非另外定义,这里使用的所有术语(包括技术术语和科学术语),具有与本发明所属领域中的普通技术人员的一般理解相同的意义。还应该理解的是,诸如通用字典中定义的那些术语,应该被理解为具有与现有技术的上下文中的意义一致的意义,并且除非像这里一样被特定定义,否则不会用理想化或过于正式的含义来解释。
本发明下述实施例描述的应用程序运行控制方法所实施的应用场景,是安装在移动终端上的基于Android操作系统的运行环境。
图1为本发明中一个实施例的应用程序运行控制的方法的流程图。
本发明的实施例中,各步骤所执行的内容概述如下:步骤S110:响应于启动目标应用程序的操作指令,启动目标应用程序,其中,包括加载重设模块;步骤S120:基于获取到的目标应用程序调用资源的资源名称,通过原生目标应用程序与目标应用程序调用资源的资源名称对应规则,将目标应用程序的配置信息修改为与原生应用程序对应的配置信息;步骤S130:根据目标应用程序修改后的配置信息,调用与目标应用程序的所需资源对应的原生应用程序的所需资源,以运行目标应用程序。
本发明的实施例中,提出了一种应用程序运行控制的方法,响应于启动目标应用程序的操作指令,启动目标应用程序,其中,包括加载重设模块,加载重设模块能够及时拦截目标应用程序调用的资源请求,为后续获取目标应用程序调用资源提供了必要的前提保障;接着,根据原生目标应用程序与目标应用程序调用资源的资源名称对应规则,精确地获取对应原生目标应用程序调用资源的资源名称,使目标应用程序能够精确调用所需资源,并将目标应用程序的配置信息修改为与原生应用程序对应的配置信息,根据目标应用程序修改后的配置信息,调用与目标应用程序的所需资源对应的原生应用程序的所需资源,以运行目标应用程序,实现了目标应用程序独立于原生应用程序在终端设备中正常的运行,在保证目标应用程序与原生应用程序分别独立运行互不干扰的同时,实现了目标应用程序具有原生应用程序的所有功能的目的;进一步地,突破了原生应用程序在同一终端设备中仅可使用唯一的账户进行登录使用的局限,提高了用户体验。以下针对各个步骤的具体实现做进一步的说明:
步骤S110:响应于启动目标应用程序的操作指令,启动目标应用程序,其中,包括加载重设模块。
优选地,其中,通过创建独立的进程来运行目标应用程序。
优选地,重设模块用于调用钩子函数;其中,钩子函数用于:
挂钩目标应用程序调用资源的资源名称;
挂钩原生应用程序的签名。
具体地,在终端设备中,响应于用户启动目标应用程序的操作指令,启动目标应用程序,其中,启动目标应用程序包括加载重设模块。
Android操作系统有其不同于其他操作系统的原理,Android为开发者提供四大组件,具体指Activity、Service、Broadcast Receiver以及Content Provider等组件。Android应用程序以APK安装包的形式提供给用户进行安装,APK安装包中,具有用于封装实现各个组件的程序代码的classes.dex代码文件以及用于表达应用程序所用的各个组件的注册信息以及权限申请信息等内容的Androidmanifest.xml配置文件。在应用程序运行的过程中,为屏蔽用户调用远程服务端主机上的对象,必须提供某种方式来模拟本地对象,这种本地对象称为存根(stub),存根负责接收本地方法的调用,并将它们委派给各自的具体实现对象,存根代表参与分布式对象的通信的客户端侧对象,因此在本发明的实施例中,封装目标应用程序APK安装包的同时,封装存根对象的代码文件,同时为实现目标应用程序独立于原生应用程序在终端设备中运行,还封装了实现重设模块功能的相关文件。
Android对进程的管理,以包名为单位,每个应用程序分配一个唯一的包名,由于应用程序的安装过程就是PackageManagerService(PMS)解析Androidmanifest.xml文件的过程,而本发明中目标应用程序的包名不同于原生应用程序的包名,同时,重设模块可实现挂钩原生应用程序的签名文件,因此,当本地已安装原生应用程序的情况下,目标应用程序也可同时安装在本地,并可得到目标应用程序的相关属性信息,实现通过ActivityManagerService(AMS)正常运行目标应用程序。
这里需要补充的是:术语“钩子”涵盖了用于通过拦截在软件组件之间传递的函数调用、消息、或事件来改变或增加操作系统、应用程序、或其他软件组件的行为的技术。而处理这种被拦截的函数调用、事件或消息的代码就被称为钩子hook函数。钩子通常用于各种目标,包括对功能进行调试和对功能进行扩展。其示例可以包括在键盘或鼠标事件传递到应用程序之前拦截它们,或者拦截系统调用(system call)、或者系统函数行为、函数执行结果等,以监视或修改应用程序或其他组件的功能等等。本实施例即可采用钩子hook函数接管目标应用程序运行时所需的安装自校验操作。
例如,在终端设备中,响应于用户启动目标应用程序App1’的操作指令,如检测到用户双击App1’的图标的操作,App1’的图标可以与原生目标应用程序App1的图标不同,随后通过创建独立的进程来运行App1’,同时该进程间的通信机制克隆App1进程间通信机制,使得该进程间的通信机制与App1进程间通信机制相同,并加载重设模块,用于调用钩子函数和加载Android系统所需的必要API(Application Programming Interface,应用程序编程接口);App1’在运行过程中,当App1’请求调用相关资源时,钩子函数可及时拦截该调用请求,并挂钩App1’调用资源的资源名称;钩子函数的还可以用于挂钩App1的数字签名。
步骤S120:基于获取到的目标应用程序调用资源的资源名称,通过原生目标应用程序与目标应用程序调用资源的资源名称对应规则,将目标应用程序的配置信息修改为与原生应用程序对应的配置信息。
优选地,获取目标应用程序调用资源的资源名称的方式,包括:
通过钩子函数对目标应用程序的进程进行监控以挂钩目标应用程序调用资源的资源名称。
优选地,目标应用程序的配置信息,包括但不限于环境变量配置信息和对应调用资源的路径信息中的至少一项。
优选地,原生目标应用程序与目标应用程序资源名称的对应规则,包括:目标应用程序与原生应用程序调用相同资源的资源名称一一对应的关系。
具体地,基于通过钩子函数对目标应用程序的进程进行监控以挂钩目标应用程序调用资源的资源名称,通过原生目标应用程序与目标应用程序调用相同资源的资源名称一一对应的关系,将目标应用程序的环境变量配置信息和对应调用资源的路径信息修改为与原生应用程序对应的环境变量配置信息和对应调用资源的路径信息。
在一优选实施例中,如图2所示,步骤S120基于获取到的目标应用程序调用资源的资源名称,通过原生目标应用程序与目标应用程序调用资源的资源名称对应规则,将目标应用程序的配置信息修改为与原生应用程序对应的配置信息,具体包括步骤S210和步骤S220;步骤S210:基于钩子函数挂钩到的目标应用程序调用资源的资源名称,通过原生目标应用程序与目标应用程序调用资源的资源名称对应规则,确定原生目标应用程序调用资源的资源名称;步骤S220:基于原生目标应用程序调用资源的资源名称,将目标应用程序的配置信息修改为与原生应用程序对应的配置信息。
例如,在终端设备中,在目标应用程序App1’的运行过程中,通过钩子函数对已创建的App1’的进程进行监控,当App1’请求调用资源时,钩子函数可挂钩App1’调用资源的资源名称,得到App1’调用资源的资源名称如“A.com.A.mm_cm”;预定App1与App1’调用相同资源的资源名称一一对应的关系,如App1’调用资源的资源名称为App1调用相同资源的资源名称加上“_cm”,例如App1与App1’调用相同资源,若App1调用资源的资源名称为“A”,则App1’调用资源的资源名称为“A_cm”;基于已获取到的App1’调用资源的资源名称“A.com.A.mm_cm”,根据App1与App1’调用相同资源的资源名称一一对应的关系,可确定App1调用相同资源的资源名称为“A.com.A.mm”,将App1’的环境变量配置信息和对应调用资源的路径信息中调用资源的名称“A.com.A.mm_cm”修改为“A.com.A.mm”,使得修改后的App1’的环境变量配置信息和对应调用资源的路径信息与App1对应的环境变量配置信息和对应调用资源的路径信息相同。
通过本实施例,通过原生应用程序与目标应用程序调用相同资源的资源名称对应规则,确定原生目标应用程序调用资源的资源名称,基于原生目标应用程序调用资源的资源名称,将目标应用程序的配置信息修改为与原生应用程序对应的配置信息;因此,目标应用程序的运行并不依赖于原生目标应用程序安装包的包名,在无法获取到原生应用程序安装包包名的情况下,通过本实施例的方式,在安装目标应用程序的过程中,修改目标应用程序的配置信息时,可自动根据目标应用程序的包名添加对应的包名信息,目标应用程序仍可在终端设备中成功安装并运行。
步骤S130:根据目标应用程序修改后的配置信息,调用与目标应用程序所需资源相应的原生应用程序的资源,以运行目标应用程序。
具体地,根据目标应用程序修改后的环境变量配置信息和对应调用资源的路径信息,调用与目标应用程序所需资源相应的原生应用程序的资源,以运行目标应用程序,其中,目标应用程序所需资源与相应的原生应用程序的资源指向相同资源。
例如,接上例,Android系统中的资源包括ActivityManagerService资源、PackageManagerService资源、Activity组件、Service组件、Broadcast Receiver组件和Content Provider组件等;根据App1’修改后的环境变量配置信息和对应调用资源的路径信息,若通过名称为“A.com.A.mm_cm”的方法可确定名称为“A.com.A.mm”的方法调用的资源为ActivityManagerService资源,则通过App1’的进程调用与App1’所需资源相应的App1的ActivityManagerService资源,以运行App1’。
在一优选实施例中,该方法还包括步骤S140(图中未示出);步骤S140:基于原生应用程序的升级安装文件,根据挂钩到的原生应用程序的签名,升级目标应用程序。
例如,在终端设备中,用户在使用App1’的过程中检测到App1存在更新版本,如V5.0版本,当检测到对App1’的更新操作,如检测到用户点击App1’的版本更新按钮的操作,可从网络端发送请求并获取到App1的升级安装文件,根据已挂钩到的App1的数字签名信息,在升级过程中,通过App1’的重设模块,根据App1与App1’调用相同资源的资源名称一一对应的关系,修改App1的升级安装文件中App1调用资源的资源名称,实现将App1’升级至App1的V5.0版本。
在一具体应用场景中,用户可以同时运行两个如“微信”的应用程序,其中一个“微信”A是通过运行腾讯官方下载的微信安装包创建的,另一个“微信”B是通过本发明的实施方式创建的,两个“微信”进程分别用于登录不同的微信账号,互不影响,可同时与外界进行通信,甚至两个不同账号之间也可直接进行通信,B可实现A中的所有功能,且当用户卸载A后,并不影响B的正常运行。
在另一具体应用场景中,用户可以同时运行两个如“outlook”的应用程序,其中一个outlookC是通过运行outlook官方下载的安装包创建的,另一个outlookD是通过本发明的实施方式创建的;由于outlook依赖于其系统设置里的账户信息,通过本发明的实施方式创建的outlook应用程序,在创建过程中还需要在D的Androidmanifest.xml配置文件中增加相应的账户信息标识字符串,用于避免与C中账户信息对应的字符串产生冲突,在运行D的过程中,可通过D的重设模块,挂钩D的账户信息,并通过D的Androidmanifest.xml配置文件中账户信息标识的字符串获取运行D的账户信息,如“XXX@163.com”,随后将挂钩D的账户信息修改为“XXX@163.com”,实现D的正常运行。
图3为本发明中另一实施例的应用程序运行控制的装置的结构示意图。
本发明的实施例中,各模块所执行的内容概述如下:响应于启动目标应用程序的操作指令,启动模块310启动目标应用程序,其中,包括加载重设模块;基于获取到的目标应用程序调用资源的资源名称,通过原生目标应用程序与目标应用程序调用资源的资源名称对应规则,修改模块320将目标应用程序的配置信息修改为与原生应用程序对应的配置信息;根据目标应用程序修改后的配置信息,调用模块330调用与目标应用程序的所需资源对应的原生应用程序的所需资源,以运行目标应用程序。
本发明的实施例中,提出了一种应用程序运行控制的装置,响应于启动目标应用程序的操作指令,启动目标应用程序,其中,包括加载重设模块,加载重设模块能够及时拦截目标应用程序调用的资源请求,为后续获取目标应用程序调用资源提供了必要的前提保障;接着,根据原生目标应用程序与目标应用程序调用资源的资源名称对应规则,精确地获取对应原生目标应用程序调用资源的资源名称,使目标应用程序能够精确调用所需资源,并将目标应用程序的配置信息修改为与原生应用程序对应的配置信息,根据目标应用程序修改后的配置信息,调用与目标应用程序的所需资源对应的原生应用程序的所需资源,以运行目标应用程序,实现了目标应用程序独立于原生应用程序在终端设备中正常的运行,在保证目标应用程序与原生应用程序分别独立运行互不干扰的同时,实现了目标应用程序具有原生应用程序的所有功能的目的;进一步地,突破了原生应用程序在同一终端设备中仅可使用唯一的账户进行登录使用的局限,提高了用户体验。以下针对各个模块的具体实现做进一步的说明:
响应于启动目标应用程序的操作指令,启动模块310启动目标应用程序,其中,包括加载重设模块。
优选地,其中,通过创建独立的进程来运行目标应用程序。
优选地,重设模块用于调用钩子函数;其中,钩子函数用于:
挂钩目标应用程序调用资源的资源名称;
挂钩原生应用程序的签名。
具体地,在终端设备中,响应于用户启动目标应用程序的操作指令,启动目标应用程序,其中,启动目标应用程序包括加载重设模块。
Android操作系统有其不同于其他操作系统的原理,Android为开发者提供四大组件,具体指Activity、Service、Broadcast Receiver以及Content Provider等组件。Android应用程序以APK安装包的形式提供给用户进行安装,APK安装包中,具有用于封装实现各个组件的程序代码的classes.dex代码文件以及用于表达应用程序所用的各个组件的注册信息以及权限申请信息等内容的Androidmanifest.xml配置文件。在应用程序运行的过程中,为屏蔽用户调用远程服务端主机上的对象,必须提供某种方式来模拟本地对象,这种本地对象称为存根(stub),存根负责接收本地方法的调用,并将它们委派给各自的具体实现对象,存根代表参与分布式对象的通信的客户端侧对象,因此在本发明的实施例中,封装目标应用程序APK安装包的同时,封装存根对象的代码文件,同时为实现目标应用程序独立于原生应用程序在终端设备中运行,还封装了实现重设模块功能的相关文件。
Android对进程的管理,以包名为单位,每个应用程序分配一个唯一的包名,由于应用程序的安装过程就是PackageManagerService(PMS)解析Androidmanifest.xml文件的过程,而本发明中目标应用程序的包名不同于原生应用程序的包名,同时,重设模块可实现挂钩原生应用程序的签名文件,因此,当本地已安装原生应用程序的情况下,目标应用程序也可同时安装在本地,并可得到目标应用程序的相关属性信息,实现通过ActivityManagerService(AMS)正常运行目标应用程序。
这里需要补充的是:术语“钩子”涵盖了用于通过拦截在软件组件之间传递的函数调用、消息、或事件来改变或增加操作系统、应用程序、或其他软件组件的行为的技术。而处理这种被拦截的函数调用、事件或消息的代码就被称为钩子hook函数。钩子通常用于各种目标,包括对功能进行调试和对功能进行扩展。其示例可以包括在键盘或鼠标事件传递到应用程序之前拦截它们,或者拦截系统调用(system call)、或者系统函数行为、函数执行结果等,以监视或修改应用程序或其他组件的功能等等。本实施例即可采用钩子hook函数接管目标应用程序运行时所需的安装自校验操作。
例如,在终端设备中,响应于用户启动目标应用程序App1’的操作指令,如检测到用户双击App1’的图标的操作,App1’的图标可以与原生目标应用程序App1的图标不同,随后通过创建独立的进程来运行App1’,同时该进程间的通信机制克隆App1进程间通信机制,使得该进程间的通信机制与App1进程间通信机制相同,并加载重设模块,用于调用钩子函数和加载Android系统所需的必要API(Application Programming Interface,应用程序编程接口);App1’在运行过程中,当App1’请求调用相关资源时,钩子函数可及时拦截该调用请求,并挂钩App1’调用资源的资源名称;钩子函数的还可以用于挂钩App1的数字签名。
修改模块320基于获取到的目标应用程序调用资源的资源名称,通过原生目标应用程序与目标应用程序调用资源的资源名称对应规则,将目标应用程序的配置信息修改为与原生应用程序对应的配置信息。
优选地,获取目标应用程序调用资源的资源名称的方式,包括:
通过钩子函数对目标应用程序的进程进行监控以挂钩目标应用程序调用资源的资源名称。
优选地,目标应用程序的配置信息,包括但不限于环境变量配置信息和对应调用资源的路径信息中的至少一项。
优选地,原生目标应用程序与目标应用程序资源名称的对应规则,包括:目标应用程序与原生应用程序调用相同资源的资源名称一一对应的关系。
具体地,基于通过钩子函数对目标应用程序的进程进行监控以挂钩目标应用程序调用资源的资源名称,通过原生目标应用程序与目标应用程序调用相同资源的资源名称一一对应的关系,将目标应用程序的环境变量配置信息和对应调用资源的路径信息修改为与原生应用程序对应的环境变量配置信息和对应调用资源的路径信息。
在一优选实施例中,如图4所示,修改模块320具体包括确定单元410和修改单元420;确定单元410基于钩子函数挂钩到的目标应用程序调用资源的资源名称,通过原生目标应用程序与目标应用程序调用资源的资源名称对应规则,确定原生目标应用程序调用资源的资源名称;基于原生目标应用程序调用资源的资源名称,修改单元420将目标应用程序的配置信息修改为与原生应用程序对应的配置信息。
例如,在终端设备中,在目标应用程序App1’的运行过程中,通过钩子函数对已创建的App1’的进程进行监控,当App1’请求调用资源时,钩子函数可挂钩App1’调用资源的资源名称,得到App1’调用资源的资源名称如“A.com.A.mm_cm”;预定App1与App1’调用相同资源的资源名称一一对应的关系,如App1’调用资源的资源名称为App1调用相同资源的资源名称加上“_cm”,例如App1与App1’调用相同资源,若App1调用资源的资源名称为“A”,则App1’调用资源的资源名称为“A_cm”;基于已获取到的App1’调用资源的资源名称“A.com.A.mm_cm”,根据App1与App1’调用相同资源的资源名称一一对应的关系,可确定App1调用相同资源的资源名称为“A.com.A.mm”,将App1’的环境变量配置信息和对应调用资源的路径信息中调用资源的名称“A.com.A.mm_cm”修改为“A.com.A.mm”,使得修改后的App1’的环境变量配置信息和对应调用资源的路径信息与App1对应的环境变量配置信息和对应调用资源的路径信息相同。
通过本实施例,通过原生应用程序与目标应用程序调用相同资源的资源名称对应规则,确定原生目标应用程序调用资源的资源名称,基于原生目标应用程序调用资源的资源名称,将目标应用程序的配置信息修改为与原生应用程序对应的配置信息;因此,目标应用程序的运行并不依赖于原生目标应用程序安装包的包名,在无法获取到原生应用程序安装包包名的情况下,通过本实施例的方式,在安装目标应用程序的过程中,修改目标应用程序的配置信息时,可自动根据目标应用程序的包名添加对应的包名信息,目标应用程序仍可在终端设备中成功安装并运行。
调用模块330根据目标应用程序修改后的配置信息,调用与目标应用程序所需资源相应的原生应用程序的资源,以运行目标应用程序。
具体地,根据目标应用程序修改后的环境变量配置信息和对应调用资源的路径信息,调用与目标应用程序所需资源相应的原生应用程序的资源,以运行目标应用程序,其中,目标应用程序所需资源与相应的原生应用程序的资源指向相同资源。
例如,接上例,Android系统中的资源包括ActivityManagerService资源、PackageManagerService资源、Activity组件、Service组件、Broadcast Receiver组件和Content Provider组件等;根据App1’修改后的环境变量配置信息和对应调用资源的路径信息,若通过名称为“A.com.A.mm_cm”的方法可确定名称为“A.com.A.mm”的方法调用的资源为ActivityManagerService资源,则通过App1’的进程调用与App1’所需资源相应的App1的ActivityManagerService资源,以运行App1’。
在一优选实施例中,该装置还包括升级模块(图中未示出);升级模块基于原生应用程序的升级安装文件,根据挂钩到的原生应用程序的签名,升级目标应用程序。
例如,在终端设备中,用户在使用App1’的过程中检测到App1存在更新版本,如V5.0版本,当检测到对App1’的更新操作,如检测到用户点击App1’的版本更新按钮的操作,可从网络端发送请求并获取到App1的升级安装文件,根据已挂钩到的App1的数字签名信息,在升级过程中,通过App1’的重设模块,根据App1与App1’调用相同资源的资源名称一一对应的关系,修改App1的升级安装文件中App1调用资源的资源名称,实现将App1’升级至App1的V5.0版本。
在一具体应用场景中,用户可以同时运行两个如“微信”的应用程序,其中一个“微信”A是通过运行腾讯官方下载的微信安装包创建的,另一个“微信”B是通过本发明的实施方式创建的,两个“微信”进程分别用于登录不同的微信账号,互不影响,可同时与外界进行通信,甚至两个不同账号之间也可直接进行通信,B可实现A中的所有功能,且当用户卸载A后,并不影响B的正常运行。
在另一具体应用场景中,用户可以同时运行两个如“outlook”的应用程序,其中一个outlookC是通过运行outlook官方下载的安装包创建的,另一个outlookD是通过本发明的实施方式创建的;由于outlook依赖于其系统设置里的账户信息,通过本发明的实施方式创建的outlook应用程序,在创建过程中还需要在D的Androidmanifest.xml配置文件中增加相应的账户信息标识字符串,用于避免与C中账户信息对应的字符串产生冲突,在运行D的过程中,可通过D的重设模块,挂钩D的账户信息,并通过D的Androidmanifest.xml配置文件中账户信息标识的字符串获取运行D的账户信息,如“XXX@163.com”,随后将挂钩D的账户信息修改为“XXX@163.com”,实现D的正常运行。
本技术领域技术人员可以理解,本发明包括涉及用于执行本申请中所述操作中的一项或多项的设备。这些设备可以为所需的目的而专门设计和制造,或者也可以包括通用计算机中的已知设备。这些设备具有存储在其内的计算机程序,这些计算机程序选择性地激活或重构。这样的计算机程序可以被存储在设备(例如,计算机)可读介质中或者存储在适于存储电子指令并分别耦联到总线的任何类型的介质中,所述计算机可读介质包括但不限于任何类型的盘(包括软盘、硬盘、光盘、CD-ROM、和磁光盘)、ROM(Read-Only Memory,只读存储器)、RAM(Random Access Memory,随即存储器)、EPROM(Erasable ProgrammableRead-Only Memory,可擦写可编程只读存储器)、EEPROM(Electrically ErasableProgrammable Read-Only Memory,电可擦可编程只读存储器)、闪存、磁性卡片或光线卡片。也就是,可读介质包括由设备(例如,计算机)以能够读的形式存储或传输信息的任何介质。
本技术领域技术人员可以理解,可以用计算机程序指令来实现这些结构图和/或框图和/或流图中的每个框以及这些结构图和/或框图和/或流图中的框的组合。本技术领域技术人员可以理解,可以将这些计算机程序指令提供给通用计算机、专业计算机或其他可编程数据处理方法的处理器来实现,从而通过计算机或其他可编程数据处理方法的处理器来执行本发明公开的结构图和/或框图和/或流图的框或多个框中指定的方案。
本技术领域技术人员可以理解,本发明中已经讨论过的各种操作、方法、流程中的步骤、措施、方案可以被交替、更改、组合或删除。进一步地,具有本发明中已经讨论过的各种操作、方法、流程中的其他步骤、措施、方案也可以被交替、更改、重排、分解、组合或删除。进一步地,现有技术中的具有与本发明中公开的各种操作、方法、流程中的步骤、措施、方案也可以被交替、更改、重排、分解、组合或删除。
以上所述仅是本发明的部分实施方式,应当指出,对于本技术领域的普通技术人员来说,在不脱离本发明原理的前提下,还可以做出若干改进和润饰,这些改进和润饰也应视为本发明的保护范围。
Claims (12)
1.一种应用程序运行控制的方法,其特征在于,包括:
响应于启动目标应用程序的操作指令,启动所述目标应用程序,其中,包括创建独立的进程来运行所述目标应用程序并加载重设模块,通过加载所述重设模块以挂钩所述目标应用程序调用资源的资源名称;
基于获取到的所述目标应用程序调用资源的资源名称,通过原生应用程序与所述目标应用程序调用资源的资源名称对应规则,将所述目标应用程序的配置信息修改为与所述原生应用程序对应的配置信息;
根据所述目标应用程序修改后的配置信息,调用与所述目标应用程序的所需资源对应的所述原生应用程序的所需资源,以运行所述目标应用程序,其中,所述目标应用程序与所述原生应用程序分别独立运行;
原生应用程序与目标应用程序资源名称的对应规则,包括:目标应用程序与原生应用程序调用相同资源的资源名称一一对应的关系。
2.根据权利要求1所述的方法,所述重设模块用于调用钩子函数;
其中,所述钩子函数用于:
挂钩所述目标应用程序调用资源的资源名称;
挂钩所述原生应用程序的签名。
3.根据权利要求2所述的方法,获取所述目标应用程序调用资源的资源名称的方式,包括:
通过钩子函数对所述目标应用程序的进程进行监控以挂钩所述目标应用程序调用资源的资源名称。
4.根据权利要求2所述的方法,基于获取到的所述目标应用程序调用资源的资源名称,通过原生应用程序与所述目标应用程序调用资源的资源名称对应规则,将所述目标应用程序的配置信息修改为与所述原生应用程序对应的配置信息,包括:
基于钩子函数挂钩到的所述目标应用程序调用资源的资源名称,通过所述原生应用程序与所述目标应用程序调用资源的资源名称对应规则,确定所述原生应用程序调用资源的资源名称;
基于所述原生应用程序调用资源的资源名称,将所述目标应用程序的配置信息修改为与所述原生应用程序对应的配置信息。
5.根据权利要求1所述的方法,所述目标应用程序的配置信息,包括环境变量配置信息和对应调用资源的路径信息中的至少一项。
6.根据权利要求2-5任一项所述的方法,还包括:
基于所述原生应用程序的升级安装文件,根据挂钩到的所述原生应用程序的签名,升级所述目标应用程序。
7.一种应用程序运行控制的装置,其特征在于,包括:
启动模块,用于响应于启动目标应用程序的操作指令,启动所述目标应用程序,其中,包括创建独立的进程来运行所述目标应用程序并加载重设模块,通过加载所述重设模块以挂钩所述目标应用程序调用资源的资源名称;
修改模块,用于基于获取到的所述目标应用程序调用资源的资源名称,通过原生应用程序与所述目标应用程序调用资源的资源名称对应规则,将所述目标应用程序的配置信息修改为与所述原生应用程序对应的配置信息;
调用模块,用于根据所述目标应用程序修改后的配置信息,调用与所述目标应用程序的所需资源对应的所述原生应用程序的所需资源,以运行所述目标应用程序,其中,所述目标应用程序与所述原生应用程序分别独立运行;
原生应用程序与目标应用程序资源名称的对应规则,包括:目标应用程序与原生应用程序调用相同资源的资源名称一一对应的关系。
8.根据权利要求7所述的装置,所述重设模块用于调用钩子函数;
其中,所述钩子函数用于:
挂钩所述目标应用程序调用资源的资源名称;
挂钩所述原生应用程序的签名。
9.根据权利要求8所述的装置,获取所述目标应用程序调用资源的资源名称的方式,包括:
通过钩子函数对所述目标应用程序的进程进行监控以挂钩所述目标应用程序调用资源的资源名称。
10.根据权利要求8所述的装置,所述修改模块,包括:
确定单元,用于基于钩子函数挂钩到的所述目标应用程序调用资源的资源名称,通过所述原生应用程序与所述目标应用程序调用资源的资源名称对应规则,确定所述原生应用程序调用资源的资源名称;
修改单元,用于基于所述原生应用程序调用资源的资源名称,将所述目标应用程序的配置信息修改为与所述原生应用程序对应的配置信息。
11.根据权利要求7所述的装置,所述目标应用程序的配置信息,包括环境变量配置信息和对应调用资源的路径信息中的至少一项。
12.根据权利要求8-11任一项所述的装置,还包括:
升级模块,用于基于所述原生应用程序的升级安装文件,根据挂钩到的所述原生应用程序的签名,升级所述目标应用程序。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201610302816.9A CN105955782B (zh) | 2016-05-09 | 2016-05-09 | 应用程序运行控制的方法及装置 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201610302816.9A CN105955782B (zh) | 2016-05-09 | 2016-05-09 | 应用程序运行控制的方法及装置 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN105955782A CN105955782A (zh) | 2016-09-21 |
CN105955782B true CN105955782B (zh) | 2020-02-07 |
Family
ID=56914149
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201610302816.9A Active CN105955782B (zh) | 2016-05-09 | 2016-05-09 | 应用程序运行控制的方法及装置 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN105955782B (zh) |
Families Citing this family (16)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN106502717B (zh) * | 2016-09-22 | 2020-04-14 | 华为技术有限公司 | 应用程序运行方法及装置 |
CN106650324A (zh) * | 2016-10-10 | 2017-05-10 | 广东欧珀移动通信有限公司 | 应用程序的权限管理方法、装置及移动终端 |
CN106650402B (zh) * | 2016-10-10 | 2019-07-12 | Oppo广东移动通信有限公司 | 应用程序的权限配置方法、装置及移动终端 |
CN106485135A (zh) * | 2016-10-10 | 2017-03-08 | 广东欧珀移动通信有限公司 | 应用程序的权限控制方法、装置及移动终端 |
CN106488020B (zh) * | 2016-10-10 | 2019-09-27 | Oppo广东移动通信有限公司 | 一种多开应用的操作管理方法、装置及智能终端 |
CN106445671B (zh) * | 2016-10-10 | 2019-10-15 | Oppo广东移动通信有限公司 | 一种应用程序的管理方法、装置及终端 |
CN106648298B (zh) * | 2016-10-10 | 2020-01-14 | Oppo广东移动通信有限公司 | 一种应用的控制方法、装置和移动终端 |
CN106650403B (zh) * | 2016-10-10 | 2019-08-06 | Oppo广东移动通信有限公司 | 一种多开应用的权限管理方法、装置及智能终端 |
CN106445612B (zh) * | 2016-10-10 | 2020-03-10 | Oppo广东移动通信有限公司 | 一种开启应用的方法、装置及移动终端 |
CN106454525B (zh) * | 2016-10-26 | 2019-06-21 | 北京奇虎科技有限公司 | 直播方法、装置及终端 |
CN106775952B (zh) * | 2016-12-29 | 2020-09-22 | 北京奇虎科技有限公司 | 一种安卓应用的进程管理方法和装置 |
CN108958949B (zh) * | 2018-05-23 | 2023-04-14 | 平安科技(深圳)有限公司 | 应用程序的调用方法及系统 |
CN109343900B (zh) * | 2018-08-30 | 2022-04-08 | 维沃移动通信有限公司 | 一种权限配置方法及终端 |
CN111324888B (zh) * | 2018-12-13 | 2024-05-10 | 北京奇虎科技有限公司 | 应用程序启动时的验证方法、装置、电子设备及存储介质 |
CN111324386A (zh) * | 2018-12-13 | 2020-06-23 | 北京奇虎科技有限公司 | 分身应用程序的启动方法、装置、电子设备及存储介质 |
CN109976728B (zh) * | 2019-04-10 | 2022-04-26 | 北京梆梆安全科技有限公司 | 一种原生应用程序的生成方法、装置、移动终端 |
Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1310387A (zh) * | 2000-02-21 | 2001-08-29 | 英业达股份有限公司 | 资源重复时的动态定位方法 |
WO2015088928A2 (en) * | 2013-12-12 | 2015-06-18 | Microsoft Technology Licensing, Llc | Managing applications in non-cooperative environments |
CN104866342A (zh) * | 2015-05-07 | 2015-08-26 | 北京数字天域科技有限责任公司 | 在智能终端上同时开启多个同一应用程序的方法和装置 |
Family Cites Families (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN104462879B (zh) * | 2014-11-28 | 2018-04-17 | 北京奇虎科技有限公司 | 应用程序免Root运行控制方法与装置 |
-
2016
- 2016-05-09 CN CN201610302816.9A patent/CN105955782B/zh active Active
Patent Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1310387A (zh) * | 2000-02-21 | 2001-08-29 | 英业达股份有限公司 | 资源重复时的动态定位方法 |
WO2015088928A2 (en) * | 2013-12-12 | 2015-06-18 | Microsoft Technology Licensing, Llc | Managing applications in non-cooperative environments |
CN104866342A (zh) * | 2015-05-07 | 2015-08-26 | 北京数字天域科技有限责任公司 | 在智能终端上同时开启多个同一应用程序的方法和装置 |
Also Published As
Publication number | Publication date |
---|---|
CN105955782A (zh) | 2016-09-21 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN105955782B (zh) | 应用程序运行控制的方法及装置 | |
US11461125B2 (en) | Methods and apparatus to publish internal commands as an application programming interface in a cloud infrastructure | |
CN106066803B (zh) | 应用程序运行控制的方法及装置 | |
US9092286B2 (en) | System to automatically process components on a device | |
US20150332043A1 (en) | Application analysis system for electronic devices | |
EP2696532A2 (en) | Method, server and system for starting application | |
KR101281825B1 (ko) | 클라우드 시스템에서 가상 인터페이스를 이용하는 보안 강화 장치 및 방법 | |
CN105955779B (zh) | 进程关闭方法及装置 | |
US20170124326A1 (en) | Method for monitoring the security of a virtual machine in a cloud computing architecture | |
CA2577244A1 (en) | Method and system for controlling software version updates | |
CN106293696B (zh) | 显示应用程序下载安装状态的方法及其对应装置 | |
US10402216B1 (en) | Live support integration in a virtual machine based development environment | |
KR101692733B1 (ko) | 가상 머신 관리 방법 및 이를 위한 장치 | |
CN108874437B (zh) | 一种android应用程序的在线云更新方法 | |
US10404568B2 (en) | Agent manager for distributed transaction monitoring system | |
CN106502717B (zh) | 应用程序运行方法及装置 | |
CN110865819B (zh) | 一种os的安装方法、服务器和系统 | |
CN104765624B (zh) | 虚拟机应用程序的更新处理方法和装置 | |
CN108958785B (zh) | 一种应用程序升级方法及装置 | |
CN108132832B (zh) | 应用程序启动方法和装置 | |
CN106293821B (zh) | 获取及传输应用程序数据、运行应用程序的方法及装置 | |
CN107766068B (zh) | 应用系统补丁安装方法、装置、计算机设备和存储介质 | |
CN112199151B (zh) | 一种应用程序的运行方法及装置 | |
CN111045695A (zh) | WebLogic中间件部署装置、方法及设备和介质 | |
US11425203B2 (en) | Commissioning a virtualized network function |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant | ||
TR01 | Transfer of patent right |
Effective date of registration: 20240109 Address after: 100088 room 112, block D, 28 new street, new street, Xicheng District, Beijing (Desheng Park) Patentee after: BEIJING QIHOO TECHNOLOGY Co.,Ltd. Address before: 100088 room 112, block D, 28 new street, new street, Xicheng District, Beijing (Desheng Park) Patentee before: BEIJING QIHOO TECHNOLOGY Co.,Ltd. Patentee before: Qizhi software (Beijing) Co.,Ltd. |
|
TR01 | Transfer of patent right |