CN107391356A - 卡顿信息获取方法、装置及计算机可读存储介质 - Google Patents
卡顿信息获取方法、装置及计算机可读存储介质 Download PDFInfo
- Publication number
- CN107391356A CN107391356A CN201710619453.6A CN201710619453A CN107391356A CN 107391356 A CN107391356 A CN 107391356A CN 201710619453 A CN201710619453 A CN 201710619453A CN 107391356 A CN107391356 A CN 107391356A
- Authority
- CN
- China
- Prior art keywords
- interim card
- card information
- binary executable
- mobile terminal
- file
- 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/30—Monitoring
- G06F11/34—Recording or statistical evaluation of computer activity, e.g. of down time, of input/output operation ; Recording or statistical evaluation of user activity, e.g. usability assessment
- G06F11/3452—Performance evaluation by statistical analysis
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/30—Monitoring
- G06F11/3003—Monitoring arrangements specially adapted to the computing system or computing system component being monitored
- G06F11/3017—Monitoring arrangements specially adapted to the computing system or computing system component being monitored where the computing system is implementing multitasking
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- Computing Systems (AREA)
- Quality & Reliability (AREA)
- General Physics & Mathematics (AREA)
- Mathematical Physics (AREA)
- Life Sciences & Earth Sciences (AREA)
- Bioinformatics & Cheminformatics (AREA)
- Bioinformatics & Computational Biology (AREA)
- Evolutionary Biology (AREA)
- Probability & Statistics with Applications (AREA)
- Computer Hardware Design (AREA)
- Debugging And Monitoring (AREA)
Abstract
本公开是关于一种卡顿信息获取方法、装置及计算机可读存储介质,属于测试技术领域。所述方法包括:向移动终端发送二进制可执行文件,二进制可执行文件用于基于原生进程进行卡顿信息获取;向移动终端发送启动测试指令,启动测试指令用于指示移动终端运行二进制可执行文件;获取由移动终端统计的卡顿信息。本公开中用于统计卡顿信息的二进制可执行文件在操作***中以原生进程运行,其可以不***作***清除掉,可以一直存在和运行于操作***中,从而能够完整的统计到操作***在运行期间发生的卡顿信息,统计更加全面。并且统计卡顿信息的过程和调试工具守护进程解耦,避免了统计过程中由于调试工具守护进程堵塞、挂起等情况导致统计失败的缺陷。
Description
技术领域
本公开是关于测试技术领域,具体来说是关于一种卡顿信息获取方法、装置及计算机可读存储介质。
背景技术
卡顿是指移动终端出现画面停滞、声音间断等运行不畅的情况。为了衡量终端在运行应用时的卡顿情况,需要获取移动终端运行应用时的卡顿信息,并通过卡顿信息衡量卡顿情况。
获取卡顿信息的过程通常由控制终端和移动终端之间相互通信实现:具体来说,控制终端会安装调试工具,移动终端的操作***中预先创建了调试工具守护进程,当要获取移动终端在运行应用的过程中的卡顿信息时,移动终端要基于调试工具守护进程和调试工具建立连接,当控制终端获取到卡顿信息获取指令时,会指示调试工具守护进程获取卡顿信息,移动终端会运行调试工具守护进程,对运行应用时的卡顿情况进行统计,并通过该连接,将统计得到的卡顿信息输出给调试工具,由控制终端显示卡顿信息。
发明内容
为了解决相关技术中存在的问题,本公开提供了一种卡顿信息获取方法、装置及计算机可读存储介质。所述技术方案如下:
根据本公开实施例的第一方面,提供了一种卡顿信息获取方法,所述方法包括:
向移动终端发送二进制可执行文件,所述二进制可执行文件用于基于原生进程进行卡顿信息获取;
向所述移动终端发送启动测试指令,所述启动测试指令用于指示所述移动终端运行所述二进制可执行文件;
获取由所述移动终端统计的卡顿信息。
在一种可能的实现方式中,所述向移动终端发送二进制可执行文件之前,所述方法还包括:
获取待编译的源文件;
将所述源文件编译为二进制可执行文件,所述二进制可执行文件需要基于原生进程运行。
在另一种可能的实现方式中,所述向移动终端发送二进制可执行文件包括:
执行向所述移动终端发送文件的存储指令,所述存储指令包括所述二进制可执行文件的名称以及用于在所述移动终端中存储所述二进制可执行文件的指定地址,所述指定地址为/data/local/tmp文件夹。
在另一种可能的实现方式中,所述获取由所述移动终端统计的卡顿信息,包括:
执行从所述移动终端拉取文件的拉取指令,所述拉取指令用于指示从所述移动终端中的预设目标文件读取统计得到的卡顿信息。
在另一种可能的实现方式中,所述启动测试指令中携带预设周期和/或预设次数,所述预设周期用于指示所述移动终端每隔所述预设周期,执行一次所述运行所述二进制可执行文件的步骤,所述预设次数用于指示所述移动终端获取卡顿信息的次数。
在另一种可能的实现方式中,所述向移动终端发送二进制可执行文件之前,所述方法还包括:
获取测试指令,所述测试指令用于指示对所述移动终端进行测试。
根据本公开实施例的第二方面,提供了一种卡顿信息获取方法,所述方法包括:
接收控制终端发送的二进制可执行文件,所述二进制可执行文件用于基于原生进程进行卡顿信息获取;
接收所述控制终端发送的启动测试指令,所述启动测试指令用于指示所述移动终端运行所述二进制可执行文件;
运行所述二进制可执行文件,获取卡顿信息。
在一种可能的实现方式中,所述接收控制终端发送的二进制可执行文件包括:
接收所述二进制可执行文件,并存储在指定地址,所述指定地址为/data/local/tmp文件夹。
在另一种可能的实现方式中,所述接收控制终端发送的二进制可执行文件之后,所述方法还包括:
当确定调试工具守护进程具有在所述指定地址中创建文件的权限时,通过所述调试工具守护进程,执行所述接收所述二进制可执行文件,并存储在指定地址的步骤。
在另一种可能的实现方式中,所述运行所述二进制可执行文件,获取卡顿信息,包括:
当确定指定进程具有启动所述指定地址中的文件的权限时,通过所述指定进程启动所述二进制可执行文件;
创建运行所述二进制可执行文件的原生进程;
通过所述原生进程,获取卡顿信息。
在另一种可能的实现方式中,所述运行所述二进制可执行文件,获取卡顿信息之后,所述方法还包括:
将所述卡顿信息存储于所述移动终端中的预设目标文件;
基于所述控制终端的拉取请求,将所述预设目标文件中的卡顿信息发送给所述控制终端。
在另一种可能的实现方式中,所述启动测试指令携带预设周期,所述运行所述二进制可执行文件,获取卡顿信息,包括:
每隔所述预设周期,执行一次所述运行所述二进制可执行文件,获取卡顿信息的步骤;和/或,
所述启动测试指令携带预设次数,所述运行所述二进制可执行文件,获取卡顿信息,包括:
运行所述二进制可执行文件,获取卡顿信息,直到获取卡顿信息的次数达到所述预设次数。
在另一种可能的实现方式中,所述运行所述二进制可执行文件,获取卡顿信息,包括:
基于所述原生进程运行所述二进制可执行文件,调用绘图统计服务的输出方法获取并输出所述卡顿信息。
根据本公开实施例的第三方面,提供了一种卡顿信息获取装置,所述装置包括:
发送模块,用于向移动终端发送二进制可执行文件,所述二进制可执行文件用于基于原生进程进行卡顿信息获取;
所述发送模块,还用于向所述移动终端发送启动测试指令,所述启动测试指令用于指示所述移动终端运行所述二进制可执行文件;
获取模块,还用于获取由所述移动终端统计的卡顿信息。
在一种可能的实现方式中,所述获取模块,还用于获取待编译的源文件;
所述装置还包括:编译模块,用于将所述源文件编译为二进制可执行文件,所述二进制可执行文件需要基于原生进程运行。
在另一种可能的实现方式中,所述发送模块,还用于执行向所述移动终端发送文件的存储指令,所述存储指令包括所述二进制可执行文件的名称以及用于在所述移动终端中存储所述二进制可执行文件的指定地址,所述指定地址为/data/local/tmp文件夹。
在另一种可能的实现方式中,所述获取模块,用于执行从所述移动终端拉取文件的拉取指令,所述拉取指令用于指示从所述移动终端中的预设目标文件读取统计得到的卡顿信息。
在另一种可能的实现方式中,所述启动测试指令中携带预设周期和/或预设次数,所述预设周期用于指示所述移动终端每隔所述预设周期,执行一次所述运行所述二进制可执行文件的步骤,所述预设次数用于指示所述移动终端获取卡顿信息的次数。
在另一种可能的实现方式中,所述获取模块,还用于获取测试指令,所述测试指令用于指示对所述移动终端进行测试。
根据本公开实施例的第四方面,提供了一种卡顿信息获取装置,所述装置包括:
接收模块,用于接收控制终端发送的二进制可执行文件,所述二进制可执行文件用于基于原生进程进行卡顿信息获取;
所述接收模块,还用于接收所述控制终端发送的启动测试指令,所述启动测试指令用于指示所述移动终端运行所述二进制可执行文件;
获取模块,用于运行所述二进制可执行文件,获取卡顿信息。
在一种可能的实现方式中,所述接收模块,还用于接收所述二进制可执行文件,并存储在指定地址,所述指定地址为/data/local/tmp文件夹。
在另一种可能的实现方式中,所述接收模块,还用于当确定调试工具守护进程具有在所述指定地址中创建文件的权限时,通过所述调试工具守护进程,执行所述接收所述二进制可执行文件,并存储在指定地址的步骤。
在另一种可能的实现方式中,所述获取模块,包括:
启动子模块,用于当确定指定进程具有启动所述指定地址中的文件的权限时,通过所述指定进程启动所述二进制可执行文件;
创建子模块,用于创建运行所述二进制可执行文件的原生进程;
获取子模块,用于通过所述原生进程,获取卡顿信息。
在另一种可能的实现方式中,所述装置还包括:存储模块,用于将所述卡顿信息存储于所述移动终端中的预设目标文件;
所述发送模块,用于基于所述控制终端的拉取请求,将所述预设目标文件中的卡顿信息发送给所述控制终端。
在另一种可能的实现方式中,所述启动测试指令携带预设周期,所述获取模块,用于每隔所述预设周期,执行一次所述运行所述二进制可执行文件,获取卡顿信息的步骤;和/或,
所述启动测试指令携带预设次数,所述获取模块,用于运行所述二进制可执行文件,获取卡顿信息,直到获取卡顿信息的次数达到所述预设次数。
在另一种可能的实现方式中,所述获取模块,用于基于所述原生进程运行所述二进制可执行文件,调用绘图统计服务的输出方法获取并输出所述卡顿信息。
根据本公开实施例的第五方面,提供了一种卡顿信息获取装置,所述装置包括:
处理器;
用于存储处理器可执行指令的存储器;
其中,所述处理器被配置为:
向移动终端发送二进制可执行文件,所述二进制可执行文件用于基于原生进程进行卡顿信息获取;
向所述移动终端发送启动测试指令,所述启动测试指令用于指示所述移动终端运行所述二进制可执行文件;
获取由所述移动终端统计的卡顿信息。
根据本公开实施例的第六方面,提供了一种卡顿信息获取装置,所述装置包括:
处理器;
用于存储处理器可执行指令的存储器;
其中,所述处理器被配置为:
接收控制终端发送的二进制可执行文件,所述二进制可执行文件用于基于原生进程进行卡顿信息获取;
接收所述控制终端发送的启动测试指令,所述启动测试指令用于指示所述移动终端运行所述二进制可执行文件;
运行所述二进制可执行文件,获取卡顿信息。
根据本公开实施例的第七方面,提供了一种计算机可读存储介质,其上存储有计算机程序,其特征在于,所述程序被处理器执行时实现第一方面所述方法的步骤。
根据本公开实施例的第八方面,提供了一种计算机可读存储介质,其上存储有计算机程序,其特征在于,所述程序被处理器执行时实现第二方面所述方法的步骤。
本公开的实施例提供的技术方案可以包括以下有益效果:
本实施例提供的方法、装置及计算机可读存储介质,控制终端向移动终端发送二进制可执行文件,移动终端可以通过原生进程运行该二进制可执行文件,执行统计卡顿信息的过程,由于用于统计卡顿信息的二进制可执行文件在操作***中以原生进程运行,其可以不***作***清除掉,可以一直存在和运行于操作***中,从而能够完整的统计到操作***在运行期间发生的卡顿信息,统计更加全面。并且统计卡顿信息的过程和调试工具守护进程解耦,即无需依赖调试工具守护进程,避免了统计过程中由于调试工具守护进程堵塞、调试工具守护进程挂起等情况导致统计失败的缺陷,提高了获取卡顿信息的效率。
应当理解的是,以上的一般描述和后文的细节描述仅是示例性的,并不能限制本公开。
附图说明
此处的附图被并入说明书中并构成本说明书的一部分,示出了符合本公开的实施例,并与说明书一起用于解释本公开的原理。
图1是根据一示例性实施例示出的一种实施环境的示意图;
图2是根据一示例性实施例示出的一种卡顿信息获取方法的流程图;
图3是根据一示例性实施例示出的一种卡顿信息获取方法的流程图;
图4A是根据一示例性实施例示出的一种卡顿信息获取方法的流程图;
图4B是根据一示例性实施例示出的一种卡顿信息获取方法的流程图;
图5A是根据一示例性实施例示出的一种卡顿信息获取装置的框图;
图5B是根据一示例性实施例示出的一种卡顿信息获取装置的框图;
图6A是根据一示例性实施例示出的一种卡顿信息获取装置的框图;
图6B是根据一示例性实施例示出的一种卡顿信息获取装置的框图;
图6C是根据一示例性实施例示出的一种卡顿信息获取装置的框图;
图7是根据一示例性实施例示出的一种卡顿信息获取装置的框图。
具体实施方式
为使本公开的目的、技术方案和优点更加清楚明白,下面结合实施方式和附图,对本公开做进一步详细说明。在此,本公开的示意性实施方式及其说明用于解释本公开,但并不作为对本公开的限定。
图1是根据一示例性实施例示出的一种实施环境的示意图,如图1所示,该实施环境包括控制终端101和移动终端102,该控制终端101和移动终端102可以通过建立连接的方式进行通信。
该连接可以为有线连接或者无线连接,该有线连接可以为USB(UniversalSerialBus,通用串行总线)连接,该无线连接可以为无线保真(Wireless Fidelity,WI-FI)连接、蓝牙、数据网络连接等。
该控制终端101用于对移动终端102进行测试,以获取移动终端102的操作***在运行期间的卡顿信息。进一步地,该移动终端102可以为安装开放式操作***的移动终端,相应地,获取的卡顿信息为移动终端102在开放式操作***的控制下,运行应用的卡顿信息,该开放式操作***可以为安卓(Android)操作***。
其中,该控制终端101可以为台式电脑、笔记本电脑等,移动终端102可以为手机、平板电脑等。
图2是根据一示例性实施例示出的一种卡顿信息获取方法的流程图。该实施例的执行主体为控制终端,参见图2,该方法包括:
在步骤201中,向移动终端发送二进制可执行文件,该二进制可执行文件用于基于原生进程进行卡顿信息获取。
在步骤202中,向该移动终端发送启动测试指令,该启动测试指令用于指示该移动终端运行该二进制可执行文件。
在步骤203中,获取由该移动终端统计的卡顿信息。
本公开实施例提供的方法,控制终端向移动终端发送二进制可执行文件,移动终端可以通过原生进程运行该二进制可执行文件,执行统计卡顿信息的过程,由于用于统计卡顿信息的二进制可执行文件在操作***中以原生进程运行,其可以不***作***清除掉,可以一直存在和运行于操作***中,从而能够完整的统计到操作***在运行期间发生的卡顿信息,统计更加全面。并且统计卡顿信息的过程和调试工具守护进程解耦,即无需依赖调试工具守护进程,避免了统计过程中由于调试工具守护进程堵塞、调试工具守护进程挂起等情况导致统计失败的缺陷,提高了获取卡顿信息的效率。
在一种可能的实现方式中,该向移动终端发送二进制可执行文件之前,该方法还包括:
获取待编译的源文件;
将该源文件编译为二进制可执行文件,该二进制可执行文件需要基于原生进程运行。
在另一种可能的实现方式中,该向移动终端发送二进制可执行文件包括:
执行向该移动终端发送文件的存储指令,该存储指令包括该二进制可执行文件的名称以及用于在移动终端中存储该二进制可执行文件的指定地址,该指定地址为/data/local/tmp文件夹。
在另一种可能的实现方式中,该获取由该移动终端统计的卡顿信息,包括:
执行从该移动终端拉取文件的拉取指令,该拉取指令用于指示从该移动终端中的预设目标文件读取统计得到的卡顿信息。
在另一种可能的实现方式中,该启动测试指令中携带预设周期和/或预设次数,该预设周期用于指示该移动终端每隔该预设周期,执行一次该运行该二进制可执行文件的步骤,该预设次数用于指示该移动终端获取卡顿信息的次数。
在另一种可能的实现方式中,该向移动终端发送二进制可执行文件之前,该方法还包括:
获取测试指令,该测试指令用于指示对该移动终端进行测试。
图3是根据一示例性实施例示出的一种卡顿信息获取方法的流程图。该实施例的执行主体为移动终端,参见图3,该方法包括:
在步骤301中,接收控制终端发送的二进制可执行文件,该二进制可执行文件用于基于原生进程进行卡顿信息获取。
在步骤302中,接收该控制终端发送的启动测试指令,该启动测试指令用于指示该移动终端运行该二进制可执行文件。
在步骤303中,运行该二进制可执行文件,获取卡顿信息。
本公开实施例提供的方法,控制终端向移动终端发送二进制可执行文件,移动终端可以通过原生进程运行该二进制可执行文件,执行统计卡顿信息的过程,由于用于统计卡顿信息的二进制可执行文件在操作***中以原生进程运行,其可以不***作***清除掉,可以一直存在和运行于操作***中,从而能够完整的统计到操作***在运行期间发生的卡顿信息,统计更加全面。并且统计卡顿信息的过程和调试工具守护进程解耦,即无需依赖调试工具守护进程,避免了统计过程中由于调试工具守护进程堵塞、调试工具守护进程挂起等情况导致统计失败的缺陷,提高了获取卡顿信息的效率。
在一种可能的实现方式中,该接收控制终端发送的二进制可执行文件包括:
接收该二进制可执行文件,并存储在指定地址,该指定地址为/data/local/tmp文件夹。
在另一种可能的实现方式中,该接收控制终端发送的二进制可执行文件之后,该方法还包括:
当确定调试工具守护进程具有在该指定地址中创建文件的权限时,通过该调试工具守护进程,执行该接收该二进制可执行文件,并存储在指定地址的步骤。
在另一种可能的实现方式中,该运行该二进制可执行文件,获取卡顿信息,包括:
当确定指定进程具有启动该指定地址中的文件的权限时,通过该指定进程启动该二进制可执行文件;
创建运行该二进制可执行文件的原生进程;
通过该原生进程,获取卡顿信息。
在另一种可能的实现方式中,该运行该二进制可执行文件,获取卡顿信息之后,该方法还包括:
将该卡顿信息存储于该移动终端中的预设目标文件;
基于该控制终端的拉取请求,将该预设目标文件中的卡顿信息发送给该控制终端。
在另一种可能的实现方式中,该启动测试指令携带预设周期,该运行该二进制可执行文件,获取卡顿信息,包括:
每隔该预设周期,执行一次该运行该二进制可执行文件,获取卡顿信息的步骤;和/或,
该启动测试指令携带预设次数,该运行该二进制可执行文件,获取卡顿信息,包括:
运行该二进制可执行文件,获取卡顿信息,直到获取卡顿信息的次数达到该预设次数。
在另一种可能的实现方式中,该运行该二进制可执行文件,获取卡顿信息,包括:
基于该原生进程运行该二进制可执行文件,调用绘图统计服务的输出方法获取并输出该卡顿信息。
相关技术提供的获取卡顿信息的方案中,移动终端会运行调试工具守护进程统计卡顿信息,并通过调试工具守护进程将卡顿信息输出给控制终端的调试工具,这种方案中卡顿信息的获取效率很低。
其原因在于,一方面,由于调试工具守护进程本身的代码存在固有缺陷,在统计过程中经常出现各种不可预料的问题,例如进程堵塞、进程挂起等情况,使得统计中断或者数据不准确。另一方面,随着移动终端操作***的多样化,经常出现移动终端操作***中的调试工具守护进程和控制终端的调试工具兼容性差的情况,导致移动终端和控制终端无法长时间进行通信。而移动终端在统计卡顿信息的过程中,调试工具守护进程并不会在移动终端本端存储已统计的卡顿信息,而是直接将卡顿信息输出给控制终端,一旦和测试工具失去通信,已统计的卡顿信息都将丢失。尤其是,在一次获取卡顿信息的过程中,移动终端需要定期多次统计卡顿信息时,通常统计时间会较长,这就更容易由于调试工具守护进程和调试工具之间的通信中断,导致统计卡顿信息的过程失败。
而本公开实施例提供了一种新的获取卡顿信息的方案,在该方案中,将获取卡顿信息过程所需的各个指令封装为一个二进制可执行文件,由移动终端通过原生进程运行该二进制可执行文件,完成获取卡顿信息的过程。该二进制可执行文件所包括的指令可以由测试人员自行编译,并可以兼容多种操作***,运行该二进制可执行文件的过程较为稳定,不容易出现进程阻塞和进程挂起的情况。另外,移动终端在统计过程中,当得到卡顿信息后会直接存储于本端,而无需实时地向控制终端发送卡顿信息,也就无需实时地和控制终端保持连接,不会由于在统计过程中和控制终端连接断开导致已统计的卡顿信息丢失。
本公开实施例可以应用于统计移动终端运行应用时的卡顿信息的场景,在该场景中,由控制终端指示移动终端获取运行应用时的卡顿信息,并获取移动终端统计的卡顿信息。该卡顿信息可以反映移动终端安装的某一第三方应用的卡顿情况,则测试人员可以根据卡顿信息分析该第三方应用的性能,以便对第三方应用进行改进。另外,卡顿信息也可以反映移动终端的***应用的卡顿情况,则测试人员可以根据卡顿信息分析该***应用的性能,以便对移动终端的操作***进行改进。
图4A是根据一示例性实施例示出的一种卡顿信息获取方法的流程图。该实施例的交互主体包括控制终端和移动终端,参见图4A,该方法包括:
在步骤401中,控制终端编译二进制可执行文件。
由于后续过程中移动终端要运行二进制可执行文件来统计卡顿信息,为了得到该二进制可执行文件,本步骤中采用控制终端对源文件进行编译,以得到二进制可执行文件。其中,本步骤可以包括以下步骤4011-4012:
4011、获取待编译的源文件。
控制终端可以安装开发工具,该开发工具用于编写源文件。在运行开发工具的过程中,测试人员可以在控制终端上进行编写操作,开发工具会检测编写操作,得到编写的源文件。该开发工具可以为C++、C、java、Visual Basic等。当然,控制终端可以直接得到已经预先编写的源文件,例如获取其他终端发送的源文件,从服务器下载源文件,获取用户导入的源文件等。
4012、通过编译工具将源文件编译为二进制可执行文件。
实际应用中,从文件类型的角度来说,文件包括二进制可执行文件、apk文件、jar文件等,从进程类型的角度来说,进程包括原生(native)进程、安卓进程等。不同类型的文件会通过不同类型的进程运行,例如二进制可执行文件需要通过原生进程运行,apk文件安装后需要通过安卓进程运行。而安卓进程的优先级较低,在移动终端***内存不足时容易被杀死(kill)以释放***内存,原生进程的优先级较高,即使***内存不足时也不会被杀死。
考虑到这种情况,为了保证后续移动终端统计卡顿信息时,不会由于运行的进程被杀死而导致统计过程失败,本步骤中会将源文件编译为二进制可执行文件,则后续移动终端会通过原生进程进行卡顿信息获取。
其中,该编译工具用于编译源文件,可以为gcc(GNU Compiler Collection,GNU编译器套件)。编译二进制可执行文件的过程实际可以通过在编译工具中设置include$(BUILD_E7ECUTABLE)指令实现。以源文件的名称为main.cpp,二进制可执行文件的名称为graphicDump为例,编译过程可以为:在编译工具中配置一个Android.mk文件,在Android.mk文件中设置以下代码块,则编译工具会将源文件main.cpp编译为二进制可执行文件graphicDump。
LOCAL_SRC_FILES:=main.cpp;
LOCAL_MODULE:=graphicDum;
include$(BUILD_E7ECUTABLE);
需要说明的是,本步骤401仅为可选步骤,实际应用中,控制终端也可以直接获取已经编译的二进制可执行文件,例如获取其他终端发送的二进制可执行文件,从服务器下载二进制可执行文件,获取用户导入的二进制可执行文件等。
在步骤402中,控制终端获取测试指令。
在控制终端得到二进制可执行文件后,当测试人员想要测试移动终端时,可以在控制终端上触发测试指令,则控制终端会获取到测试指令,例如,控制终端可以检测输入的测试指令,或者显示测试界面,当检测到对测试界面中启动选项的确认操作时,获取到测试指令。其中,测试指令用于指示对移动终端进行测试。
需要说明的是,本步骤402仅为可选步骤,实际应用中,控制终端可以无需获取测试指令,而是直接执行下述步骤403。
在步骤403中,控制终端向移动终端发送二进制可执行文件。
控制终端和移动终端可以预先建立连接,控制终端可以通过该连接向移动终端发送二进制可执行文件。进一步地,控制终端可以执行向移动终端发送文件的存储指令,该存储指令携带二进制可执行文件的名称以及用于移动终端中存储该二进制可执行文件的指定地址,以便移动终端在指定地址中存储该二进制可执行文件。另外,该存储指令也可以携带二进制可执行文件的路径以及指定地址,该路径是指控制终端存储该二进制可执行文件的地址,该路径可以包括二进制可执行文件的名称。
其中,指定地址为/data/local/tmp文件夹,或者为移动终端中的其他地址,或者为默认地址。存储指令可以为adb push指令。以二进制可执行文件的名称为graphicDump为例,控制终端可以执行以下存储指令:
adb push graphicDump/data/local/tmp/graphicDump;
需要说明的第一点是,针对触发控制终端发送二进制可执行文件的过程,控制终端可以在运行脚本文件的过程中,当要执行存储指令时,确定要向移动终端发送二进制可执行文件,该脚本文件包括控制终端要完成测试移动终端过程所需的各个指令,控制终端可以依次读取每个指令,自动执行对应的操作。或者,控制终端可以当检测到用户输入的存储指令时,确定要向移动终端发送该二进制可执行文件。或者,控制终端可以显示测试界面,当检测到对测试界面中发送选项的确认操作时,确定要向移动终端发送该二进制可执行文件。
需要说明的第二点是,控制终端可以将该二进制可执行文件存储于默认存储地址中,要向移动终端发送二进制可执行文件时,复制该默认存储地址中的二进制可执行文件,并将所复制的二进制可执行文件发送给移动终端。
在步骤404中,当移动终端接收到控制终端发送的二进制可执行文件后,在指定地址中存储该二进制可执行文件。
本步骤404与上述步骤403对应。其中,如果控制终端执行了包括指定地址的存储指令,移动终端会在指定地址中存储二进制可执行文件。进一步地,移动终端可以启动调试工具守护进程,通过调试工具守护进程在指定地址中存储文件。
针对该指定地址,考虑到实际应用中,移动终端的操作***通常会对进程的各种权限进行严格地控制,即,当确定某进程具有执行某种操作的权限时,才会允许该进程执行该操作,否则会拒绝该进程执行该操作。而/data/local/tmp文件夹对于操作***来说是一个特殊的文件夹,该文件夹是谷歌为了便于开发人员对移动终端进行调试而为调试通道保留的一个文件夹,且赋予了该文件夹更多的权限。
结合该构思,为了保证调试工具守护进程能够成功在该指定地址中存储二进制可执行文件,不会产生由于不具有在指定地址创建文件的权限,***作***拒绝的情况,本实施例中将/data/local/tmp文件夹作为移动终端存储二进制可执行文件的指定地址,由于调试工具守护进程具有在/data/local/tmp文件夹创建文件的权限,因此调试工具守护进程可以/data/local/tmp文件夹存储二进制可执行文件。也即是,当移动终端确定调试工具守护进程具有在该指定地址中创建文件的权限时,通过该调试工具守护进程,将该二进制可执行文件存储于该指定地址。
关于移动终端确定调试工具守护进程具有在该指定地址中创建文件的权限的过程,移动终端可以存储各种进程的安全策略,安全策略指示对应进程所允许执行的各种操作。当调试工具守护进程要在指定地址中存储文件时,移动终端可以检查调试工具守护进程的安全策略,当安全策略指示允许调试工具守护进程在指定地址中创建文件时,确定调试工具守护进程具有在指定地址中创建文件的权限。其中,调试工具守护进程的安全策略可以为TE(Type Enforcement,安全策略)文件,可以存储在移动终端的system/sepolicy目录下。
以调试工具守护进程为adbd进程,调试工具守护进程的安全策略为adbd.te为例,当adbd进程要在/data/local/tmp文件夹中存储二进制可执行文件时,移动终端的操作***可以读取adbd.te,当在adbd.te中读取到以下代码时,确定adbd进程具有在/data/local/tmp文件夹中存储二进制可执行文件的权限。
#adb push/pull/data/local/tmp;
allow adbd shell_data_file:file create_file_perm;
需要说明的是,上述步骤403和步骤404实际可以由控制终端安装的调试工具以及移动终端运行的调试工具守护进程实现,即控制终端通过调试工具向移动终端发送二进制可执行文件,移动终端可以启动调试工具守护进程,在运行调试工具守护进程的过程中接收二进制可执行文件。其中,调试工具可以为adb(Android Debug Bridge,安卓调试桥),调试工具守护进程可以为adbd(adbdaemon,adb守护进程)。
在步骤405中,控制终端向该移动终端发送启动测试指令。
该启动测试指令用于指示该移动终端通过原生进程运行该二进制可执行文件,控制终端可以获取该启动测试指令,并向移动终端发送该启动测试指令。例如,控制终端可以用户输入的启动测试指令,或者当检测到对显示的测试界面的确认操作时,获取启动测试指令。其中,该启动测试指令可以为adb shell指令。
在一种可能的实现方式中,启动测试指令可以携带预设周期,该预设周期用于指示该移动终端每隔该预设周期,执行一次通过该原生进程运行该二进制可执行文件的步骤。该预设周期可以为测试人员设置的默认值,例如半小时。或者,该预设周期可以由用户手动地进行设置。
针对由用户设置预设周期的过程,用户可以在输入测试指令时,在测试指令中携带该预设周期,控制终端可以从测试指令中获取该预设周期,并在启动测试指令中携带该预设周期。或者,用户可以在输入启动测试指令时,在启动测试指令中携带该预设周期,控制终端可以直接将携带该预设周期的启动测试指令发送给移动终端。
另外,该启动测试指令还可以携带预设次数,该预设次数用于指示该移动终端获取该卡顿信息的次数。该预设次数可以为测试人员设置的默认值,例如为3次。或者,该预设次数可以由用户手动地进行设置,设置该预设次数的过程与设置预设周期的过程类似,在此不做赘述。
以启动测试指令为adb shell指令为例,启动测试指令的代码可以如下:
adb shell"./data/local/tmp/graphicDump-t$TIME-n$N"&;
其中,TIME为预设周期,N为预设次数。
在步骤406中,移动终端接收控制终端发送的启动测试指令,通过原生进程运行二进制可执行文件,获取卡顿信息。
实际应用中,移动终端接收到启动测试指令时,会先通过指定进程启动二进制可执行文件,创建原生进程,通过该原生进程运行该二进制可执行文件。
其中,该指定进程用于启动二进制可执行文件,例如为shell进程,原生进程用于运行该二进制可执行文件,可以用二进制可执行文件的标识作为该原生进程的标识。以启动测试指令为adb shell指令、二进制可执行文件为graphicDump为例,移动终端接收到adbshell指令时,会启动shell进程(指定进程),运行shell进程来启动graphicDump,再创建graphicDump进程,通过graphicDump进程运行graphicDump。其中,创建的graphicDump进程的类型为原生进程。
进一步地,移动终端可以当确定指定进程具有启动指定地址中的文件的权限时,再通过指定进程启动二进制可执行文件。例如,移动终端可以检查指定进程的安全策略,判断指定进程是否具有启动指定地址中文件的权限,当确定指定进程具有启动指定地址中文件的权限时,允许指定进程启动指定地址中的二进制可执行文件。其中,指定地址可以为/data/local/tmp文件夹,指定进程的安全策略可以为TE文件,可以存储在移动终端的system/sepolicy目录下。
以指定进程为shell进程,指定进程的安全策略为shell.te为例,当shell进程要启动/data/local/tmp文件夹中的二进制可执行文件时,移动终端的操作***可以读取shell.te,当在shell.te中读取到以下代码时,确定shell进程具有启动/data/local/tmp文件夹中文件的权限。
#Access/data/local/tmp;
allow shell shell_data_file:file r7_file_perms;
针对移动终端获取和输出卡顿信息的过程,移动终端可以调用绘图统计(graphicsstats)服务的输出(dump)方法,获取并输出卡顿信息。例如,移动终端可以统计本次开机到当前时间点之间,运行某个应用的过程中绘制的总帧数、卡顿的总帧数以及卡顿的总时长,作为卡顿信息。其中,该应用可以为***应用或者为第三方应用。
其中,当启动测试指令携带预设周期时,移动终端会每隔预设周期,通过该原生进程运行该二进制可执行文件,获取卡顿信息。例如预设周期为半小时,则原生进程会每隔半小时,读取一次二进制可执行文件,从而通过运行该二进制可执行文件获取卡顿信息。
当该启动测试指令携带预设次数时,移动终端会通过该原生进程运行该二进制可执行文件,获取卡顿信息,直到获取该卡顿信息的次数达到该预设次数。例如,预设次数为N,则原生进程会统计读取二进制可执行文件的次数,每当读取一次二进制可执行文件时,会将次数加上1,直到读取了N次二进制可执行文件,即统计了N次卡顿信息为止。
需要说明的是,移动终端可以将卡顿信息存储在预设目标文件中,该预设目标文件可以用于记录卡顿信息。例如,二进制可执行文件中可以包括输出指令,该输出指令指示存储卡顿信息的预设目标文件,例如携带预设目标文件的名称或者路径,以便移动终端在本端存储已统计的卡顿信息。
其中,可以直接将移动终端中已经预先建立的某个文件作为预设目标文件,输出指令可以指示在该预设目标文件中存储卡顿信息,则原生进程获取到输出指令后,统计到卡顿信息时,会直接将卡顿信息输出到该预设目标文件中。或者,输出指令可以指示移动终端为卡顿信息创建一个文件,将创建的文件作为预设目标文件并存储卡顿信息,则原生进程获取到输出指令后,会创建预设目标文件,并在统计到卡顿信息后将卡顿信息输出至该预设目标文件中。其中,该预设目标文件可以为一个文本文件,预设目标文件的路径可以为/sdcard/graphic。
在步骤407中,控制终端获取由该移动终端统计的卡顿信息。
控制终端可以执行拉取指令,从移动终端拉取该卡顿信息,该拉取指令用于指示从该移动终端中的预设目标文件读取统计得到的卡顿信息。其中,控制终端可以向移动终端发送拉取请求,移动终端可以基于该拉取请求,将预设目标文件中的卡顿信息发送给控制终端,或者,控制终端也可以通过其他方式,从移动终端的预设目标文件读取卡顿信息。另外,执行拉取指令的过程可以由控制终端通过调试工具实现。
该拉取指令可以携带预设目标文件的名称或路径,以拉取指令为adb pull指令,预设目标文件的路径为/sdcard/graphic为例,拉取指令可以如下:
adb-s$ANDROID_SERIAL pull/sdcard/graphic;
需要说明的第一点是,在移动终端统计卡顿信息的过程中,如果当前***内存小于内存阈值,会触发低内存管理机制(Low Memory Killer),该低内存管理机制用于杀死当前运行的进程,释放***内存,以保证当前的***内存重新达到该内存阈值。而该低内存管理机制不会杀死原生进程,也就不会影响到统计卡顿信息的过程。
这是由于,低内存管理机制会根据当前运行的每个进程的oom_adj确定要杀死的进程,某个进程oom_adj的值越大,表示进程的优先级越低,低内存管理机制越容易杀死该进程。其中,oom_adj的取值范围可以为[-17,15],当进程为可见进程时,oom_adj为0,进程为后台进程时,oom_adj为2。而原生进程的oom_adj为-17,值极小,因此低内存管理机制不会杀死原生进程。
需要说明的第二点是,本公开实施例中控制终端执行的步骤实际可以由控制终端运行脚本文件实现,该脚本文件包括测试指令、启动测试指令、存储指令和拉取指令,控制终端在读取脚本文件的过程中,会依次获取到测试指令、启动测试指令和拉取指令,并自动执行对应的步骤。
需要说明的第三点是,控制终端在获取到卡顿信息后,可以显示该卡顿信息,以便测试人员及时获知卡顿信息,根据卡顿信息进行开发分析。
需要说明的第四点是,本实施例以控制终端执行拉取指令并从移动终端中的预设目标文件中读取卡顿信息为例。在另一实施例中,移动终端可以将卡顿信息存储于预设目标文件后,将预设目标文件上传至指定服务器,控制终端可以从指定服务器下载该预设目标文件,读取得到卡顿信息。
参见图4B,其示出了一种本公开实施例的方法流程图,在一个示例性场景中,以控制终端为电脑,移动终端为手机为例,本公开实施例实际可以包括以下步骤:
(1)、测试人员在电脑上使用开发工具编写统计卡顿信息的源文件,再通过编译工具,在安卓源码环境下编译二进制可执行文件。
(2)、电脑执行adb push指令,手机将二进制可执行文件存储在/data/loca/tmp中。
(3)、电脑执行adb shell指令,手机启动二进制可执行文件。
(4)、手机启动该二进制可执行文件对应的原生进程,定时获取卡顿信息,并将卡顿信息输出至手机中的预设目标文件中。
(5)、电脑执行adb pull指令,从该预设目标文件中拉取卡顿信息,以供开发分析。
本公开实施例提供的方法,控制终端向移动终端发送二进制可执行文件,移动终端可以通过原生进程运行该二进制可执行文件,执行统计卡顿信息的过程,由于用于统计卡顿信息的二进制可执行文件在操作***中以原生进程运行,其可以不***作***清除掉,可以一直存在和运行于操作***中,从而能够完整的统计到操作***在运行期间发生的卡顿信息,统计更加全面。并且统计卡顿信息的过程和调试工具守护进程解耦,即无需依赖调试工具守护进程,避免了统计过程中由于调试工具守护进程堵塞、调试工具守护进程挂起等情况导致统计失败的缺陷,提高了获取卡顿信息的效率。
进一步地,移动终端在统计过程中会在本端存储已统计的卡顿信息,不会出现由于和控制终端通信中断导致已统计的卡顿信息丢失的情况,提高了获取卡顿信息的效率。
进一步地,将统计卡顿信息的过程所需的指令编译为一个二进制可执行文件,以使移动终端通过原生进程运行该二进制可执行文件,由于原生进程的优先级较高,即使移动终端的内存不足时,原生进程也不会被杀死,不会影响到统计卡顿信息的过程,使得统计卡顿信息的过程更为可靠。
进一步地,可以将/data/local/tmp文件夹作为存储二进制可执行文件的指定地址,由于调试工具守护进程具有在data/local/tmp文件夹中创建文件的权限,能够保证调试工具守护进程成功地存储二进制可执行文件。另外,由于指定进程具有启动data/local/tmp文件夹中的文件的权限,能够保证指定进程成功地启动二进制可执行文件,避免了由于进程不具有对应权限,导致无法执行对应操作的情况。
进一步地,移动终端可以每隔预设周期,获取卡顿信息,该预设周期可以由用户进行设置,从而满足用户定时获取卡顿信息的需求。另外,移动终端可以按照预设次数获取卡顿信息,该预设次数可以由用户进行设置,能够满足用户定量获取卡顿信息的需求,扩展了获取卡顿信息的方式,提高了获取卡顿信息的灵活性。
图5A是根据一示例性实施例示出的一种卡顿信息获取装置的框图。参见图5A,该装置包括发送模块501、获取模块502。
发送模块501,用于向移动终端发送二进制可执行文件,该二进制可执行文件用于基于原生进程进行卡顿信息获取;
该发送模块501,还用于向该移动终端发送启动测试指令,该启动测试指令用于指示该移动终端运行该二进制可执行文件;
获取模块502,还用于获取由该移动终端统计的卡顿信息。
本公开实施例提供的装置,控制终端向移动终端发送二进制可执行文件,移动终端可以通过原生进程运行该二进制可执行文件,执行统计卡顿信息的过程,由于用于统计卡顿信息的二进制可执行文件在操作***中以原生进程运行,其可以不***作***清除掉,可以一直存在和运行于操作***中,从而能够完整的统计到操作***在运行期间发生的卡顿信息,统计更加全面。并且统计卡顿信息的过程和调试工具守护进程解耦,即无需依赖调试工具守护进程,避免了统计过程中由于调试工具守护进程堵塞、调试工具守护进程挂起等情况导致统计失败的缺陷,提高了获取卡顿信息的效率。
在一种可能的实现方式中,该获取模块502,还用于获取待编译的源文件;
参见图5B,该装置还包括:编译模块503,用于将该源文件编译为二进制可执行文件,该二进制可执行文件需要基于原生进程运行
在另一种可能的实现方式中,该发送模块501,还用于执行向该移动终端发送文件的存储指令,该存储指令包括该二进制可执行文件的名称以及用于在移动终端中存储该二进制可执行文件的指定地址,该指定地址为/data/local/tmp文件夹。
在另一种可能的实现方式中,该获取模块502,用于执行从该移动终端拉取文件的拉取指令,该拉取指令用于指示从该移动终端中的预设目标文件读取统计得到的卡顿信息。
在另一种可能的实现方式中,该启动测试指令中携带预设周期和/或预设次数,该预设周期用于指示该移动终端每隔该预设周期,执行一次该运行该二进制可执行文件的步骤,该预设次数用于指示该移动终端获取卡顿信息的次数。
在另一种可能的实现方式中,获取模块502,还用于获取测试指令,该测试指令用于指示对移动终端进行测试。
图6A是根据一示例性实施例示出的一种卡顿信息获取装置的框图。参见图6A,该装置包括接收模块601,获取模块602。
接收模块601,用于接收控制终端发送的二进制可执行文件,该二进制可执行文件用于基于原生进程进行卡顿信息获取;
该接收模块601,还用于接收该控制终端发送的启动测试指令,该启动测试指令用于指示该移动终端运行该二进制可执行文件;
获取模块602,用于运行该二进制可执行文件,获取卡顿信息。
本公开实施例提供的装置,控制终端向移动终端发送二进制可执行文件,移动终端可以通过原生进程运行该二进制可执行文件,执行统计卡顿信息的过程,由于用于统计卡顿信息的二进制可执行文件在操作***中以原生进程运行,其可以不***作***清除掉,可以一直存在和运行于操作***中,从而能够完整的统计到操作***在运行期间发生的卡顿信息,统计更加全面。并且统计卡顿信息的过程和调试工具守护进程解耦,即无需依赖调试工具守护进程,避免了统计过程中由于调试工具守护进程堵塞、调试工具守护进程挂起等情况导致统计失败的缺陷,提高了获取卡顿信息的效率。
在一种可能的实现方式中,该接收模块601,还用于接收该二进制可执行文件,并存储在指定地址,该指定地址为/data/local/tmp文件夹。
在另一种可能的实现方式中,该接收模块601,还用于当确定调试工具守护进程具有在该指定地址中创建文件的权限时,通过该调试工具守护进程,执行该接收该二进制可执行文件,并存储在指定地址的步骤。
在另一种可能的实现方式中,参见图6B,该获取模块602,包括:
启动子模块,用于当确定指定进程具有启动该指定地址中的文件的权限时,通过该指定进程启动该二进制可执行文件;
创建子模块,用于创建运行该二进制可执行文件的原生进程;
获取子模块,用于通过该原生进程,获取卡顿信息。
在另一种可能的实现方式中,参见图6C,该装置还包括:存储模块603,用于将该卡顿信息存储于该移动终端中的预设目标文件;
发送模块604,用于基于该控制终端的拉取请求,将该预设目标文件中的卡顿信息发送给该控制终端。
在另一种可能的实现方式中,该启动测试指令携带预设周期,该获取模块602,用于每隔该预设周期,执行一次该运行该二进制可执行文件,获取卡顿信息的步骤;和/或,
该启动测试指令携带预设次数,该获取模块602,用于运行该二进制可执行文件,获取卡顿信息,直到获取卡顿信息的次数达到该预设次数。
在另一种可能的实现方式中,该获取模块602,用于基于该原生进程运行该二进制可执行文件,调用绘图统计服务的输出方法获取并输出该卡顿信息。
上述所有可选技术方案,可以采用任意结合形成本公开的可选实施例,在此不再一一赘述。
关于上述实施例中的装置,其中各个模块执行操作的具体方式已经在有关该方法的实施例中进行了详细描述,此处将不做详细阐述说明。
需要说明的是:上述实施例提供的卡顿信息获取装置在获取卡顿信息时,仅以上述各功能模块的划分进行举例说明,实际应用中,可以根据需要而将上述功能分配由不同的功能模块完成,即将控制终端与移动终端的内部结构划分成不同的功能模块,以完成以上描述的全部或者部分功能。另外,上述实施例提供的卡顿信息获取装置与卡顿信息获取方法实施例属于同一构思,其具体实现过程详见方法实施例,这里不再赘述。
图7是根据一示例性实施例示出的一种卡顿信息获取装置700的框图。例如,装置700可以是移动电话,计算机,数字广播装置,消息收发设备,游戏控制台,平板设备,医疗设备,健身设备,个人数字助理等。
参照图7,装置700可以包括以下一个或多个组件:处理组件702,存储器704,电源组件706,多媒体组件708,音频组件710,输入/输出(I/O)的接口712,传感器组件714,以及通信组件716。
处理组件702通常控制装置700的整体操作,诸如与显示,电话呼叫,数据通信,相机操作和记录操作相关联的操作。处理组件702可以包括一个或多个处理器720来执行指令,以完成上述的方法的全部或部分步骤。此外,处理组件702可以包括一个或多个模块,便于处理组件702和其他组件之间的交互。例如,处理组件702可以包括多媒体模块,以方便多媒体组件708和处理组件702之间的交互。
存储器704被配置为存储各种类型的数据以支持在装置700的操作。这些数据的示例包括用于在装置700上操作的任何应用程序或方法的指令,联系人数据,电话簿数据,消息,图片,视频等。存储器704可以由任何类型的易失性或非易失性存储设备或者它们的组合实现,如静态随机存取存储器(SRAM),电可擦除可编程只读存储器(EEPROM),可擦除可编程只读存储器(EPROM),可编程只读存储器(PROM),只读存储器(ROM),磁存储器,快闪存储器,磁盘或光盘。
电源组件706为装置700的各种组件提供电力。电源组件706可以包括电源管理***,一个或多个电源,及其他与为装置700生成、管理和分配电力相关联的组件。
多媒体组件708包括在所述装置700和用户之间的提供一个输出接口的屏幕。在一些实施例中,屏幕可以包括液晶显示器(LCD)和触摸面板(TP)。如果屏幕包括触摸面板,屏幕可以被实现为触摸屏,以接收来自用户的输入信号。触摸面板包括一个或多个触摸传感器以感测触摸、滑动和触摸面板上的手势。所述触摸传感器可以不仅感测触摸或滑动动作的边界,而且还检测与所述触摸或滑动操作相关的持续时间和压力。在一些实施例中,多媒体组件708包括一个前置摄像头和/或后置摄像头。当装置700处于操作模式,如拍摄模式或视频模式时,前置摄像头和/或后置摄像头可以接收外部的多媒体数据。每个前置摄像头和后置摄像头可以是一个固定的光学透镜***或具有焦距和光学变焦能力。
音频组件710被配置为输出和/或输入音频信号。例如,音频组件710包括一个麦克风(MIC),当装置700处于操作模式,如呼叫模式、记录模式和语音识别模式时,麦克风被配置为接收外部音频信号。所接收的音频信号可以被进一步存储在存储器704或经由通信组件716发送。在一些实施例中,音频组件710还包括一个扬声器,用于输出音频信号。
I/O接口712为处理组件702和***接口模块之间提供接口,上述***接口模块可以是键盘,点击轮,按钮等。这些按钮可包括但不限于:主页按钮、音量按钮、启动按钮和锁定按钮。
传感器组件714包括一个或多个传感器,用于为装置700提供各个方面的状态评估。例如,传感器组件714可以检测到装置700的打开/关闭状态,组件的相对定位,例如所述组件为装置700的显示器和小键盘,传感器组件714还可以检测装置700或装置700一个组件的位置改变,用户与装置700接触的存在或不存在,装置700方位或加速/减速和装置700的温度变化。传感器组件714可以包括接近传感器,被配置用来在没有任何的物理接触时检测附近物体的存在。传感器组件714还可以包括光传感器,如CMOS或CCD图像传感器,用于在成像应用中使用。在一些实施例中,该传感器组件714还可以包括加速度传感器,陀螺仪传感器,磁传感器,压力传感器或温度传感器。
通信组件716被配置为便于装置700和其他设备之间有线或无线方式的通信。装置700可以接入基于通信标准的无线网络,如WiFi,2G或3G,或它们的组合。在一个示例性实施例中,通信组件716经由广播信道接收来自外部广播管理***的广播信号或广播相关信息。在一个示例性实施例中,所述通信组件716还包括近场通信(NFC)模块,以促进短程通信。例如,在NFC模块可基于射频识别(RFID)技术,红外数据协会(IrDA)技术,超宽带(UWB)技术,蓝牙(BT)技术和其他技术来实现。
在示例性实施例中,装置700可以被一个或多个应用专用集成电路(ASIC)、数字信号处理器(DSP)、数字信号处理设备(DSPD)、可编程逻辑器件(PLD)、现场可编程门阵列(FPGA)、控制器、微控制器、微处理器或其他电子元件实现,用于执行上述控制终端或移动终端所执行的卡顿信息获取方法。
在示例性实施例中,还提供了一种包括指令的计算机可读存储介质,例如包括指令的存储器704,上述指令可由装置700的处理器720执行以完成上述方法。例如,所述计算机可读存储介质可以是ROM、随机存取存储器(RAM)、CD-ROM、磁带、软盘和光数据存储设备等。
本公开实施例还提供了一种计算机可读存储介质,其上存储有计算机程序,程序被处理器执行时实现上述实施例中控制终端所执行的卡顿信息获取方法。
本公开实施例还提供了另一种计算机可读存储介质,其上存储有计算机程序,程序被处理器执行时实现上述实施例中移动终端所执行的卡顿信息获取方法。
本领域技术人员在考虑说明书及实践这里公开的发明后,将容易想到本公开的其它实施方案。本申请旨在涵盖本公开的任何变型、用途或者适应性变化,这些变型、用途或者适应性变化遵循本公开的一般性原理并包括本公开未公开的本技术领域中的公知常识或惯用技术手段。说明书和实施例仅被视为示例性的,本公开的真正范围和精神由下面的权利要求指出。
应当理解的是,本公开并不局限于上面已经描述并在附图中示出的精确结构,并且可以在不脱离其范围进行各种修改和改变。本公开的范围仅由所附的权利要求来限制。
Claims (30)
1.一种卡顿信息获取方法,其特征在于,所述方法包括:
向移动终端发送二进制可执行文件,所述二进制可执行文件用于基于原生进程进行卡顿信息获取;
向所述移动终端发送启动测试指令,所述启动测试指令用于指示所述移动终端运行所述二进制可执行文件;
获取由所述移动终端统计的卡顿信息。
2.根据权利要求1所述的方法,其特征在于,所述向移动终端发送二进制可执行文件之前,所述方法还包括:
获取待编译的源文件;
将所述源文件编译为二进制可执行文件,所述二进制可执行文件需要基于原生进程运行。
3.根据权利要求1所述的方法,其特征在于,所述向移动终端发送二进制可执行文件,包括:
执行向所述移动终端发送文件的存储指令,所述存储指令包括所述二进制可执行文件的名称以及用于在所述移动终端中存储所述二进制可执行文件的指定地址,所述指定地址为/data/local/tmp文件夹。
4.根据权利要求1所述的方法,其特征在于,所述获取由所述移动终端统计的卡顿信息,包括:
执行从所述移动终端拉取文件的拉取指令,所述拉取指令用于指示从所述移动终端中的预设目标文件读取统计得到的卡顿信息。
5.根据权利要求1所述的方法,其特征在于,所述启动测试指令中携带预设周期和/或预设次数,所述预设周期用于指示所述移动终端每隔所述预设周期,执行一次所述运行所述二进制可执行文件的步骤,所述预设次数用于指示所述移动终端获取卡顿信息的次数。
6.根据权利要求1所述的方法,其特征在于,所述向移动终端发送二进制可执行文件之前,所述方法还包括:
获取测试指令,所述测试指令用于指示对所述移动终端进行测试。
7.一种卡顿信息获取方法,其特征在于,所述方法包括:
接收控制终端发送的二进制可执行文件,所述二进制可执行文件用于基于原生进程进行卡顿信息获取;
接收所述控制终端发送的启动测试指令,所述启动测试指令用于指示所述移动终端运行所述二进制可执行文件;
运行所述二进制可执行文件,获取卡顿信息。
8.根据权利要求7所述的方法,其特征在于,所述接收控制终端发送的二进制可执行文件,包括:
接收所述二进制可执行文件,并存储在指定地址,所述指定地址为/data/local/tmp文件夹。
9.根据权利要求8所述的方法,其特征在于,所述接收控制终端发送的二进制可执行文件之后,所述方法还包括:
当确定调试工具守护进程具有在所述指定地址中创建文件的权限时,通过所述调试工具守护进程,执行所述接收所述二进制可执行文件,并存储在指定地址的步骤。
10.根据权利要求8所述的方法,其特征在于,所述运行所述二进制可执行文件,获取卡顿信息,包括:
当确定指定进程具有启动所述指定地址中的文件的权限时,通过所述指定进程启动所述二进制可执行文件;
创建运行所述二进制可执行文件的原生进程;
通过所述原生进程,获取卡顿信息。
11.根据权利要求8所述的方法,其特征在于,所述运行所述二进制可执行文件,获取卡顿信息之后,所述方法还包括:
将所述卡顿信息存储于所述移动终端中的预设目标文件;
基于所述控制终端的拉取请求,将所述预设目标文件中的卡顿信息发送给所述控制终端。
12.根据权利要求7所述的方法,其特征在于,所述启动测试指令携带预设周期,所述运行所述二进制可执行文件,获取卡顿信息,包括:
每隔所述预设周期,执行一次所述运行所述二进制可执行文件,获取卡顿信息的步骤;和/或,
所述启动测试指令携带预设次数,所述运行所述二进制可执行文件,获取卡顿信息,包括:
运行所述二进制可执行文件,获取卡顿信息,直到获取卡顿信息的次数达到所述预设次数。
13.根据权利要求7所述的方法,其特征在于,所述运行所述二进制可执行文件,获取卡顿信息,包括:
运行所述二进制可执行文件,调用绘图统计服务的输出方法,获取并输出所述卡顿信息。
14.一种卡顿信息获取装置,其特征在于,所述装置包括:
发送模块,用于向移动终端发送二进制可执行文件,所述二进制可执行文件用于基于原生进程进行卡顿信息获取;
所述发送模块,还用于向所述移动终端发送启动测试指令,所述启动测试指令用于指示所述移动终端运行所述二进制可执行文件;
获取模块,还用于获取由所述移动终端统计的卡顿信息。
15.根据权利要求14所述的装置,其特征在于,
所述获取模块,还用于获取待编译的源文件;
所述装置还包括:编译模块,用于将所述源文件编译为二进制可执行文件,所述二进制可执行文件需要基于原生进程运行。
16.根据权利要求14所述的装置,其特征在于,所述发送模块,还用于执行向所述移动终端发送文件的存储指令,所述存储指令包括所述二进制可执行文件的名称以及用于在所述移动终端中存储所述二进制可执行文件的指定地址,所述指定地址为/data/local/tmp文件夹。
17.根据权利要求14所述的装置,其特征在于,所述获取模块,用于执行从所述移动终端拉取文件的拉取指令,所述拉取指令用于指示从所述移动终端中的预设目标文件读取统计得到的卡顿信息。
18.根据权利要求14所述的装置,其特征在于,所述启动测试指令中携带预设周期和/或预设次数,所述预设周期用于指示所述移动终端每隔所述预设周期,执行一次所述运行所述二进制可执行文件的步骤,所述预设次数用于指示所述移动终端获取卡顿信息的次数。
19.根据权利要求14所述的装置,其特征在于,所述获取模块,还用于获取测试指令,所述测试指令用于指示对所述移动终端进行测试。
20.一种卡顿信息获取装置,其特征在于,所述装置包括:
接收模块,用于接收控制终端发送的二进制可执行文件,所述二进制可执行文件用于基于原生进程进行卡顿信息获取;
所述接收模块,还用于接收所述控制终端发送的启动测试指令,所述启动测试指令用于指示所述移动终端运行所述二进制可执行文件;
获取模块,用于运行所述二进制可执行文件,获取卡顿信息。
21.根据权利要求20所述的装置,其特征在于,所述接收模块,还用于接收所述二进制可执行文件,并存储在指定地址,所述指定地址为/data/local/tmp文件夹。
22.根据权利要求21所述的装置,其特征在于,所述接收模块,还用于当确定调试工具守护进程具有在所述指定地址中创建文件的权限时,通过所述调试工具守护进程,执行所述接收所述二进制可执行文件,并存储在指定地址的步骤。
23.根据权利要求21所述的装置,其特征在于,所述获取模块,包括:
启动子模块,用于当确定指定进程具有启动所述指定地址中的文件的权限时,通过所述指定进程启动所述二进制可执行文件;
创建子模块,用于创建运行所述二进制可执行文件的原生进程;
获取子模块,用于通过所述原生进程,获取卡顿信息。
24.根据权利要求21所述的装置,其特征在于,所述装置还包括:存储模块,用于将所述卡顿信息存储于所述移动终端中的预设目标文件;
发送模块,用于基于所述控制终端的拉取请求,将所述预设目标文件中的卡顿信息发送给所述控制终端。
25.根据权利要求20所述的装置,其特征在于,所述启动测试指令携带预设周期,所述获取模块,还用于每隔所述预设周期,执行一次所述运行所述二进制可执行文件,获取卡顿信息的步骤;和/或,
所述启动测试指令携带预设次数,所述获取模块,还用于运行所述二进制可执行文件,获取卡顿信息,直到获取卡顿信息的次数达到所述预设次数。
26.根据权利要求20所述的装置,其特征在于,所述获取模块,还用于基于所述原生进程运行所述二进制可执行文件,调用绘图统计服务的输出方法,获取并输出所述卡顿信息。
27.一种卡顿信息获取装置,其特征在于,包括:
处理器;
用于存储处理器可执行指令的存储器;
其中,所述处理器被配置为:
向移动终端发送二进制可执行文件,所述二进制可执行文件用于基于原生进程进行卡顿信息获取;
向所述移动终端发送启动测试指令,所述启动测试指令用于指示所述移动终端运行所述二进制可执行文件;
获取由所述移动终端统计的卡顿信息。
28.一种卡顿信息获取装置,其特征在于,包括:
处理器;
用于存储处理器可执行指令的存储器;
其中,所述处理器被配置为:
接收控制终端发送的二进制可执行文件,所述二进制可执行文件用于基于原生进程进行卡顿信息获取;
接收所述控制终端发送的启动测试指令,所述启动测试指令用于指示所述移动终端运行所述二进制可执行文件;
运行所述二进制可执行文件,获取卡顿信息。
29.一种计算机可读存储介质,其上存储有计算机程序,其特征在于,所述程序被处理器执行时实现权利要求1至权利要求6任一项所述的卡顿信息获取方法的步骤。
30.一种计算机可读存储介质,其上存储有计算机程序,其特征在于,所述程序被处理器执行时实现权利要求7至权利要求13任一项所述的卡顿信息获取方法的步骤。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201710619453.6A CN107391356B (zh) | 2017-07-26 | 2017-07-26 | 卡顿信息获取方法、装置及计算机可读存储介质 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201710619453.6A CN107391356B (zh) | 2017-07-26 | 2017-07-26 | 卡顿信息获取方法、装置及计算机可读存储介质 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN107391356A true CN107391356A (zh) | 2017-11-24 |
CN107391356B CN107391356B (zh) | 2020-09-25 |
Family
ID=60341101
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201710619453.6A Active CN107391356B (zh) | 2017-07-26 | 2017-07-26 | 卡顿信息获取方法、装置及计算机可读存储介质 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN107391356B (zh) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN109189344A (zh) * | 2018-09-17 | 2019-01-11 | 郑州云海信息技术有限公司 | 一种逻辑卷管理方法、***、设备及计算机可读存储介质 |
Citations (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US7096388B2 (en) * | 2001-08-08 | 2006-08-22 | Avaya Technology Corp. | Fault tolerance software system with periodic external self-test failure detection |
CN102779257A (zh) * | 2012-06-28 | 2012-11-14 | 奇智软件(北京)有限公司 | 一种Android应用程序的安全检测方法及*** |
WO2013075014A1 (en) * | 2011-11-18 | 2013-05-23 | Unisys Corporation | Systems and methods for debugging just-in-time static translation in an emulated system |
CN104331357A (zh) * | 2014-10-10 | 2015-02-04 | 北京金山安全软件有限公司 | 应用程序异常的检测方法、装置和移动终端 |
CN104679631A (zh) * | 2015-03-23 | 2015-06-03 | 重庆蓝岸通讯技术有限公司 | 用于基于Android***的设备的测试方法及*** |
CN105243007A (zh) * | 2015-10-13 | 2016-01-13 | 广东欧珀移动通信有限公司 | 移动终端中内存的老化测试方法和装置 |
CN105589783A (zh) * | 2014-11-18 | 2016-05-18 | 广州市动景计算机科技有限公司 | 应用程序卡顿问题数据获取方法及装置 |
-
2017
- 2017-07-26 CN CN201710619453.6A patent/CN107391356B/zh active Active
Patent Citations (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US7096388B2 (en) * | 2001-08-08 | 2006-08-22 | Avaya Technology Corp. | Fault tolerance software system with periodic external self-test failure detection |
WO2013075014A1 (en) * | 2011-11-18 | 2013-05-23 | Unisys Corporation | Systems and methods for debugging just-in-time static translation in an emulated system |
CN102779257A (zh) * | 2012-06-28 | 2012-11-14 | 奇智软件(北京)有限公司 | 一种Android应用程序的安全检测方法及*** |
CN104331357A (zh) * | 2014-10-10 | 2015-02-04 | 北京金山安全软件有限公司 | 应用程序异常的检测方法、装置和移动终端 |
CN105589783A (zh) * | 2014-11-18 | 2016-05-18 | 广州市动景计算机科技有限公司 | 应用程序卡顿问题数据获取方法及装置 |
CN104679631A (zh) * | 2015-03-23 | 2015-06-03 | 重庆蓝岸通讯技术有限公司 | 用于基于Android***的设备的测试方法及*** |
CN105243007A (zh) * | 2015-10-13 | 2016-01-13 | 广东欧珀移动通信有限公司 | 移动终端中内存的老化测试方法和装置 |
Non-Patent Citations (1)
Title |
---|
GIMITE: "Run native executable in Android App", 《HTTP://GIMITE.NET/EN/INDEX.PHP?RUN%20NATIVE%20EXECUTABLE%20IN%20ANDROID%20APP#HDDD196E》 * |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN109189344A (zh) * | 2018-09-17 | 2019-01-11 | 郑州云海信息技术有限公司 | 一种逻辑卷管理方法、***、设备及计算机可读存储介质 |
Also Published As
Publication number | Publication date |
---|---|
CN107391356B (zh) | 2020-09-25 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN110262818A (zh) | Java代码热更新方法、装置、电子设备及存储介质 | |
CN107391218A (zh) | 编译方法及装置、电子设备和计算机可读存储介质 | |
CN107423106A (zh) | 支持多框架语法的方法和装置 | |
CN104020990B (zh) | 日期选择控件显示方法及装置 | |
CN107193678A (zh) | 卡顿原因确定方法、装置及存储介质 | |
CN106484593A (zh) | 日志处理方法、装置及电子设备 | |
CN107193653A (zh) | 带宽资源分配方法、装置及存储介质 | |
CN112241361A (zh) | 测试用例生成方法及装置、问题场景自动复现方法及装置 | |
CN107132949A (zh) | 抗干扰方法、装置、终端及存储介质 | |
CN106851695A (zh) | 一种测试网速的方法、装置和*** | |
CN107544802A (zh) | 设备识别方法及装置 | |
CN107622189A (zh) | 优化指纹解锁的方法和装置 | |
CN106528113A (zh) | 文件编译方法及装置 | |
CN106537288B (zh) | 控制应用自启动的方法及装置 | |
CN104932970A (zh) | 内存泄露监控方法和装置 | |
CN107562500A (zh) | 调试装置、方法及设备 | |
CN105607979A (zh) | 联网控制方法及装置 | |
CN107391356A (zh) | 卡顿信息获取方法、装置及计算机可读存储介质 | |
CN107506496A (zh) | 碎片整理方法、装置及计算机可读存储介质 | |
CN107070707A (zh) | 路由器初始化模式的确定方法和装置 | |
CN104951337B (zh) | 文件增量更新方法及装置 | |
CN107580142A (zh) | 一种执行处理的方法和装置 | |
CN107239236A (zh) | 数据写入方法及装置 | |
CN106339452A (zh) | 事件响应方法及装置 | |
CN104866350B (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 |