CN105808404A - 一种基于共享管道的Android设备的调试方法 - Google Patents
一种基于共享管道的Android设备的调试方法 Download PDFInfo
- Publication number
- CN105808404A CN105808404A CN201410853161.5A CN201410853161A CN105808404A CN 105808404 A CN105808404 A CN 105808404A CN 201410853161 A CN201410853161 A CN 201410853161A CN 105808404 A CN105808404 A CN 105808404A
- Authority
- CN
- China
- Prior art keywords
- order
- adb
- shared pipeline
- pipeline
- target program
- 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
Landscapes
- Debugging And Monitoring (AREA)
Abstract
本申请公开了一种基于共享管道的Android设备调试方法,包括:作为客户端的计算机上的目标程序服务启动后,建立用于执行ADB命令的共享管道;在目标程序运行过程中,利用共享管道执行ADB命令,在目标程序服务停止时,关闭建立的共享管道,并释放相应的资源。应用本申请,能够节省系统资源,避免多次执行adb命令后的反应速度变慢的问题,改善用户体验。
Description
技术领域
本申请涉及Android技术,特别涉及一种基于共享管道的Android设备的调试方法。
背景技术
AndroidDebugBridge,Android调试桥接器,简称adb。adb的主要功能有:运行设备的shell(命令行),管理模拟器或设备的端口映射,计算机和设备之间上传/下载文件,将本地apk软件安装至模拟器或android设备。ADB是一个客户端-服务器端程序,其中客户端是用来操作的计算机,服务器端是android设备。通过在客户端的计算机上运行ADB命令进行服务器端android设备的调试。
目前,在客户端的计算机上,通常使用java程序作为ADB命令的允许环境。具体地,在java程序中,可以通过Runtime.getRuntime()获取当前JVM的运行时环境,使用exec方法执行adb命令,创建一个进程process实例,exec方法实现对Android设备的adb命令输入,利用process实例的输入流得到adb命令执行后的反馈,adb命令执行完毕后,销毁process进程。Java程序通过Runtimeexec调用adb命令,建立了java程序进程与Android设备进程的管道,实现了对Android设备的控制和交互。
现有的处理方式中,当需要执行多个adb命令时,采用循环执行方式,其中每执行一个adb命令都将进行下列步骤:调用Runtime的exec方法,生成一个process进程,建立管道,执行adb命令,关闭管道,销毁process进程。
但是,通过上述处理方式进行android设备调试时,当连续多次执行adb命令(大于3000次)后,会出现android设备端资源占用高和反应速度变慢的问题,严重影响用户体验,最终可能导致adb不可用的现象,影响用户正常使用。
发明内容
本申请提供一种基于共享管道的Android设备的调试方法,能够避免多次执行adb命令后的反应速度变慢的问题,改善用户体验。
为实现上述目的,本申请采用如下的技术方案:
一种基于共享管道的Android设备的调试方法,包括:
作为客户端的计算机上的目标程序服务启动后,建立用于执行Android调试桥接器ADB命令的共享管道;
在所述目标程序运行过程中,利用所述共享管道执行ADB命令;
在所述目标程序服务停止时,关闭所述共享管道,并释放相应的资源。
较佳地,使用Runtimeexec建立所述共享管道。
较佳地,所述利用所述共享管道执行ADB命令包括:
监听要执行的ADB命令;
当监听到ADB命令时,将该ADB命令加入ADB命令队列中;
定时扫描ADB命令队列,按照加入所述队列的时间先后顺序,依次执行各个等待执行的ADB命令,当执行完任一命令后,将该命令从所述队列中移出。
较佳地,所述目标程序为JAVA程序或C++程序。
由上述技术方案可见,本申请中,作为客户端的计算机上的目标程序服务启动后,建立用于执行ADB命令的共享管道;在目标程序运行过程中,利用共享管道执行ADB命令,在目标程序服务停止时,关闭建立的共享管道,并释放相应的资源。通过上述处理,在执行ADB命令时,大大减少了建立管道和关闭管道的时间,从而节省系统资源,能够避免多次执行adb命令后的反应速度变慢的问题,改善用户体验。
附图说明
图1为现有调试Android设备时执行ADB命令的示意图;
图2为本申请中基于共享管道的调试Android设备的方法示意图;
图3为本申请基于共享管道的调试Android设备时执行ADB命令的示意图。
具体实施方式
为了使本申请的目的、技术手段和优点更加清楚明白,以下结合附图对本申请做进一步详细说明。
在现有的ADB命令执行方式中,尽管在执行命令这一步所需要的时间极少,但执行前管道的建立和执行结束后管道的关闭所需花费的时间远远大于执行命令所需要的时间,造成了80%以上的时间都浪费在管道的建立和关闭上,且管道的建立需要消耗较多的资源,正是由此,致使系统负荷增加,资源占用高,耗时并且效率低。
同时由于客户端程序不能控制服务器端Android设备在命令执行完成后资源的正常释放,致使连续执行多次adb命令后(大于3000次),出现Android设备端资源占用高,反应速度变慢,影响用户体验,最终导致adb不可用现象,影响用户正常使用。
基于上述原因,本申请给出一种Android设备的调试方法,如图2所示,在利用客户端程序调试Android设备的过程中,仅建立一条共享管道,用于执行本次调试过程中的各条ADB命令。
图3为本申请基于共享管道调试Android设备方法的流程示意图。其中,以客户端程序为JAVA程序为例进行说明。如图3所示,该方法包括:
步骤301,作为客户端的计算机上的目标程序服务启动,并建立用于执行ADB命令的共享管道。
客户端计算机上的java程序服务启动时,使用Runtimeexec调用建立管道,该管道在本次调试过程中,用于所有ADB命令的执行,称为共享管道。该共享管道一旦建立,直到java程序关闭时才会关闭管道。
步骤302,在目标程序运行过程中,利用共享管道执行所有ADB命令。
在目标程序运行过程中,为执行ADB命令,增加监听程序用于监听adb执行命令,当监听到执行命令时,将该执行命令添加到命令队列中等待执行。
具体地,使用命令队列管理多个adb命令,建立定时任务对adb命令队列进行扫描,若存在等待执行的命令队列且当前系统中无正在执行的命令,根据加入的先后顺序取出加入时间最早的命令,利用共享管道,输入执行该adb命令,完成执行后从命令队列中移除该命令。所有的adb命令都使用同一个共享管道。
步骤303,目标程序服务停止时,关闭共享管道,并释放相应的资源。
当java程序服务停止时,关闭启动时建立的唯一共享管道,释放相关资源结束处理。
至此,本申请中的Android设备调试方法流程结束。在该方法流程中,只建立了一个共享管道,直到服务停止时,才去关闭共享管道释放资源,解决了多次建立和释放管道导致的adb不可用问题,减少了多次建立和释放管道带来的资源占用多和执行效率低的问题。
上述图3所示的方法中,以java程序作为目标程序为例进行了说明,在实际应用中,目标程序不限于java程序,还可以采用C++等程序,本申请对此不做限定。
以上所述仅为本发明的较佳实施例而已,并不用以限制本发明,凡在本发明的精神和原则之内,所做的任何修改、等同替换、改进等,均应包含在本发明保护的范围之内。
Claims (4)
1.一种基于共享管道的Android设备的调试方法,其特征在于,包括:
作为客户端的计算机上的目标程序服务启动后,建立用于执行Android调试桥接器ADB命令的共享管道;
在所述目标程序运行过程中,利用所述共享管道执行ADB命令;
在所述目标程序服务停止时,关闭所述共享管道,并释放相应的资源。
2.根据权利要求1所述的方法,其特征在于,使用Runtimeexec建立所述共享管道。
3.根据权利要求1所述的方法,其特征在于,所述利用所述共享管道执行ADB命令包括:
监听要执行的ADB命令;
当监听到ADB命令时,将该ADB命令加入ADB命令队列中;
定时扫描ADB命令队列,按照加入所述队列的时间先后顺序,依次执行各个等待执行的ADB命令,当执行完任一命令后,将该命令从所述队列中移出。
4.根据权利要求1所述的方法,其特征在于,所述目标程序为JAVA程序或C++程序。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201410853161.5A CN105808404B (zh) | 2014-12-31 | 2014-12-31 | 一种基于共享管道的Android设备的调试方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201410853161.5A CN105808404B (zh) | 2014-12-31 | 2014-12-31 | 一种基于共享管道的Android设备的调试方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN105808404A true CN105808404A (zh) | 2016-07-27 |
CN105808404B CN105808404B (zh) | 2018-10-23 |
Family
ID=56420763
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201410853161.5A Active CN105808404B (zh) | 2014-12-31 | 2014-12-31 | 一种基于共享管道的Android设备的调试方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN105808404B (zh) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN111124702A (zh) * | 2019-11-22 | 2020-05-08 | 腾讯科技(深圳)有限公司 | 性能数据采集方法、装置和计算机可读存储介质 |
Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102446083A (zh) * | 2011-09-07 | 2012-05-09 | 福州博远无线网络科技有限公司 | PC端读取并保存Android手机屏幕显示内容的方法 |
WO2013109934A1 (en) * | 2012-01-20 | 2013-07-25 | Digimarc Corporation | Shared secret arrangements and optical data transfer |
CN103605529A (zh) * | 2013-05-17 | 2014-02-26 | 华为终端有限公司 | 应用程序的处理方法和装置 |
-
2014
- 2014-12-31 CN CN201410853161.5A patent/CN105808404B/zh active Active
Patent Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102446083A (zh) * | 2011-09-07 | 2012-05-09 | 福州博远无线网络科技有限公司 | PC端读取并保存Android手机屏幕显示内容的方法 |
WO2013109934A1 (en) * | 2012-01-20 | 2013-07-25 | Digimarc Corporation | Shared secret arrangements and optical data transfer |
CN103605529A (zh) * | 2013-05-17 | 2014-02-26 | 华为终端有限公司 | 应用程序的处理方法和装置 |
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN111124702A (zh) * | 2019-11-22 | 2020-05-08 | 腾讯科技(深圳)有限公司 | 性能数据采集方法、装置和计算机可读存储介质 |
CN111124702B (zh) * | 2019-11-22 | 2023-03-21 | 腾讯科技(深圳)有限公司 | 性能数据采集方法、装置和计算机可读存储介质 |
Also Published As
Publication number | Publication date |
---|---|
CN105808404B (zh) | 2018-10-23 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN104850491B (zh) | 一种软件测试方法、设备及系统 | |
CN110619582B (zh) | 区块链交易方法、装置、设备及计算机存储介质 | |
CN108256118B (zh) | 数据处理方法、装置、系统、计算设备以及存储介质 | |
WO2020106779A3 (en) | Testing as a service for cloud gaming | |
JP2020507140A5 (zh) | ||
CN106168993B (zh) | 电网实时仿真分析系统 | |
WO2015169028A1 (zh) | 终端软件的在线升级方法及装置 | |
CN105550039A (zh) | 一种基于Redhat Linux系统下网卡性能调优的实现方法 | |
KR20130085713A (ko) | 서버, 연산 처리 방법 및 연산 처리 시스템 | |
CN112214303A (zh) | Kubernetes集群自动缩放系统 | |
CN103970611A (zh) | 基于计算机集群的任务处理方法 | |
CN105808404A (zh) | 一种基于共享管道的Android设备的调试方法 | |
CN105245372A (zh) | 一种基于缓存和异步机制的加载网络资源的优化方法 | |
CN111031123B (zh) | Spark任务的提交方法、系统、客户端及服务端 | |
CN104503853A (zh) | 一种Linux系统上的多进程服务器程序的会话保持方法 | |
CN106911739B (zh) | 一种信息分发方法及装置 | |
US9189370B2 (en) | Smart terminal fuzzing apparatus and method using multi-node structure | |
WO2019100950A1 (zh) | 一种nsi的pnf更新方法、设备和计算机可读存储介质 | |
US9537742B2 (en) | Automatic adjustment of application launch endpoints | |
CN107861798B (zh) | 应用的系统级别操作方法及装置 | |
CN103856531A (zh) | 一种基于多协作者的局域网下载装置及方法 | |
CN107491448A (zh) | 一种HBase资源调整方法和装置 | |
JP2017058952A5 (zh) | ||
CN110768855A (zh) | 链路化性能测试的方法和装置 | |
Berzano et al. | PROOF on the Cloud for ALICE using PoD and OpenNebula |
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 |