CN108959061A - 应用功能管理方法、终端以及装置 - Google Patents
应用功能管理方法、终端以及装置 Download PDFInfo
- Publication number
- CN108959061A CN108959061A CN201710358291.5A CN201710358291A CN108959061A CN 108959061 A CN108959061 A CN 108959061A CN 201710358291 A CN201710358291 A CN 201710358291A CN 108959061 A CN108959061 A CN 108959061A
- Authority
- CN
- China
- Prior art keywords
- application
- function
- target
- code
- target process
- 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
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/36—Preventing errors by testing or debugging software
- G06F11/3668—Software testing
- G06F11/3672—Test management
- G06F11/3688—Test management for test execution, e.g. scheduling of test suites
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/36—Preventing errors by testing or debugging software
- G06F11/3668—Software testing
- G06F11/3672—Test management
- G06F11/3684—Test management for test design, e.g. generating new test cases
-
- Y—GENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
- Y02—TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
- Y02D—CLIMATE CHANGE MITIGATION TECHNOLOGIES IN INFORMATION AND COMMUNICATION TECHNOLOGIES [ICT], I.E. INFORMATION AND COMMUNICATION TECHNOLOGIES AIMING AT THE REDUCTION OF THEIR OWN ENERGY USE
- Y02D10/00—Energy efficient computing, e.g. low power processors, power management or thermal management
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Computer Hardware Design (AREA)
- Quality & Reliability (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Stored Programmes (AREA)
- Debugging And Monitoring (AREA)
Abstract
本发明实施例公开了应用功能管理方法、终端以及装置,其中的一种应用功能管理方法包括:测试管理应用进程向系统应用孵化进程注入功能管理代码包,所述功能管理代码包包括目标进程拦截代码和应用功能管理代码;所述系统应用孵化进程执行所述目标进程拦截代码,开始拦截目标进程的启动函数的执行;所述测试管理应用进程启动目标进程;所述系统应用孵化进程拦截到所述目标进程的启动函数的执行,在所述目标进程的启动函数中加入所述应用功能管理代码,使得所述目标进程在执行启动函数时执行所述应用功能管理代码。采用本发明,可在代码层面实现应用功能管理,不再需要进行繁杂的机型适配工作。
Description
技术领域
本发明涉及计算机技术领域,尤其涉及一种应用功能管理方法以及装置。
背景技术
随着自动化测试技术的普及,对应用程序进行测试逐渐由人工测试转为自动化测试。而现如今的自动化测试通常都是UI(User Interface,用户界面)自动化测试的方法,即由设备通过测试工具执行预设测试脚本,在被测应用的UI界面上模拟输入用户针对被测应用UI的操作,从而对被测应用的功能及性能进行自动化的测试。该方案的最大弊端是大规模批量测试时候存在机型适配问题,因为存在大量不同厂商以及不同型号的设备,其上运行的被测应用的应用UI界面页面不尽相同,测试脚本必须对上千款机型一一进行适配,前期准备的工作量巨大,可操作性差。
发明内容
有鉴于此,本发明实施例提供一种应用功能管理方法、终端、装置以及系统,可在代码层面实现应用功能管理,不再需要进行繁杂的机型适配工作。
为了解决上述技术问题,本发明实施例第一方面提供了一种应用功能管理方法,所述方法包括:
测试管理应用进程向系统应用孵化进程注入功能管理代码包,所述功能管理代码包包括目标进程拦截代码和应用功能管理代码;
所述系统应用孵化进程执行所述目标进程拦截代码,开始拦截目标进程的启动函数的执行;
所述测试管理应用进程启动目标进程;
所述系统应用孵化进程拦截到所述目标进程的启动函数的执行,在所述目标进程的启动函数中加入所述应用功能管理代码,使得所述目标进程在执行启动函数时执行所述应用功能管理代码。
可选的,所述测试管理应用进程向系统应用孵化进程注入功能管理代码包包括:
所述测试管理应用进程触发所述系统应用孵化进程加载预设的类加载器;
所述系统应用孵化进程运行所述类加载器加载所述功能管理代码包。
可选的,所述测试管理应用进程触发所述系统应用孵化进程加载类加载器包括:
所述测试管理应用进程调用所述系统应用孵化进程的动态链接库文件打开函数,使得所述系统应用孵化进程加载所述类加载器的动态链接库文件;
所述系统应用孵化进程运行所述类加载器加载所述功能管理代码包包括:
所述系统应用孵化进程根据所述类加载器的动态链接库文件运行所述类加载器加载所述功能管理代码包。
可选的,所述测试管理应用进程触发所述系统应用孵化进程加载预设的类加载器之前还包括:
所述测试管理应用进程触发所述系统应用孵化进程进入调试状态。
可选的,所述系统应用孵化进程拦截到所述目标进程的启动函数的执行,在所述目标进程的启动函数中加入所述应用功能管理代码,使得所述目标进程在执行启动函数时执行所述应用功能管理代码包括:
所述系统应用孵化进程拦截到所述目标进程的启动函数的执行,使得所述目标进程停止执行所述启动函数;
所述系统应用孵化进程在所述目标进程的启动函数中加入所述应用功能管理代码;
所述系统应用孵化进程触发所述目标进程执行所述加入了应用功能管理代码的启动函数。
可选的,所述目标进程拦截代码携带目标进程的进程标识;
所述系统应用孵化进程执行所述目标进程拦截代码,开始拦截目标进程的启动函数的执行包括:
所述系统应用孵化进程根据所述目标进程的进程标识,拦截目标进程的启动函数的执行。
可选的,所述应用功能管理代码被所述目标进程执行以开启/关闭目标应用功能。
可选的,所述测试管理应用进程启动目标进程包括:
若所述目标进程当前已经启动,则所述测试管理应用进程关闭所述目标进程后重新启动目标进程。
可选的,所述应用功能管理代码包括目标应用功能的功能服务标识;
所述目标进程执行所述应用功能管理代码包括:
所述目标进程根据所述目标应用功能的功能服务标识开启所述目标应用功能。
可选的,所述应用功能管理代码还包括被测应用的应用进程标识;
所述目标进程执行所述应用功能管理代码包括:
所述目标进程根据所述被测应用的应用进程标识和目标应用功能的功能服务标识开启所述被测应用的目标应用功能。
本发明实施例第二方面提供了一种应用功能管理方法,所述方法包括:
测试管理应用进程向系统应用孵化进程注入功能管理代码包,所述功能管理代码包包括目标进程拦截代码和应用功能管理代码;
所述测试管理应用进程启动目标进程;
所述目标进程拦截代码被所述系统应用孵化进程执行时用以拦截目标进程的启动函数的执行,以及在所述目标进程的启动函数中加入所述应用功能管理代码,使得所述目标进程在执行启动函数时执行所述应用功能管理代码。
可选的,所述测试管理应用进程向系统应用孵化进程注入功能管理代码包包括:
所述测试管理应用进程触发所述系统应用孵化进程加载预设的类加载器,所述类加载器被所述系统应用孵化进程用于加载所述功能管理代码包。
可选的,所述测试管理应用进程触发所述系统应用孵化进程加载类加载器包括:
所述测试管理应用进程调用所述系统应用孵化进程的动态链接库文件打开函数,将所述类加载器的动态链接库文件加载至所述系统应用孵化进程中,所述类加载器的动态链接库文件被所述系统应用孵化进程用于运行所述类加载器加载所述功能管理代码包。
可选的,所述测试管理应用进程触发所述系统应用孵化进程加载预设的类加载器之前还包括:
所述测试管理应用进程触发所述系统应用孵化进程进入调试状态。
可选的,所述目标进程拦截代码携带目标进程的进程标识,所述目标进程的进程标识被所述系统应用孵化进程用于识别目标进程的启动函数的执行。
可选的,所述测试管理应用进程启动目标进程包括:
若所述目标进程当前已经启动,则所述测试管理应用进程关闭所述目标进程后重新启动目标进程。
可选的,所述应用功能管理代码被所述目标进程执行以开启/关闭目标应用功能。
可选的,所述应用功能管理代码包括目标应用功能的功能服务标识,所述目标应用功能的功能服务标识被所述目标进程用于开启所述目标应用功能。
可选的,所述应用功能管理代码还包括被测应用的应用进程标识;
所述被测应用的应用进程标识和目标应用功能的功能服务标识被所述目标进程用于开启所述被测应用的目标应用功能。
相应的,本发明实施例第三方面还提供了一种存储介质,所述存储介质中存储有多条指令,所述指令适于由处理器加载并执行本发明实施例第二方面所提供全部或部分的应用功能管理方法。
相应的,本发明实施例第四方面还提供了一种智能终端,其特征在于,所述智能终端包括:
处理器,用于执行各指令;
存储介质,用于存储多条指令,所述指令适于由所述处理器加载并执行本发明实施例第二方面所提供全部或部分的应用功能管理方法。
相应的,本发明实施例第五方面还提供了一种应用功能管理装置,所述装置包括:
管理代码注入模块,用于向系统应用孵化进程注入功能管理代码包,所述功能管理代码包包括目标进程拦截代码和应用功能管理代码;
进程启动模块,用于启动目标进程;
所述目标进程拦截代码被所述系统应用孵化进程执行时用以拦截目标进程的启动函数的执行,以及在所述目标进程的启动函数中加入所述应用功能管理代码,使得所述目标进程在执行启动函数时执行所述应用功能管理代码。
可选的,所述管理代码注入模块用于:
触发所述系统应用孵化进程加载预设的类加载器,所述类加载器被所述系统应用孵化进程用于加载所述功能管理代码包。
可选的,所述管理代码注入模块用于:
调用所述系统应用孵化进程的动态链接库文件打开函数,将所述类加载器的动态链接库文件加载至所述系统应用孵化进程中,所述类加载器的动态链接库文件被所述系统应用孵化进程用于运行所述类加载器加载所述功能管理代码包。
可选的,所述管理代码注入模块触发所述系统应用孵化进程加载预设的类加载器之前还用于:
触发所述系统应用孵化进程进入调试状态。
可选的,所述目标进程拦截代码携带目标进程的进程标识,所述目标进程的进程标识被所述系统应用孵化进程用于识别目标进程的启动函数的执行。
可选的,所述进程启动模块用于:
若所述目标进程当前已经启动,则关闭所述目标进程后重新启动目标进程。
可选的,所述应用功能管理代码被所述目标进程执行以开启/关闭目标应用功能。
可选的,所述应用功能管理代码包括目标应用功能的功能服务标识,所述目标应用功能的功能服务标识被所述目标进程用于开启所述目标应用功能。
可选的,所述应用功能管理代码还包括被测应用的应用进程标识;
所述被测应用的应用进程标识和目标应用功能的功能服务标识被所述目标进程用于开启所述被测应用的目标应用功能。
相应的,本发明实施例第六方面还提供了一种应用功能管理系统,所述应用功能管理系统包括测试管理应用进程和系统应用孵化进程,其中:
所述测试管理应用进程向系统应用孵化进程注入功能管理代码包,所述功能管理代码包包括目标进程拦截代码和应用功能管理代码;
所述系统应用孵化进程执行所述目标进程拦截代码,开始拦截目标进程的启动函数的执行;
所述测试管理应用进程启动目标进程;
所述系统应用孵化进程拦截到所述目标进程的启动函数的执行,在所述目标进程的启动函数中加入所述应用功能管理代码,使得所述目标进程在执行启动函数时执行所述应用功能管理代码。
相应的,本发明实施例第六方面还提供了一种智能终端,所述智能终端包括:
处理器,用于执行各指令;
存储介质,用于存储多条指令,所述指令适于由所述处理器加载后生成系统应用孵化进程和测试管理应用进程,并用于执行本发明实施例第一方面所提供全部或部分的应用功能管理方法。
本发明实施例通过向系统应用孵化进程注入功能管理代码包,由系统应用孵化进程的拦截目标进程的启动,并向目标进程的启动函数中加入应用功能管理代码,使得目标进程在启动过程中执行应用功能管理代码,从而在代码层面实现应用功能管理,不再需要进行繁杂的机型适配工作。
附图说明
为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1是本发明实施例中的一种应用功能管理方法的流程示意图;
图2是本发明一个可选实施例中测试管理应用进程向系统应用孵化进程注入功能管理代码包的流程示意图;
图3是本发明实施例提供的一种智能终端的结构示意图;
图4是本发明另一实施例提供的一种智能终端的结构示意图。
具体实施方式
下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
本发明实施例中的应用功能管理方法,可用于对各种电子设备进行应用测试的场景,所述电子设备可以包括个人电脑、智能手机、智能穿戴式设备、车载终端、平板电脑、电子阅读器等智能终端,所述目标进程可以是被测应用,也可以是为了实现对被测应用的测试而需要调用的另一个进程,例如在对被测应用进行测试之前需要打开所在设备的辅助功能Accessibility,这个场景下的目标进程可以是用于打开设备的辅助功能的一个进程,例如setting进程。
本发明实施例是通过向系统应用孵化进程注入功能管理代码包,由系统应用孵化进程的特殊身份实现拦截目标进程的启动,并向目标进程的启动函数中加入应用功能管理代码,使得目标进程在启动过程中执行应用功能管理代码,从而在代码层面实现应用功能管理,不再需要进行繁杂的机型适配工作。
图1是本发明实施例中的一种应用功能管理方法的流程示意图,如图所示本实施例中的应用功能管理方法包括:
S101,测试管理应用进程向系统应用孵化进程注入功能管理代码包,所述功能管理代码包包括目标进程拦截代码和应用功能管理代码。
具体的,所述系统应用孵化进程可以是设备操作系统中负责创建所有进程的一个系统进程,例如为zygote进程,由于设备操作系统中所有的进程都是由系统应用孵化进程创建的,因此系统应用孵化进程可以被认为是操作系统中所有进程的父进程,通过该系统应用孵化进程可以拦截所有进程的启动。
在可选实施例中,所述测试管理应用进程可以拥有root权限(超级管理员权限)。
所述功能管理代码包可以是一个预先编写好的JAR(Java ArchiveFile,Java归档文件)包或其他格式的代码包(例如WAR包或EAR包,WAR即Web Archivefile,一种网络应用程序文件,EAR即Enterprise Archive File是针对企业级项目J2EE应用程序创建的JAR文件)。所述功能管理代码包可以预设于测试管理应用进程的指定路径下,或预先通知测试管理应用进程所述功能管理代码包的调用路径和参数,以便测试管理应用进程向系统应用孵化进程注入所述功能管理代码包。
在可选实施例中,所述测试管理应用进程向系统应用孵化进程注入功能管理代码包具体可以包括:
所述测试管理应用进程触发所述系统应用孵化进程加载预设的类加载器(例如Dexclassloader),所述系统应用孵化进程通过运行所述类加载器加载所述功能管理代码包。
而在可选实施例中,所述测试管理应用进程触发所述系统应用孵化进程加载类加载器又进一步可以包括:
所述测试管理应用进程调用所述系统应用孵化进程的动态链接库文件打开函数,使得所述系统应用孵化进程加载所述类加载器的动态链接库文件,进而所述系统应用孵化进程根据所述类加载器的动态链接库文件运行所述类加载器加载所述功能管理代码包。
所述类加载器的动态链接库文件可以为包含所述类加载器代码的SO(sharedobject)文件或DLL(Dynamic Link Library)文件,所述系统应用孵化进程的动态链接库文件打开函数可以例如包括dlopen函数,还可以包括dlsym函数,其中可以使用所述dlopen函数获取动态链接库文件的地址并加载动态链接库文件,使用dlsym函数可以获取动态链接库文件中的函数地址,在这里就是可以获取动态链接库文件中类加载器的地址,以便系统应用孵化进程调用所述动态链接库文件中的类加载器加载所述功能管理代码包。
进一步可选的,所述测试管理应用进程触发所述系统应用孵化进程加载类加载器之前,还可以首先触发所述系统应用孵化进程进入调试状态。
具体实现中,可以通过调用ptrace函数,使所述系统应用孵化进程进入调试状态。
进一步在可选实施例中,所述测试管理应用进程调用所述系统应用孵化进程的动态链接库文件打开函数,使得所述系统应用孵化进程加载所述类加载器的动态链接库文件,进而所述系统应用孵化进程根据所述类加载器的动态链接库文件运行所述类加载器加载所述功能管理代码包后,所述测试管理应用进程还可以调用系统应用孵化进程的动态链接库文件关闭函数从系统应用孵化进程中携带所述动态链接库文件,如调用dlclose函数卸载SO库文件。
一个具体实现向系统应用孵化进程注入功能管理代码包的实施例将在本实施例后结合附图2进行说明。
S102,所述系统应用孵化进程执行所述目标进程拦截代码,开始拦截目标进程的启动函数的执行。
由于设备操作系统中所有的进程都是由系统应用孵化进程创建的,因此系统应用孵化进程可以被认为是操作系统中所有进程的父进程,所述系统应用孵化进程可以通过执行所述目标进程拦截代码实现拦截所有进程的启动。
在可选实施例中,所述目标进程拦截代码可以携带目标进程的进程标识,使得所述系统应用孵化进程根据所述目标进程的进程标识,拦截目标进程的启动函数的执行,所述目标进程的进程标识被所述系统应用孵化进程用于识别目标进程的启动函数的执行。具体实现中,所有进程在启动时都会执行其对应的启动函数,这里的启动函数可以例如进程在初始化时执行的attach函数,系统应用孵化进程可以监听并拦截系统中所有attach函数的执行,进而在监听或拦截到某个进程的attach函数的执行时,获取该attach函数对应的进程的进程标识,例如packageName,若监听或拦截到的启动函数对应的进程标识为目标进程拦截代码中携带的目标进程的进程标识,则执行在所述目标进程的启动函数中加入所述应用功能管理代码,若监听或拦截到的启动函数对应的进程标识与目标进程拦截代码中携带的目标进程的进程标识不符,则可以忽略,或控制该启动函数继续执行。
S103,所述测试管理应用进程启动目标进程。
具体的,测试管理应用进程可以通过执行针对目标进程的启动命令,例如start[xxx],xxx为进程标识或服务标识,所述标识可以为号码ID或名称Name。
进而在可选实施例中,若所述目标进程当前已运行,则所述测试管理应用进程可以关闭所述目标进程后重新启动目标进程,即例如先执行kill[xxx]关闭目标进程后,再执行start[xxx]。
为了查看所述目标进程当前是否已运行,测试管理应用进程可以通过ps命令查看当前操作系统中已运行的进程,例如执行:ps a显示设备系统当前运行的所有进程,包括其他用户的进程;或执行ps-A显示所有进程。
S104,所述系统应用孵化进程拦截到所述目标进程的启动函数的执行。
在S102所述系统应用孵化进程执行所述目标进程拦截代码,开始尝试拦截目标进程的启动函数的执行,在所述测试管理应用进程启动目标进程时,所述系统应用孵化进程可以拦截到所述目标进程的启动函数的执行,进而停止所述目标进程的启动函数的执行。
S105,在所述目标进程的启动函数中加入所述应用功能管理代码。
所述应用功能管理代码为一个预先编写得到的希望目标进程执行的功能代码段,所述应用功能管理代码被所述目标进程执行可以开启/关闭目标应用功能。所述目标应用功能可以例如为设备的辅助功能Accessibility,还可以为设备监控功能、远程控制功能等。
可选的,所述应用功能管理代码可以包括目标应用功能的功能服务标识,所述目标进程根据所述目标应用功能的功能服务标识开启所述目标应用功能。这时需要目标进程拥有开启所述目标应用功能的权限。
进一步可选的,所述应用功能管理代码还可以为包括目标应用功能的功能服务标识和被测应用的应用进程标识,所述目标进程根据所述被测应用的应用进程标识和目标应用功能的功能服务标识开启所述被测应用的目标应用功能。
若所述被测应用的进程与目标进程不是同一进程,则目标进程根据所述被测应用的应用进程标识和目标应用功能的功能服务标识开启所述被测应用的目标应用功能,这时就需要选取拥有开启所述被测应用的目标应用功能的权限的目标进程,例如需要打开被测应用的辅助功能,可以选取系统的setting进程作为目标进程,setting进程拥有开启所述被测应用的辅助功能的权限,在其他可选实施例中还可以选取其他拥有开启所述被测应用的辅助功能的权限的进程作为目标进程,例如其他拥有系统级权限的进程。若所述被测应用的进程与目标进程是同一进程,则应用功能管理代码中可以缺省被测应用的应用进程标识,也可以为目标进程的应用进程标识。
示例性的,所述应用功能管理代码可以例如:
Setting.Secure.putString(context.getContentResolver(),
Setting.Secure.ENABLED_ACCESSIBILITY_SERVICES,
“com.kunpeng.accessmanager/com.kunpeng.accessmanager.KatAccessibilitySever”)
Setting.Secure.putString(context.getContentResolver(),
Setting.Secure.ACCESSIBILITY_ENABLED,“1”);
com.kunpeng.accessmanager即为被测应用的应用进程标识(应用包名),com.kunpeng.accessmanager.KatAccessibilitySever即为目标应用功能的功能服务标识,在其他可选实施例可以替换成其他应用或其他功能服务标识。设置accessibility_enabled为“1”,代表开启辅助功能服务。设置后,被测应用的辅助功能就被开启了,上述示例中的代码必须在系统级进程中调用才能生效,该实施例中相当于通过setting进程实现开启被测应用的辅助功能。
S106,所述目标进程在执行启动函数时执行所述应用功能管理代码。
具体实现中,在所述目标进程的启动函数中加入所述应用功能管理代码完成后,系统应用孵化进程可以触发所述目标进程重新执行或继续执行所述加入了应用功能管理代码的启动函数,从而目标进程在启动过程中自动执行了应用功能管理代码,实现了例如开启/关闭目标应用功能。所述目标应用功能可以例如为设备的辅助功能Accessibility,还可以为设备监控功能、远程控制功能等。
本发明实施例通过向系统应用孵化进程注入功能管理代码包,由系统应用孵化进程的拦截目标进程的启动,并向目标进程的启动函数中加入应用功能管理代码,使得目标进程在启动过程中执行应用功能管理代码,从而在代码层面实现应用功能管理,不再需要进行繁杂的机型适配工作。
图2是本发明一个可选实施例中测试管理应用进程向系统应用孵化进程注入功能管理代码包的流程示意图,如图2所示包括以下流程:
S201,测试管理应用进程调用ptrace函数,使得系统应用孵化进程进入调试状态。
具体的,可以通过执行ptrace_attach(target_pid)附加到系统应用孵化进程,target_pid为系统应用孵化进程的进程标识,附加到系统应用孵化进程后还可以暂停系统应用孵化进程的运行,从而将其进入调试模式,还可以通过执行ptrace_getregs(target_pid,®s)获得目标寄存器。
S202,测试管理应用进程调用dlopen函数加载so库文件。
具体实现中,可以通过执行get_remote_addr(target_pid,linker_path,(void*)dlopen)获取系统应用孵化进程的dlopen函数地址,进而修改目标寄存器使之指向dlopen函数地址,从而实现调用dlopen函数加载so库文件。
所述so库文件可以加载至系统应用孵化进程预先分配的内存空间中,具体实现中可以为:
调用mmap函数为系统应用孵化进程分配内存空间,在为系统应用孵化进程分配的内存空间中写入要加载的so库文件的路径,进而调用dlopen函数,加载so库文件,如执行以下命令:
ptrace_call_wrapper(target_pid,"dlopen",dlopen_addr,parameters,2,®s),其中parameters为调用mmap为系统应用孵化进程分配的内存空间。
S203,测试管理应用进程调用dlsym函数获取so库中的运行函数地址。
具体实现中,可以通过执行dlsym_addr=get_remote_addr(target_pid,linker_path,(void*)dlsym);//获得目标进程中dlsym函数地址,进而修改目标寄存器使之指向dlsym函数地址,从而实现调用dlsym函数获取so库中的运行函数地址,如进一步执行以下命令:
ptrace_call_wrapper(target_pid,"dlsym",dlsym_addr,parameters,2,®s);
run_addr=ptrace_retval(®s),其中parameters为调用mmap为系统应用孵化进程分配的内存空间。
S204,系统应用孵化进程调用so库的运行函数。
在加载so库文件并获取到so库文件的运行函数地址后,可以通过调用so库的运行函数,如修改目标寄存器使之指向so库的运行函数地址。
S205,so库调用dexclassloader加载功能管理代码包。
即通过so库的运行函数调用so库中的dexclassloader加载预设的功能管理代码包。在可选实施例中,所述功能管理代码包可以预置于所述so库文件中以便so库中的dexclassloader需要时进行加载,所述功能管理代码包也可以独立于所述so库文件,将所述功能管理代码包的保存路径和/或文件名作为so库调用dexclassloader的执行参数,从而让so库调用dexclassloader可以加载功能管理代码包。
在可选实施例中,在系统应用孵化进程加载得到功能管理代码包,并拦截到目标进程,使得目标进程在执行启动函数时执行所述应用功能管理代码后,还可以调用dlclose()函数从系统应用孵化进程中卸载so库,从而让系统应用孵化进程。
图3是本发明实施例提供的一种智能终端的结构示意图,如图所示本实施例中的智能终端包括处理器301、存储介质302以及至少一个通信接口303;所述处理器301、存储介质302以及通信接口303均通过总线304连接。
所述存储介质302可以为智能终端内置的存储介质或独立设置的存储介质。所述用于数据处理的处理器301可以采用微处理器、中央处理器(CPU,CentralProcessingUnit)、数字信号处理器(DSP,Digital SingnalProcessor)或可编程逻辑阵列(FPGA,Field-Programmable Gate Array)。
所述存储介质302中可以存储有多条指令,所述指令适于由处理器301加载并执行前文实施例中结合图1和图2所示的测试管理应用进程对应的部分流程,其中至少包括:
向系统应用孵化进程注入功能管理代码包,所述功能管理代码包包括目标进程拦截代码和应用功能管理代码;
启动目标进程;
所述目标进程拦截代码被所述系统应用孵化进程执行时用以拦截目标进程的启动函数的执行,以及在所述目标进程的启动函数中加入所述应用功能管理代码,使得所述目标进程在执行启动函数时执行所述应用功能管理代码。
在可选实施例中,所述存储介质302中存储的有多条指令由处理器301执行后可以得到应用功能管理装置,所述应用功能管理装置包括:
管理代码注入模块3021,用于向系统应用孵化进程注入功能管理代码包,所述功能管理代码包包括目标进程拦截代码和应用功能管理代码;
进程启动模块3022,用于启动目标进程;
所述目标进程拦截代码被所述系统应用孵化进程执行时用以拦截目标进程的启动函数的执行,以及在所述目标进程的启动函数中加入所述应用功能管理代码,使得所述目标进程在执行启动函数时执行所述应用功能管理代码。
在可选实施例中,所述管理代码注入模块3021具体用于:
触发所述系统应用孵化进程加载预设的类加载器,所述类加载器被所述系统应用孵化进程用于加载所述功能管理代码包。
在可选实施例中,所述管理代码注入模块3021具体用于:
调用所述系统应用孵化进程的动态链接库文件打开函数,将所述类加载器的动态链接库文件加载至所述系统应用孵化进程中,所述类加载器的动态链接库文件被所述系统应用孵化进程用于运行所述类加载器加载所述功能管理代码包。
在可选实施例中,所述管理代码注入模块3021触发所述系统应用孵化进程加载预设的类加载器之前还用于:
触发所述系统应用孵化进程进入调试状态。
在可选实施例中,所述目标进程拦截代码携带目标进程的进程标识,所述目标进程的进程标识被所述系统应用孵化进程用于识别目标进程的启动函数的执行。
在可选实施例中,所述进程启动模块3022具体用于:
若所述目标进程当前已经启动,则关闭所述目标进程后重新启动目标进程。
在可选实施例中,所述应用功能管理代码被所述目标进程执行以开启/关闭目标应用功能。
在可选实施例中,所述应用功能管理代码包括目标应用功能的功能服务标识,所述目标应用功能的功能服务标识被所述目标进程用于开启所述目标应用功能。
在可选实施例中,所述应用功能管理代码还包括被测应用的应用进程标识;
所述被测应用的应用进程标识和目标应用功能的功能服务标识被所述目标进程用于开启所述被测应用的目标应用功能。
可以被理解的是,上述应用功能管理装置以及上述携带特定指令的存储介质不应被理解为只能存在或实现于本实施例中的智能终端,而是可以实现于任何终端、存储设备或网络设备中。
需要说明的是,应用功能管理装置中各功能模块的功能可参见上述图1-2所示实施例中对应测试管理应用进程的相关描述,此处不再赘述。在本申请所提供的几个实施例中,应该理解到,所揭露的装置和方法,可以通过其它的方式实现。例如,以上所描述的装置实施例仅仅是示意性的,例如,所述模块的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,例如多个模块或组件可以结合或者可以集成到另一个系统,或一些特征可以忽略,或不执行。另一点,所显示或讨论的相互之间的耦合或直接耦合或通信连接可以是通过一些接口,装置或模块的间接耦合或通信连接,可以是电性,机械或其它的形式。
图4是本发明另一实施例提供的一种智能终端的结构示意图,如图所示本实施例中的智能终端包括处理器401、存储介质402以及至少一个通信接口403;所述处理器401、存储介质402以及通信接口403均通过总线404连接。
所述存储介质402可以为智能终端内置的存储介质或独立设置的存储介质。所述用于数据处理的处理器401可以采用微处理器、中央处理器(CPU,CentralProcessingUnit)、数字信号处理器(DSP,Digital SingnalProcessor)或可编程逻辑阵列(FPGA,Field-Programmable Gate Array)。
所述存储介质402中可以存储有多条指令,所述指令适于由处理器401加载并执行后生成应用功能管理系统,所述应用功能管理系统包括测试管理应用进程4021和系统应用孵化进程4022,可以执行前文实施例中结合图1和图2所示的全部或部分流程,其中至少包括:
所述测试管理应用进程4021向系统应用孵化进程4022注入功能管理代码包,所述功能管理代码包包括目标进程拦截代码和应用功能管理代码;
所述系统应用孵化进程4022执行所述目标进程拦截代码,开始拦截目标进程的启动函数的执行;
所述测试管理应用进程4021启动目标进程;
所述系统应用孵化进程4022拦截到所述目标进程的启动函数的执行,在所述目标进程的启动函数中加入所述应用功能管理代码,使得所述目标进程在执行启动函数时执行所述应用功能管理代码。
在可选实施例中,所述测试管理应用进程4021向系统应用孵化进程4022注入功能管理代码包包括:
所述测试管理应用进程4021触发所述系统应用孵化进程4022加载预设的类加载器;
所述系统应用孵化进程4022运行所述类加载器加载所述功能管理代码包。
在可选实施例中,所述测试管理应用进程4021触发所述系统应用孵化进程4022加载类加载器包括:
所述测试管理应用进程4021调用所述系统应用孵化进程4022的动态链接库文件打开函数,使得所述系统应用孵化进程4022加载所述类加载器的动态链接库文件;
所述系统应用孵化进程4022运行所述类加载器加载所述功能管理代码包包括:
所述系统应用孵化进程4022根据所述类加载器的动态链接库文件运行所述类加载器加载所述功能管理代码包。
在可选实施例中,所述测试管理应用进程4021触发所述系统应用孵化进程4022加载预设的类加载器之前还包括:
所述测试管理应用进程4021触发所述系统应用孵化进程4022进入调试状态。
在可选实施例中,所述系统应用孵化进程4022拦截到所述目标进程的启动函数的执行,在所述目标进程的启动函数中加入所述应用功能管理代码,使得所述目标进程在执行启动函数时执行所述应用功能管理代码包括:
所述系统应用孵化进程4022拦截到所述目标进程的启动函数的执行,使得所述目标进程停止执行所述启动函数;
所述系统应用孵化进程4022在所述目标进程的启动函数中加入所述应用功能管理代码;
所述系统应用孵化进程4022触发所述目标进程执行所述加入了应用功能管理代码的启动函数。
在可选实施例中,所述目标进程拦截代码携带目标进程的进程标识;
所述系统应用孵化进程4022执行所述目标进程拦截代码,开始拦截目标进程的启动函数的执行包括:
所述系统应用孵化进程4022根据所述目标进程的进程标识,拦截目标进程的启动函数的执行。
在可选实施例中,所述应用功能管理代码被所述目标进程执行以开启/关闭目标应用功能。
在可选实施例中,所述测试管理应用进程4021启动目标进程包括:
若所述目标进程当前已经启动,则所述测试管理应用进程4021关闭所述目标进程后重新启动目标进程。
在可选实施例中,所述应用功能管理代码包括目标应用功能的功能服务标识;
所述目标进程执行所述应用功能管理代码包括:
所述目标进程根据所述目标应用功能的功能服务标识开启所述目标应用功能。
在可选实施例中,所述应用功能管理代码还包括被测应用的应用进程标识;
所述目标进程执行所述应用功能管理代码包括:
所述目标进程根据所述被测应用的应用进程标识和目标应用功能的功能服务标识开启所述被测应用的目标应用功能。
可以被理解的是,上述应用功能管理系统以及上述携带特定指令的存储介质不应被理解为只能存在或实现于本实施例中的智能终端,而是可以实现于任何终端、存储设备或网络设备中。
本领域普通技术人员可以理解,在本申请的各种实施例中,上述各过程的序号的大小并不意味着执行顺序的先后,各过程的执行顺序应以其功能和内在逻辑确定,而不应对本申请实施例的实施过程构成任何限定。
在上述实施例中,可以全部或部分地通过软件、硬件、固件或者其任意组合来实现。当使用软件实现时,可以全部或部分地以计算机程序产品的形式实现。所述计算机程序产品包括一个或多个计算机指令。在计算机上加载和执行所述计算机程序指令时,全部或部分地产生按照本发明实施例所述的流程或功能。所述计算机可以是通用计算机、专用计算机、计算机网络、或者其他可编程装置。所述计算机指令可以存储在计算机可读存储介质中,或者从一个计算机可读存储介质向另一个计算机可读存储介质传输,例如,所述计算机指令可以从一个网站站点、计算机、服务器或数据中心通过有线(例如同轴电缆、光纤、数字用户线(Digital Subscriber Line,DSL))或无线(例如红外、无线、微波等)方式向另一个网站站点、计算机、服务器或数据中心进行传输。所述计算机可读存储介质可以是计算机能够存取的任何可用介质或者是包含一个或多个可用介质集成的服务器、数据中心等数据存储设备。所述可用介质可以是磁性介质,(例如,软盘、硬盘、磁带)、光介质(例如,DVD)、或者半导体介质(例如固态硬盘(Solid State Disk,SSD))等。
本领域普通技术人员可以理解实现上述实施例方法中的全部或部分流程,是可以通过计算机程序来指令相关的硬件来完成,所述的程序可存储于一计算机可读取存储介质中,该程序在执行时,可包括如上述各方法的实施例的流程。其中,所述的存储介质可为磁碟、光盘、只读存储记忆体(Read-Only Memory,ROM)或随机存储记忆体(Random AccessMemory,RAM)等。
以上所揭露的仅为本发明较佳实施例而已,当然不能以此来限定本发明之权利范围,因此依本发明权利要求所作的等同变化,仍属本发明所涵盖的范围。
Claims (14)
1.一种应用功能管理方法,其特征在于,所述方法包括:
测试管理应用进程向系统应用孵化进程注入功能管理代码包,所述功能管理代码包包括目标进程拦截代码和应用功能管理代码;
所述系统应用孵化进程执行所述目标进程拦截代码,开始拦截目标进程的启动函数的执行;
所述测试管理应用进程启动目标进程;
所述系统应用孵化进程拦截到所述目标进程的启动函数的执行,在所述目标进程的启动函数中加入所述应用功能管理代码,使得所述目标进程在执行启动函数时执行所述应用功能管理代码。
2.如权利要求1所述的应用功能管理方法,其特征在于,所述测试管理应用进程向系统应用孵化进程注入功能管理代码包包括:
所述测试管理应用进程触发所述系统应用孵化进程加载预设的类加载器;
所述系统应用孵化进程运行所述类加载器加载所述功能管理代码包。
3.如权利要求2所述的应用功能管理方法,其特征在于,所述测试管理应用进程触发所述系统应用孵化进程加载类加载器包括:
所述测试管理应用进程调用所述系统应用孵化进程的动态链接库文件打开函数,使得所述系统应用孵化进程加载所述类加载器的动态链接库文件;
所述系统应用孵化进程运行所述类加载器加载所述功能管理代码包包括:
所述系统应用孵化进程根据所述类加载器的动态链接库文件运行所述类加载器加载所述功能管理代码包。
4.如权利要求1所述的应用功能管理方法,其特征在于,所述系统应用孵化进程拦截到所述目标进程的启动函数的执行,在所述目标进程的启动函数中加入所述应用功能管理代码,使得所述目标进程在执行启动函数时执行所述应用功能管理代码包括:
所述系统应用孵化进程拦截到所述目标进程的启动函数的执行,使得所述目标进程停止执行所述启动函数;
所述系统应用孵化进程在所述目标进程的启动函数中加入所述应用功能管理代码;
所述系统应用孵化进程触发所述目标进程执行所述加入了应用功能管理代码的启动函数。
5.如权利要求1所述的应用功能管理方法,其特征在于,所述目标进程拦截代码携带目标进程的进程标识;
所述系统应用孵化进程执行所述目标进程拦截代码,开始拦截目标进程的启动函数的执行包括:
所述系统应用孵化进程根据所述目标进程的进程标识,拦截目标进程的启动函数的执行。
6.如权利要求1-5中任一项所述的应用功能管理方法,其特征在于,所述应用功能管理代码被所述目标进程执行以开启/关闭目标应用功能。
7.一种应用功能管理方法,其特征在于,所述方法包括:
测试管理应用进程向系统应用孵化进程注入功能管理代码包,所述功能管理代码包包括目标进程拦截代码和应用功能管理代码;
所述测试管理应用进程启动目标进程;
所述目标进程拦截代码被所述系统应用孵化进程执行时用以拦截目标进程的启动函数的执行,以及在所述目标进程的启动函数中加入所述应用功能管理代码,使得所述目标进程在执行启动函数时执行所述应用功能管理代码。
8.如权利要求7所述的应用功能管理方法,其特征在于,所述测试管理应用进程向系统应用孵化进程注入功能管理代码包包括:
所述测试管理应用进程触发所述系统应用孵化进程加载预设的类加载器,所述类加载器被所述系统应用孵化进程用于加载所述功能管理代码包。
9.如权利要求8所述的应用功能管理方法,其特征在于,所述测试管理应用进程触发所述系统应用孵化进程加载类加载器包括:
所述测试管理应用进程调用所述系统应用孵化进程的动态链接库文件打开函数,将所述类加载器的动态链接库文件加载至所述系统应用孵化进程中,所述类加载器的动态链接库文件被所述系统应用孵化进程用于运行所述类加载器加载所述功能管理代码包。
10.如权利要求7所述的应用功能管理方法,其特征在于,所述目标进程拦截代码携带目标进程的进程标识,所述目标进程的进程标识被所述系统应用孵化进程用于识别目标进程的启动函数的执行。
11.如权利要求7-10中任一项所述的应用功能管理方法,其特征在于,所述应用功能管理代码被所述目标进程执行以开启/关闭目标应用功能。
12.一种存储介质,其特征在于,所述存储介质中存储有多条指令,所述指令适于由处理器加载并执行:
向系统应用孵化进程注入功能管理代码包,所述功能管理代码包包括目标进程拦截代码和应用功能管理代码;
启动目标进程;
所述目标进程拦截代码被所述系统应用孵化进程执行时用以拦截目标进程的启动函数的执行,以及在所述目标进程的启动函数中加入所述应用功能管理代码,使得所述目标进程在执行启动函数时执行所述应用功能管理代码。
13.一种智能终端,其特征在于,所述智能终端包括:
处理器,用于执行各指令;
存储介质,用于存储多条指令,所述指令适于由所述处理器加载并执行:
向系统应用孵化进程注入功能管理代码包,所述功能管理代码包包括目标进程拦截代码和应用功能管理代码;
启动目标进程;
所述目标进程拦截代码被所述系统应用孵化进程执行时用以拦截目标进程的启动函数的执行,以及在所述目标进程的启动函数中加入所述应用功能管理代码,使得所述目标进程在执行启动函数时执行所述应用功能管理代码。
14.一种应用功能管理装置,其特征在于,所述装置包括:
管理代码注入模块,用于向系统应用孵化进程注入功能管理代码包,所述功能管理代码包包括目标进程拦截代码和应用功能管理代码;
进程启动模块,用于启动目标进程;
所述目标进程拦截代码被所述系统应用孵化进程执行时用以拦截目标进程的启动函数的执行,以及在所述目标进程的启动函数中加入所述应用功能管理代码,使得所述目标进程在执行启动函数时执行所述应用功能管理代码。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201710358291.5A CN108959061B (zh) | 2017-05-19 | 2017-05-19 | 应用功能管理方法、终端以及装置 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201710358291.5A CN108959061B (zh) | 2017-05-19 | 2017-05-19 | 应用功能管理方法、终端以及装置 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN108959061A true CN108959061A (zh) | 2018-12-07 |
CN108959061B CN108959061B (zh) | 2023-04-25 |
Family
ID=64462258
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201710358291.5A Active CN108959061B (zh) | 2017-05-19 | 2017-05-19 | 应用功能管理方法、终端以及装置 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN108959061B (zh) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN111159033A (zh) * | 2019-12-25 | 2020-05-15 | 口碑(上海)信息技术有限公司 | 一种软件测试方法及装置 |
Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20050240906A1 (en) * | 2004-04-22 | 2005-10-27 | Permeo Technologies, Inc. | System and method for remote application process control |
CN102855138A (zh) * | 2012-07-20 | 2013-01-02 | 腾讯科技(深圳)有限公司 | 一种api的拦截方法、装置及移动终端 |
CN104376256A (zh) * | 2014-12-02 | 2015-02-25 | 北京奇虎科技有限公司 | 应用程序进程孵化控制方法及装置 |
CN104834586A (zh) * | 2014-02-10 | 2015-08-12 | 腾讯科技(深圳)有限公司 | 安卓界面自动化测试方法、装置及系统 |
-
2017
- 2017-05-19 CN CN201710358291.5A patent/CN108959061B/zh active Active
Patent Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20050240906A1 (en) * | 2004-04-22 | 2005-10-27 | Permeo Technologies, Inc. | System and method for remote application process control |
CN102855138A (zh) * | 2012-07-20 | 2013-01-02 | 腾讯科技(深圳)有限公司 | 一种api的拦截方法、装置及移动终端 |
CN104834586A (zh) * | 2014-02-10 | 2015-08-12 | 腾讯科技(深圳)有限公司 | 安卓界面自动化测试方法、装置及系统 |
CN104376256A (zh) * | 2014-12-02 | 2015-02-25 | 北京奇虎科技有限公司 | 应用程序进程孵化控制方法及装置 |
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN111159033A (zh) * | 2019-12-25 | 2020-05-15 | 口碑(上海)信息技术有限公司 | 一种软件测试方法及装置 |
CN111159033B (zh) * | 2019-12-25 | 2023-07-04 | 口碑(上海)信息技术有限公司 | 一种软件测试方法及装置 |
Also Published As
Publication number | Publication date |
---|---|
CN108959061B (zh) | 2023-04-25 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN112162753B (zh) | 软件部署方法、装置、计算机设备和存储介质 | |
CN102567015B (zh) | 用于执行动态软件版本选择的方法和系统 | |
CN109739744B (zh) | 一种测试系统及方法 | |
KR20180019674A (ko) | 컨테이너들에서 고립된 애플리케이션들의 모니터링 | |
CN109032825B (zh) | 一种故障注入方法、装置及设备 | |
CN104375861A (zh) | 基于安卓平台的应用程序免安装运行的方法、装置及终端 | |
CN104376255A (zh) | 应用程序运行控制方法与装置 | |
CN105404524A (zh) | Java应用中的类加载隔离方法及装置 | |
CN104408367A (zh) | 应用程序配置方法与装置 | |
CN110389766B (zh) | HBase容器集群部署方法、系统、设备及计算机可读存储介质 | |
CN108733553A (zh) | 基于docker的测试装置的配置方法、装置和系统 | |
CN104239786A (zh) | 免root主动防御配置方法及装置 | |
CN105302563A (zh) | 移动应用服务的插件化方法及系统 | |
WO2017041499A1 (zh) | 一种软件升级方法、系统和计算机可读存储介质 | |
CN106557691A (zh) | 监控应用中的第三方sdk方法、装置和加固安装包的装置 | |
CN108363612A (zh) | 基于类装载器实现的j2ee模块热部署及调用信息统计方法 | |
WO2015120134A1 (en) | Method and system for linking to shared library | |
CN106406933B (zh) | 一种Tomcat集群一键自动部署方法 | |
CN104376268A (zh) | 应用隐藏控制方法及装置 | |
CN113867600A (zh) | 处理流式数据的开发方法、装置和计算机设备 | |
CN103761126B (zh) | 应用程序的升级方法和装置 | |
CN104484176A (zh) | 一种安卓系统窗口对象获取方法和装置 | |
CN108959061A (zh) | 应用功能管理方法、终端以及装置 | |
CN106325923A (zh) | 功能插件的管理方法及装置 | |
CN108289080A (zh) | 一种访问文件系统的方法、装置和系统 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant |