本发明涉及设备调试领域,具体涉及安卓设备的远程调试方法、服务器和系统。
背景技术:
基于adb(androiddebugbridge,安卓调试桥)的安卓设备调试目前虽然支持通过tcp连接实现远程调试,但是如果安卓设备不支持这种方式则无法进行远程调试。如果采用安卓设备通过usb与adbserver(服务器)连接,adbclient(客户端)通过远程连接到adbserver的方式,通常需要将安卓设备与adbserver设置在外网环境中,这样对于内网人员来说维护成本很高。
技术实现要素:
鉴于上述问题,提出了本发明以便提供一种克服上述问题或者至少部分地解决上述问题的安卓设备的远程调试方法、服务器和系统。
依据本发明的一个方面,提供了一种安卓设备的远程调试方法,包括:
与可连接待调试安卓设备的安卓调试桥adb服务器建立第一连接;
与部署在外网的第一代理服务器建立第二连接;其中,所述第一代理服务器可与一个或多个adb客户端建立第三连接;
通过所述第一连接与所述adb服务器进行调试数据交互,以及通过所述第二连接与所述第一代理服务器进行调试数据交互。
可选地,所述与部署在外网的第一代理服务器建立第二连接包括:
根据预设的端口号,向所述第一代理服务器的预设端口发起连接请求,以使所述第一代理服务器根据所述连接请求完成第二连接的建立。
可选地,所述通过所述第一连接与所述adb服务器进行调试数据交互包括:通过第一连接获取所述adb服务器上的已连接待调试安卓设备列表;
所述通过所述第二连接与所述adb客户端进行调试数据交互包括:通过所述第二连接将所述已连接待调试安卓设备列表转发至所述第一代理服务器,以使所述第一代理服务器在接收到对已连接待调试安卓设备的查看命令时,将所述已连接待调试安卓设备列表返回给所述adb客户端。
可选地,所述通过所述第二连接与所述第一代理服务器进行调试数据交互包括:
通过所述第二连接接收所述第一代理服务器转发的调试命令,所述调试命令包括如下的一种或多种:长连接命令,短连接命令,交互式命令。
可选地,所述第一连接和所述第三连接均为tcp连接,所述可连接待调试安卓设备与所述adb服务器通过usb数据线连接,所述第二连接为消息队列的消息传输连接,所述通过所述第二连接与所述第一代理服务器进行调试数据交互包括:
将调试数据通过所述消息传输连接发送到所述第一代理服务器中的消息路由模块,和/或,通过所述消息传输连接接收所述消息路由模块转发的调试数据。
依据本发明的另一方面,提供了一种安卓设备的远程调试方法,包括:
与部署在内网的第二代理服务器建立第二连接;其中,所述第二代理服务器与可连接待调试安卓设备的adb服务器建立有第一连接;
接收adb客户端的连接请求,与所述adb客户端建立第三连接;
通过所述第三连接与所述adb客户端进行调试数据交互,以及通过所述第二连接与所述第二代理服务器进行调试数据交互。
可选地,所述与部署在内网的第二代理服务器建立第二连接包括:
通过预设端口接收所述第二代理服务器发起的连接请求,根据所述连接请求完成与所述第二代理服务器的连接。
可选地,所述通过所述第二连接与所述第二代理服务器进行调试数据交互包括:通过所述第二连接接收所述第二代理服务器发送的已连接待调试安卓设备列表;
所述通过所述第三连接与所述adb客户端进行调试数据交互包括:在通过所述第三连接接收到所述adb客户端发送的已连接待调试安卓设备的查看命令时,将所述已连接待调试安卓设备列表通过所述第三连接返回给所述adb客户端。
可选地,所述通过所述第三连接与所述adb客户端进行调试数据交互包括:
接收所述adb客户端发送的调试命令,所述调试命令包括如下的一种或多种:长连接命令,短连接命令,交互式命令;
所述通过所述第二连接与所述第二代理服务器进行调试数据交互包括:将所述调试命令转发给所述第二代理服务器。
可选地,所述第一连接和所述第三连接均为tcp连接,所述可连接待调试安卓设备与所述adb服务器通过usb数据线连接,所述第二连接为消息队列的消息传输连接,所述通过所述第二连接与所述第二代理服务器进行调试数据交互包括:
由预设的消息路由模块通过所述消息传输连接将调试数据转发给所述第二代理服务器,和/或,由所述消息路由模块通过所述消息传输连接接收所述第二代理服务器发送的调试数据。
依据本发明的又一方面,提供了一种安卓设备的远程调试服务器,包括:
第一连接单元,适于与可连接待调试安卓设备的安卓调试桥adb服务器建立第一连接;
第二连接单元,适于与部署在外网的第一代理服务器建立第二连接;其中,所述第一代理服务器可与一个或多个adb客户端建立第三连接;
所述第一连接单元适于通过所述第一连接与所述adb服务器进行调试数据交互;
所述第二连接单元适于通过所述第二连接与所述第一代理服务器进行调试数据交互。
可选地,所述第二连接单元,适于根据预设的端口号,向所述第一代理服务器的预设端口发起连接请求,以使所述第一代理服务器根据所述连接请求完成第二连接的建立。
可选地,所述第一连接单元,适于通过第一连接获取所述adb服务器上的已连接待调试安卓设备列表;
所述第二连接单元,适于通过所述第二连接将所述已连接待调试安卓设备列表转发至所述第一代理服务器,以使所述第一代理服务器在接收到对已连接待调试安卓设备的查看命令时,将所述已连接待调试安卓设备列表返回给所述adb客户端。
可选地,所述第二连接单元,适于通过所述第二连接接收所述第一代理服务器转发的调试命令,所述调试命令包括如下的一种或多种:长连接命令,短连接命令,交互式命令。
可选地,所述第一连接和所述第三连接均为tcp连接,所述可连接待调试安卓设备与所述adb服务器通过usb数据线连接,所述第二连接为消息队列的消息传输连接;
所述第二连接单元,适于将调试数据通过所述消息传输连接发送到所述第一代理服务器中的消息路由模块,和/或,适于通过所述消息传输连接接收所述消息路由模块转发的调试数据。
依据本发明的再一方面,提供了一种安卓设备的远程调试服务器,包括:
第二连接单元,适于与部署在内网的第二代理服务器建立第二连接;其中,所述第二代理服务器与可连接待调试安卓设备的adb服务器建立有第一连接;
第三连接单元,适于接收adb客户端的连接请求,与所述adb客户端建立第三连接;
所述第三连接单元,适于通过所述第三连接与所述adb客户端进行调试数据交互;
所述第二连接单元,适于通过所述第二连接与所述第二代理服务器进行调试数据交互。
可选地,所述第二连接单元,适于通过预设端口接收所述第二代理服务器发起的连接请求,根据所述连接请求完成与所述第二代理服务器的连接。
可选地,所述第二连接单元,适于通过所述第二连接接收所述第二代理服务器发送的已连接待调试安卓设备列表;
所述第三连接单元,适于在通过所述第三连接接收到所述adb客户端发送的已连接待调试安卓设备的查看命令时,将所述已连接待调试安卓设备列表通过所述第三连接返回给所述adb客户端。
可选地,所述第三连接单元,适于接收所述adb客户端发送的调试命令,所述调试命令包括如下的一种或多种:长连接命令,短连接命令,交互式命令;
所述第二连接单元,适于将所述调试命令转发给所述第二代理服务器。
可选地,所述第一连接和所述第三连接均为tcp连接,所述可连接待调试安卓设备与所述adb服务器通过usb数据线连接,所述第二连接为消息队列的消息传输连接,
所述第二连接单元包括:消息路由模块,由所述消息路由模块通过所述消息传输连接将调试数据转发给所述第二代理服务器,和/或,由所述消息路由模块通过所述消息传输连接接收所述第二代理服务器发送的调试数据。
依据本发明的再一方面,一种安卓设备的远程调试系统,其中,该系统包括如上述的安卓设备的远程调试服务器作为第一代理服务器,如上述的安卓设备的远程调试服务器作为第二代理服务器,adb服务器,一个或多个安卓设备的远程调试客户端,以及一台或多台待调试的安卓设备。
由上述可知,本发明的技术方案,在内网中与可连接待调试安卓设备的安卓调试桥adb服务器建立第一连接,之后与部署在外网的第一代理服务器建立第二连接,adb客户端可以通过外网连接到第一代理服务器,实现第三连接。通过第一连接、第二连接和第三连接可以实现调试数据在各设备间的交互。该技术方案通过在内网设置待调试安卓设备及安卓调试桥adb服务器,解决了将其设置在外网环境下不便于维护的问题;并且通过这种分离式的代理设置,解决了外网环境下的adb客户端无法直接连接到内网服务的问题,综合而言,能够提供一种维护成本大大降低、调试效率未受到显著影响的安卓设备的远程调试的实现。
上述说明仅是本发明技术方案的概述,为了能够更清楚了解本发明的技术手段,而可依照说明书的内容予以实施,并且为了让本发明的上述和其它目的、特征和优点能够更明显易懂,以下特举本发明的具体实施方式。
附图说明
通过阅读下文优选实施方式的详细描述,各种其他的优点和益处对于本领域普通技术人员将变得清楚明了。附图仅用于示出优选实施方式的目的,而并不认为是对本发明的限制。而且在整个附图中,用相同的参考符号表示相同的部件。在附图中:
图1示出了根据本发明一个实施例的一种安卓设备的远程调试方法的流程示意图;
图2a示出了在未设置代理的情景下,adbclient与adbserver建立连接的调试数据交互流程示意图;
图2b示出了在未设置代理的情景下,adbclient向adbserver发出短连接命令的调试数据交互流程示意图;
图2c示出了在未设置代理的情景下,adbclient向adbserver发出长连接命令的调试数据交互流程示意图;
图2d示出了在未设置代理的情景下,adbclient向adbserver发出交互式命令的调试数据交互流程示意图;
图3示出了根据本发明一个实施例的另一种安卓设备的远程调试方法的流程示意图;
图4示出了根据本发明一个实施例的一种安卓设备的远程调试服务器的结构示意图;
图5示出了根据本发明一个实施例的另一种安卓设备的远程调试服务器的结构示意图;
图6示出了根据本发明一个实施例的一种安卓设备的远程调试系统的结构示意图。
具体实施方式
下面将参照附图更详细地描述本公开的示例性实施例。虽然附图中显示了本公开的示例性实施例,然而应当理解,可以以各种形式实现本公开而不应被这里阐述的实施例所限制。相反,提供这些实施例是为了能够更透彻地理解本公开,并且能够将本公开的范围完整的传达给本领域的技术人员。
目前,adb调试的架构包括三部分:adbdaemon(运行在安卓设备上的守护进程)、adbserver、adbclient。安卓设备连接到adbserver实际上就是建立adbdaemon与adbserver之间的连接。用户通过adbclient连接到adbserver后,可以查看当前连接的device(设备),并进一步进行设备调试,例如通过adbinstall命令安装apk、jdwp命令获取待调试设备的端口、logcat命令打印调试日志等。
背景技术部分提及的远程调试的实现方式中,一般在外网环境设置一个机房,在机房中部署安卓设备与adbserver。而由于这种远程调试通常是作为一个服务向外提供的,显然,大多数公司的工作人员日常在内网环境中工作,这是维护成本高的主要因素。而之所以不考虑将安卓设备与adbserver设置在内网,原因是处于安全因素考虑,外网通常无法连接到内网服务,这样就造成adbclient无法连接到adbserver。
发明人通过分析发现:安卓设备调试实际上分为连接和调试两个过程,在连接过程中执行的是adbconnect,也就是建立连接;在调试过程执行的是adbcommand,也就是执行相应的调试命令。而如果调试命令和返回的调试结果数据采用其他方式进行传输,再进行代理的设置,就可以避免adbclient与adbserver的之间的直接连接。
进一步地,考虑到外网与内网之间的通信通常是:外网不能连接到内网服务,但是可以发送数据,发明人想到对代理进行分离设置,即内网的代理与外网的代理建立连接,进行数据交互,并由这两个代理分别与adbserver和adbclient建立连接。
基于上述构思,图1示出了根据本发明一个实施例的一种安卓设备的远程调试方法的流程示意图,如图1所示,该方法包括:
步骤s110,与可连接待调试安卓设备的安卓调试桥adb服务器建立第一连接。
步骤s120,与部署在外网的第一代理服务器建立第二连接;其中,第一代理服务器可与一个或多个adb客户端建立第三连接。
步骤s130,通过第一连接与adb服务器进行调试数据交互,以及通过第二连接与第一代理服务器进行调试数据交互。
可见,图1所示的方法,在内网中与可连接待调试安卓设备的安卓调试桥adb服务器建立第一连接,之后与部署在外网的第一代理服务器建立第二连接,adb客户端可以通过外网连接到第一代理服务器,实现第三连接。通过第一连接、第二连接和第三连接可以实现调试数据在各设备间的交互。该技术方案通过在内网设置待调试安卓设备及安卓调试桥adb服务器,解决了将其设置在外网环境下不便于维护的问题;并且通过这种分离式的代理设置,解决了外网环境下的adb客户端无法直接连接到内网服务的问题,综合而言,能够提供一种维护成本大大降低、调试效率未受到显著影响的安卓设备的远程调试的实现。
在本发明的一个实施例中,上述方法中,与部署在外网的第一代理服务器建立第二连接包括:根据预设的端口号,向第一代理服务器的预设端口发起连接请求,以使第一代理服务器根据连接请求完成第二连接的建立。
在本实施例中,预先设置由第一代理服务器的哪个端口来接收请求并建立连接,这样由内网主动发起连接请求,就解决了内外网联通的问题,并确保了安全性。
在本发明的一个实施例中,上述方法中,通过第一连接与adb服务器进行调试数据交互包括:通过第一连接获取adb服务器上的已连接待调试安卓设备列表;通过第二连接与adb客户端进行调试数据交互包括:通过第二连接将已连接待调试安卓设备列表转发至第一代理服务器,以使第一代理服务器在接收到对已连接待调试安卓设备的查看命令时,将已连接待调试安卓设备列表返回给adb客户端。
在本实施例中,当一个安卓设备连接到adbserver之后,接收adbserver更新的已连接待调试安卓设备列表,然后将其转发到第一代理服务器上。这时如果第一代理服务器中接入的adbclient执行adbdevices命令,就可以看到已连接待调试安卓设备列表。但实际上,这个时候adbclient并没有连接到这些设备。
adbclient在查看到已连接待调试安卓设备,就可以对安卓设备进行调试了。在本发明的一个实施例中,上述方法中,通过第二连接与第一代理服务器进行调试数据交互包括:通过第二连接接收第一代理服务器转发的调试命令,调试命令包括如下的一种或多种:长连接命令,短连接命令,交互式命令。
图2a、图2b、图2c和图2d分别示出了在未设置代理的情景下,adbclient与adbserver建立连接、发出短连接命令、发出长连接命令和发出交互式命令的调试数据交互流程示意图。
如图2a所示,adbclient发出连接请求cnxn,adbserver向其返回一个带有令牌(token)的auth确认信息,adbclient发送一个带有设备识别信息(signature)的auth确认信息,adbserver接收后继续返回一个带有token的auth确认信息,adbclient根据这个auth确认信息发送一个经过rsa算法加密的auth确认信息,adbserver验证通过后,向其返回连接成功cnxn,并告知该设备的标识id。
而在设置代理的情况下,图2a中的过程可以在adbclient与第一代理服务器之间执行。
如图2b所示,adbclient发出短连接命令open,adbserver向相应的安卓设备发出connect连接请求,并传递相应信息(transpot)。连接成功后,adbserver告知adbclient成功的okay信息,并将open命令转发给相应的安卓设备,接收安卓设备返回的应答信息(response),并将这个应答信息通过写(wrte)方式发送给adbclient,接收adbclient返回的确认okay信息。adbserver在接收到安卓设备发送的短连接断开(clse)通知时,将其通知给adbclient,短连接过程结束。
如图2c所示,adbclient发出长连接命令open,adbserver向相应的安卓设备发出connect连接请求,并传递相应信息(transpot)。连接成功后,adbserver告知adbclient成功的okay信息,并将open命令转发给相应的安卓设备,接收安卓设备返回的应答信息(response),并将这个应答信息通过写(wrte)方式发送给adbclient,接收adbclient返回的确认okay信息。与图2b不同的是,此时需要adbclient发送断开长连接(clse)的通知(例如按ctrl+c),adbserver在接收到通知时与相应的安卓设备断开长连接。
如图2d所示,adbclient发出交互命令open,adbserver向相应的安卓设备发出connect连接请求,并传递相应信息(transpot)。连接成功后,adbserver告知adbclient成功的okay信息,并将open命令转发给相应的安卓设备,接收安卓设备返回的应答信息(response),并将这个应答信息通过写(wrte)方式发送给adbclient,接收adbclient返回的确认okay信息,这些与图2b建立长连接的过程类似。与图2b不同的时,此时adbclient会以写方式发送其他调试命令(command),adbserver将其发送(send)给相应的安卓设备,接收安卓设备的回复,通过写方式发送给adbclient,接收adbclient返回的确认okay通知。与图2c类似的是,需要adbclient发送断开长连接(clse)的通知(例如按ctrl+c),adbserver在接收到通知时与相应的安卓设备断开连接。
在设置代理的情况下,上述过程仅需要第一代理服务器作为中间件进行转发。
结合图2a-图2d,以及上述示例可知,在本实施例中,实际上是将adbconnect与adbcommand进行了分离,adbconnect在外网执行,adbcommand在内网执行,需要交互的数据通过第二连接传输。
由于增加了中间件使得数据通信不可避免地存在延迟,为降低延迟,在本发明的一个实施例中,上述方法中,第一连接和第三连接均为tcp连接,可连接待调试安卓设备与adb服务器通过usb数据线连接,第二连接为消息队列的消息传输连接,通过第二连接与第一代理服务器进行调试数据交互包括:将调试数据通过消息传输连接发送到第一代理服务器中的消息路由模块,和/或,通过消息传输连接接收消息路由模块转发的调试数据。
这样,不支持在tcp连接模式下进行adb调试的安卓设备可以通过usb模式连接到adbserver,同时通过消息队列的消息传输连接降低延迟,具体地可以选择高性能的zeromq消息队列进行实现。这样就需要在第一代理服务器中设置一个消息路由模块(router),进行消息的转发。
图3示出了根据本发明一个实施例的另一种安卓设备的远程调试方法的流程示意图,如图3所示,该方法包括:
步骤s310,与部署在内网的第二代理服务器建立第二连接;其中,第二代理服务器与可连接待调试安卓设备的adb服务器建立有第一连接。
步骤s320,接收adb客户端的连接请求,与adb客户端建立第三连接。
步骤s330,通过第三连接与adb客户端进行调试数据交互,以及通过第二连接与第二代理服务器进行调试数据交互。
可见,图3所示的方法可在外网的第一代理服务器中执行,与在内网中部署的第二代理服务器建立第二连接,并与一个或多个adb客户端建立第三连接。通过第一连接、第二连接和第三连接可以实现调试数据在各设备间的交互。该技术方案通过在内网设置待调试安卓设备及安卓调试桥adb服务器,解决了将其设置在外网环境下不便于维护的问题;并且通过这种分离式的代理设置,解决了外网环境下的adb客户端无法直接连接到内网服务的问题,综合而言,能够提供一种维护成本大大降低、调试效率未受到显著影响的安卓设备的远程调试的实现。
在本发明的一个实施例中,图3所示的方法中,与部署在内网的第二代理服务器建立第二连接包括:通过预设端口接收第二代理服务器发起的连接请求,根据连接请求完成与第二代理服务器的连接。
同样可以参照前述在内网中实现的实施例,提取告知可使用的端口号,并考虑到外网无法连接到内网服务的问题,由第二代理服务器主动发起连接请求。
在本发明的一个实施例中,图3所示的方法中,通过第二连接与第二代理服务器进行调试数据交互包括:通过第二连接接收第二代理服务器发送的已连接待调试安卓设备列表;通过第三连接与adb客户端进行调试数据交互包括:在通过第三连接接收到adb客户端发送的已连接待调试安卓设备的查看命令时,将已连接待调试安卓设备列表通过第三连接返回给adb客户端。
在接收到adbdevices后可以不需要与第二代理服务器进行交互,但是对于adbclient而言还是感知到连接到了adbserver,以及能够查看连接的待调试安卓设备。
在本发明的一个实施例中,图3所示的方法中,通过第三连接与adb客户端进行调试数据交互包括:接收adb客户端发送的调试命令,调试命令包括如下的一种或多种:长连接命令,短连接命令,交互式命令;通过第二连接与第二代理服务器进行调试数据交互包括:将调试命令转发给第二代理服务器。
具体的实施方式同样可以参照图2a-图2d及前述实施例对这些交互的改进,在此不再赘述。
在本发明的一个实施例中,上述方法中,第一连接和第三连接均为tcp连接,可连接待调试安卓设备与adb服务器通过usb数据线连接,第二连接为消息队列的消息传输连接,通过第二连接与第二代理服务器进行调试数据交互包括:由预设的消息路由模块通过消息传输连接将调试数据转发给第二代理服务器,和/或,由消息路由模块通过消息传输连接接收第二代理服务器发送的调试数据。
在本实施例中,消息路由模块router可以作为一个单独的设备,也可以作为第一代理服务器中的一个模块,此时第一代理服务器与adbclient之间的连接可以是由一个模块实现的,这个模块与router之间进行通信,交互调试数据。
图4示出了根据本发明一个实施例的一种安卓设备的远程调试服务器的结构示意图,如图4所示,安卓设备的远程调试服务器400包括:
第一连接单元410,适于与可连接待调试安卓设备的安卓调试桥adb服务器建立第一连接。
第二连接单元420,适于与部署在外网的第一代理服务器建立第二连接;其中,第一代理服务器可与一个或多个adb客户端建立第三连接。
第一连接单元410适于通过第一连接与adb服务器进行调试数据交互;第二连接单元420适于通过第二连接与第一代理服务器进行调试数据交互。
可见,图4所示的服务器,在内网中与可连接待调试安卓设备的安卓调试桥adb服务器建立第一连接,之后与部署在外网的第一代理服务器建立第二连接,adb客户端可以通过外网连接到第一代理服务器,实现第三连接。通过第一连接、第二连接和第三连接可以实现调试数据在各设备间的交互。该技术方案通过在内网设置待调试安卓设备及安卓调试桥adb服务器,解决了将其设置在外网环境下不便于维护的问题;并且通过这种分离式的代理设置,解决了外网环境下的adb客户端无法直接连接到内网服务的问题,综合而言,能够提供一种维护成本大大降低、调试效率未受到显著影响的安卓设备的远程调试的实现。
在本发明的一个实施例中,图4所示的服务器中,第二连接单元420,适于根据预设的端口号,向第一代理服务器的预设端口发起连接请求,以使第一代理服务器根据连接请求完成第二连接的建立。
在本发明的一个实施例中,图4所示的服务器中,第一连接单元410,适于通过第一连接获取adb服务器上的已连接待调试安卓设备列表;第二连接单元420,适于通过第二连接将已连接待调试安卓设备列表转发至第一代理服务器,以使第一代理服务器在接收到对已连接待调试安卓设备的查看命令时,将已连接待调试安卓设备列表返回给adb客户端。
在本发明的一个实施例中,图4所示的服务器中,第二连接单元420,适于通过第二连接接收第一代理服务器转发的调试命令,调试命令包括如下的一种或多种:长连接命令,短连接命令,交互式命令。
在本发明的一个实施例中,上述服务器中,第一连接和第三连接均为tcp连接,可连接待调试安卓设备与adb服务器通过usb数据线连接,第二连接为消息队列的消息传输连接;第二连接单元420,适于将调试数据通过消息传输连接发送到第一代理服务器中的消息路由模块,和/或,适于通过消息传输连接接收消息路由模块转发的调试数据。
图5示出了根据本发明一个实施例的另一种安卓设备的远程调试服务器的结构示意图,如图5所示,安卓设备的远程调试服务器500包括:
第二连接单元510,适于与部署在内网的第二代理服务器建立第二连接;其中,第二代理服务器与可连接待调试安卓设备的adb服务器建立有第一连接。
第三连接单元520,适于接收adb客户端的连接请求,与adb客户端建立第三连接。
第三连接单元520,适于通过第三连接与adb客户端进行调试数据交互;第二连接单元510,适于通过第二连接与第二代理服务器进行调试数据交互。
在本发明的一个实施例中,图5所示的服务器中,第二连接单元510,适于通过预设端口接收第二代理服务器发起的连接请求,根据连接请求完成与第二代理服务器的连接。
在本发明的一个实施例中,图5所示的服务器中,第二连接单元510,适于通过第二连接接收第二代理服务器发送的已连接待调试安卓设备列表;第三连接单元520,适于在通过第三连接接收到adb客户端发送的已连接待调试安卓设备的查看命令时,将已连接待调试安卓设备列表通过第三连接返回给adb客户端。
在本发明的一个实施例中,图5所示的服务器中,第三连接单元520,适于接收adb客户端发送的调试命令,调试命令包括如下的一种或多种:长连接命令,短连接命令,交互式命令;第二连接单元510,适于将调试命令转发给第二代理服务器。
在本发明的一个实施例中,上述服务器中,第一连接和第三连接均为tcp连接,可连接待调试安卓设备与adb服务器通过usb数据线连接,第二连接为消息队列的消息传输连接,第二连接单元510包括:消息路由模块,由消息路由模块通过消息传输连接将调试数据转发给第二代理服务器,和/或,由消息路由模块通过消息传输连接接收第二代理服务器发送的调试数据。
需要说明的是,上述各服务器实施例的具体实施方式分别与前述对应方法实施例的具体实施方式相同,在此不在赘述。
图6示出了根据本发明一个实施例的一种安卓设备的远程调试系统的结构示意图,如图6所示,安卓设备的远程调试系统600包括如上述任一实施例中的安卓设备的远程调试服务器500作为第一代理服务器,以及如上述任一实施例中的安卓设备的远程调试服务器400作为第二代理服务器,adb服务器610,一个或多个安卓设备的远程调试客户端620,以及一台或多台待调试的安卓设备630。
综上所述,本发明的技术方案,在内网中与可连接待调试安卓设备的安卓调试桥adb服务器建立第一连接,之后与部署在外网的第一代理服务器建立第二连接,adb客户端可以通过外网连接到第一代理服务器,实现第三连接。通过第一连接、第二连接和第三连接可以实现调试数据在各设备间的交互。该技术方案通过在内网设置待调试安卓设备及安卓调试桥adb服务器,解决了将其设置在外网环境下不便于维护的问题;并且通过这种分离式的代理设置,解决了外网环境下的adb客户端无法直接连接到内网服务的问题,综合而言,能够提供一种维护成本大大降低、调试效率未受到显著影响的安卓设备的远程调试的实现。
需要说明的是:
在此提供的算法和显示不与任何特定计算机、虚拟装置或者其它设备固有相关。各种通用装置也可以与基于在此的示教一起使用。根据上面的描述,构造这类装置所要求的结构是显而易见的。此外,本发明也不针对任何特定编程语言。应当明白,可以利用各种编程语言实现在此描述的本发明的内容,并且上面对特定语言所做的描述是为了披露本发明的最佳实施方式。
在此处所提供的说明书中,说明了大量具体细节。然而,能够理解,本发明的实施例可以在没有这些具体细节的情况下实践。在一些实例中,并未详细示出公知的方法、结构和技术,以便不模糊对本说明书的理解。
类似地,应当理解,为了精简本公开并帮助理解各个发明方面中的一个或多个,在上面对本发明的示例性实施例的描述中,本发明的各个特征有时被一起分组到单个实施例、图、或者对其的描述中。然而,并不应将该公开的方法解释成反映如下意图:即所要求保护的本发明要求比在每个权利要求中所明确记载的特征更多的特征。更确切地说,如下面的权利要求书所反映的那样,发明方面在于少于前面公开的单个实施例的所有特征。因此,遵循具体实施方式的权利要求书由此明确地并入该具体实施方式,其中每个权利要求本身都作为本发明的单独实施例。
本领域那些技术人员可以理解,可以对实施例中的设备中的模块进行自适应性地改变并且把它们设置在与该实施例不同的一个或多个设备中。可以把实施例中的模块或单元或组件组合成一个模块或单元或组件,以及此外可以把它们分成多个子模块或子单元或子组件。除了这样的特征和/或过程或者单元中的至少一些是相互排斥之外,可以采用任何组合对本说明书(包括伴随的权利要求、摘要和附图)中公开的所有特征以及如此公开的任何方法或者设备的所有过程或单元进行组合。除非另外明确陈述,本说明书(包括伴随的权利要求、摘要和附图)中公开的每个特征可以由提供相同、等同或相似目的的替代特征来代替。
此外,本领域的技术人员能够理解,尽管在此所述的一些实施例包括其它实施例中所包括的某些特征而不是其它特征,但是不同实施例的特征的组合意味着处于本发明的范围之内并且形成不同的实施例。例如,在下面的权利要求书中,所要求保护的实施例的任意之一都可以以任意的组合方式来使用。
本发明的各个部件实施例可以以硬件实现,或者以在一个或者多个处理器上运行的软件模块实现,或者以它们的组合实现。本领域的技术人员应当理解,可以在实践中使用微处理器或者数字信号处理器(dsp)来实现根据安卓设备的远程调试服务器和系统中的一些或者全部部件的一些或者全部功能。本发明还可以实现为用于执行这里所描述的方法的一部分或者全部的设备或者装置程序(例如,计算机程序和计算机程序产品)。这样的实现本发明的程序可以存储在计算机可读介质上,或者可以具有一个或者多个信号的形式。这样的信号可以从因特网网站上下载得到,或者在载体信号上提供,或者以任何其他形式提供。
应该注意的是上述实施例对本发明进行说明而不是对本发明进行限制,并且本领域技术人员在不脱离所附权利要求的范围的情况下可设计出替换实施例。在权利要求中,不应将位于括号之间的任何参考符号构造成对权利要求的限制。单词“包含”不排除存在未列在权利要求中的元件或步骤。位于元件之前的单词“一”或“一个”不排除存在多个这样的元件。本发明可以借助于包括有若干不同元件的硬件以及借助于适当编程的计算机来实现。在列举了若干装置的单元权利要求中,这些装置中的若干个可以是通过同一个硬件项来具体体现。单词第一、第二、以及第三等的使用不表示任何顺序。可将这些单词解释为名称。
本发明的实施例公开了a1、一种安卓设备的远程调试方法,其中,该方法包括:
与可连接待调试安卓设备的安卓调试桥adb服务器建立第一连接;
与部署在外网的第一代理服务器建立第二连接;其中,所述第一代理服务器可与一个或多个adb客户端建立第三连接;
通过所述第一连接与所述adb服务器进行调试数据交互,以及通过所述第二连接与所述第一代理服务器进行调试数据交互。
a2、如a1所述的方法,其中,所述与部署在外网的第一代理服务器建立第二连接包括:
根据预设的端口号,向所述第一代理服务器的预设端口发起连接请求,以使所述第一代理服务器根据所述连接请求完成第二连接的建立。
a3、如a1所述的方法,其中,所述通过所述第一连接与所述adb服务器进行调试数据交互包括:通过第一连接获取所述adb服务器上的已连接待调试安卓设备列表;
所述通过所述第二连接与所述adb客户端进行调试数据交互包括:通过所述第二连接将所述已连接待调试安卓设备列表转发至所述第一代理服务器,以使所述第一代理服务器在接收到对已连接待调试安卓设备的查看命令时,将所述已连接待调试安卓设备列表返回给所述adb客户端。
a4、如a1所述的方法,其中,所述通过所述第二连接与所述第一代理服务器进行调试数据交互包括:
通过所述第二连接接收所述第一代理服务器转发的调试命令,所述调试命令包括如下的一种或多种:长连接命令,短连接命令,交互式命令。
a5、如a1-a4中任一项所述的方法,其中,所述第一连接和所述第三连接均为tcp连接,所述可连接待调试安卓设备与所述adb服务器通过usb数据线连接,所述第二连接为消息队列的消息传输连接,所述通过所述第二连接与所述第一代理服务器进行调试数据交互包括:
将调试数据通过所述消息传输连接发送到所述第一代理服务器中的消息路由模块,和/或,通过所述消息传输连接接收所述消息路由模块转发的调试数据。
本发明的实施例还公开了b6、一种安卓设备的远程调试方法,其中,该方法包括:
与部署在内网的第二代理服务器建立第二连接;其中,所述第二代理服务器与可连接待调试安卓设备的adb服务器建立有第一连接;
接收adb客户端的连接请求,与所述adb客户端建立第三连接;
通过所述第三连接与所述adb客户端进行调试数据交互,以及通过所述第二连接与所述第二代理服务器进行调试数据交互。
b7、如b6所述的方法,其中,所述与部署在内网的第二代理服务器建立第二连接包括:
通过预设端口接收所述第二代理服务器发起的连接请求,根据所述连接请求完成与所述第二代理服务器的连接。
b8、如b6所述的方法,其中,
所述通过所述第二连接与所述第二代理服务器进行调试数据交互包括:通过所述第二连接接收所述第二代理服务器发送的已连接待调试安卓设备列表;
所述通过所述第三连接与所述adb客户端进行调试数据交互包括:在通过所述第三连接接收到所述adb客户端发送的已连接待调试安卓设备的查看命令时,将所述已连接待调试安卓设备列表通过所述第三连接返回给所述adb客户端。
b9、如b6所述的方法,其中,所述通过所述第三连接与所述adb客户端进行调试数据交互包括:
接收所述adb客户端发送的调试命令,所述调试命令包括如下的一种或多种:长连接命令,短连接命令,交互式命令;
所述通过所述第二连接与所述第二代理服务器进行调试数据交互包括:将所述调试命令转发给所述第二代理服务器。
b10、如b6-b9中任一项所述的方法,其中,所述第一连接和所述第三连接均为tcp连接,所述可连接待调试安卓设备与所述adb服务器通过usb数据线连接,所述第二连接为消息队列的消息传输连接,所述通过所述第二连接与所述第二代理服务器进行调试数据交互包括:
由预设的消息路由模块通过所述消息传输连接将调试数据转发给所述第二代理服务器,和/或,由所述消息路由模块通过所述消息传输连接接收所述第二代理服务器发送的调试数据。
本发明的实施例还公开了c11、一种安卓设备的远程调试服务器,其中,该服务器包括:
第一连接单元,适于与可连接待调试安卓设备的安卓调试桥adb服务器建立第一连接;
第二连接单元,适于与部署在外网的第一代理服务器建立第二连接;其中,所述第一代理服务器可与一个或多个adb客户端建立第三连接;
所述第一连接单元适于通过所述第一连接与所述adb服务器进行调试数据交互;
所述第二连接单元适于通过所述第二连接与所述第一代理服务器进行调试数据交互。
c12、如c11所述的服务器,其中,
所述第二连接单元,适于根据预设的端口号,向所述第一代理服务器的预设端口发起连接请求,以使所述第一代理服务器根据所述连接请求完成第二连接的建立。
c13、如c11所述的服务器,其中,
所述第一连接单元,适于通过第一连接获取所述adb服务器上的已连接待调试安卓设备列表;
所述第二连接单元,适于通过所述第二连接将所述已连接待调试安卓设备列表转发至所述第一代理服务器,以使所述第一代理服务器在接收到对已连接待调试安卓设备的查看命令时,将所述已连接待调试安卓设备列表返回给所述adb客户端。
c14、如c11所述的服务器,其中,
所述第二连接单元,适于通过所述第二连接接收所述第一代理服务器转发的调试命令,所述调试命令包括如下的一种或多种:长连接命令,短连接命令,交互式命令。
c15、如c11-c14中任一项所述的服务器,其中,所述第一连接和所述第三连接均为tcp连接,所述可连接待调试安卓设备与所述adb服务器通过usb数据线连接,所述第二连接为消息队列的消息传输连接;
所述第二连接单元,适于将调试数据通过所述消息传输连接发送到所述第一代理服务器中的消息路由模块,和/或,适于通过所述消息传输连接接收所述消息路由模块转发的调试数据。
本发明的实施例还公开了d16、一种安卓设备的远程调试服务器,其中,该服务器包括:
第二连接单元,适于与部署在内网的第二代理服务器建立第二连接;其中,所述第二代理服务器与可连接待调试安卓设备的adb服务器建立有第一连接;
第三连接单元,适于接收adb客户端的连接请求,与所述adb客户端建立第三连接;
所述第三连接单元,适于通过所述第三连接与所述adb客户端进行调试数据交互;
所述第二连接单元,适于通过所述第二连接与所述第二代理服务器进行调试数据交互。
d17、如d16所述的服务器,其中,
所述第二连接单元,适于通过预设端口接收所述第二代理服务器发起的连接请求,根据所述连接请求完成与所述第二代理服务器的连接。
d18、如d16所述的服务器,其中,
所述第二连接单元,适于通过所述第二连接接收所述第二代理服务器发送的已连接待调试安卓设备列表;
所述第三连接单元,适于在通过所述第三连接接收到所述adb客户端发送的已连接待调试安卓设备的查看命令时,将所述已连接待调试安卓设备列表通过所述第三连接返回给所述adb客户端。
d19、如d16所述的服务器,其中,
所述第三连接单元,适于接收所述adb客户端发送的调试命令,所述调试命令包括如下的一种或多种:长连接命令,短连接命令,交互式命令;
所述第二连接单元,适于将所述调试命令转发给所述第二代理服务器。
d20、如d16-d19中任一项所述的服务器,其中,所述第一连接和所述第三连接均为tcp连接,所述可连接待调试安卓设备与所述adb服务器通过usb数据线连接,所述第二连接为消息队列的消息传输连接,
所述第二连接单元包括:消息路由模块,由所述消息路由模块通过所述消息传输连接将调试数据转发给所述第二代理服务器,和/或,由所述消息路由模块通过所述消息传输连接接收所述第二代理服务器发送的调试数据。
本发明的实施例还公开了e21、一种安卓设备的远程调试系统,其中,该系统包括如d16-d20中任一项所述的安卓设备的远程调试服务器作为第一代理服务器,如c11-c15中任一项所述的安卓设备的远程调试服务器作为第二代理服务器,adb服务器,一个或多个安卓设备的远程调试客户端,以及一台或多台待调试的安卓设备。