Hbuilder连接模拟器调试

Hbuilder是一个非常好用的HTML5开发IDE,我最喜欢的功能就是连接手机调试了,连接手机调试有两种途径,一是通过USB连接真机,二是下载安装一个安卓模拟器,让Hbuilder连接到安卓模拟器,如果不怕麻烦的话,可以选择第一种方式,但是我总是不想用USB线连上我的又卡又慢的安卓机开发,因此我选择用安卓模拟器。

 

关于真机运行、手机运行、真机联调常见问题,官方网址http://ask.dcloud.net.cn/article/97

关于如何安装配置手机模拟器,官方网址http://ask.dcloud.net.cn/article/151,但是官网只给出了如何安装配置谷歌官方模拟器的方法,我们都知道这个模拟器给人的感觉比真机更卡更慢,因此我们一般选择第三方模拟器,开发者常用的是国外传进来的Genymotion模拟器,这个模拟器本身配置起来相当复杂,可自行百度,关于这个模拟器在Hbuilder上如何配置也有网友写了注意事项,手把手教你_如何实现HBuilder连接到genymotion的模拟器上。

在这里我要推荐几国内做的不错的安卓模拟器:海马玩模拟器和夜神模拟器

这两款模拟器的主要业务是让人们能在PC上玩安卓游戏,能实现全屏、鼠标、手柄操作等,运行速度非常快,我认为用来开发再合适不过了。

下载安装这两款模拟器作为开发者分分钟就能搞定。但是要想IDE连上模拟器就有很多注意事项了。

我们知道Hbuilder是通过adb(安装目录tools里面,或者从任务管理器进入)连接到模拟器或者真机的,但是系统中很多软件也会开启adb进程对Hbuilder产生影响。关于如何检查adb冲突,官网也给出了。

adb是什么?

Android 调试系统是一个面对客户服务系统,包括三个组成部分:

   •   一个在你用于开发程序的电脑上运行的客户端。你可以通过shell端使用adb 命令启动客户端。其他Android 工具比如说ADT 插件和DDMS 同样可以产生adb 客户端.

   •   在你用于发的机器上作为后台进程运行的服务器。该服务器负责管理客户端与运行

      于模拟器或设备上的adb守护程序(daemon)之间的通信。.

   •   一个以后台进程的形式运行于模拟器或设备上的守护程序(daemon)。.

当你启动一个adb客户端,客户端首先确认是否已有一个adb服务进程在运行。

如果没有,则启动服务进程。当服务器运行, adb服务器就会绑定本地的TCP

端口5037并监听adb客户端发来的命令,—所有的adb客户端都是用端口 5037

与adb服务器对话的.

接着服务器将所有运行中的模拟器或设备实例建立连接。它通过扫描所有5555

到5585范围内的奇数端口来定位所有的模拟器或设备。一旦服务器找到 了adb

守护程序,它将建立一个到该端口的连接。请注意任何模拟器或设备实例会取得

两个连续的端口——一个偶数端口用来相应控制台的连接,和一个奇数端口 用

来响应adb连接。比如说:

模拟器1,控制台:端口5554

模拟器1,Adb端口5555

控制台:端口 5556

adb 端口5557...

如上所示,模拟器实例通过5555端口连接adb,就如同使用5554端口连接控制台一样.

一旦服务器与所有模拟器实例建立连接,就可以使用adb命令控制和访问该实

例。因为服务器管理模拟器/设备实例的连接,和控制处理从来自多个adb客户

端来的命令,你可以通过任何客户端(或脚本)来控制任何模拟器或设备实例.

 

来源: <http://bbs.hiapk.com/thread-4760331-1-1.html>

   

检查adb冲突(windows系统)

Android的ADB服务已经被大量软件使用,除了各种手机助手自带adb,其他如搜狗输入法、暴风影音、酷狗音乐、阿里旺旺等众多软件都自带adb。有些工具的adb服务版本低且独占手机通道,就会导致HBuilder无法连接手机。
一般情况下,用户可以在软件的设置里取消该软件对手机的监控。
还可以使用如下方式检测当前是哪个进程在占用Android手机通道。
1)打开系统dos窗口:开始-运行(快捷键:win+r),输入cmd并回车
2)确认adb的启动进程:
寻找端口是5037的tcp连接,在dos中输入:netstat -ano | findstr 5037
在输出结果中找到类似下面的一行:
TCP 127.0.0.1:5037 0.0.0.0:0 LISTENING 5816
如果内容为空,可能是没有程序在占用adb端口。
或者使用 netstat -ano | findstr 5037>d:/1.txt 输出到文件中查找。
根据查询结果确认端口为5037的连接被那个进程占用,结果中显示的"5816"表示占用adb端口的进程PID。
根据进程的PID可以找到具体进程。
在命令行中输入:tasklist | findstr 5816
在输出结果中找到类似下面的一行:
adb.exe 5816 Console 0 4,440 K
adb.exe(名称一般不是adb.exe,以adb.exe举例)为启动的adb进程。
或者手工在任务管理器中定位这个进程,打开任务管理器后,进入进程选项卡,如果列表里有PID,直接找;如果列表里没有PID,点菜单查看-选择列,勾上PID。
3)解决冲突:
一般发生冲突是,任务管理器的进程里会出现多个adb.exe,或kadb.exe、tadb.exe。。。
在任务管理器中找到adb.exe相关进程,在任务管理中右键该进程,打开文件位置,查看该进程是什么软件启动的。
如果adb.exe不是HBuilder安装目录下的文件,一般可以用以下方案解决冲突:
1、有些软件这种进程是可以设置成不自动启动的,各个软件设置不一样,设置完成后关闭软件就自动退出了
2、在任务管理器中结束该进程
3、有些软件该进程结束后又会被自动启动,所以得将adb.exe文件重命名一下

 

来源: <http://ask.dcloud.net.cn/article/97#checkAdb>

 

 

由于adb冲突问题,如果先启动Hbuilder,IDE自带的adb会启动监听5037端口,再启动安卓模拟器的话,模拟器自带的adb(你在模拟器的安装目录下总能找到adb.exe)

也会启动,这样就把Hbuilder的adb服务给挤下去了。因此这是Hbuilder就识别不了模拟器了。好在Hbuilder的新版本已经解决部分这种问题了,这个问题在连接海马玩模拟器时也不会出现了,无论先启动哪一个都能识别。

 

但是夜神模拟器却不能被Hbuilder识别,原因是夜神模拟器的开发者将adb.exe改成了nx_adb.exe,这样Hbuilder就检查不到冲突了,解决方法是将这个重命名或者剪切到其他地方,或者干脆删除,不会对模拟器产生任何影响。但是我发现即使这样做了。Hbuilder还是连接不上夜神模拟器,原因是夜神模拟器的运行端口不在Hbuilder的adb的扫描范围内。那么如何找到端口呢。

在夜神模拟器正在启动或刚启动时(真的是刚启动,时间长了就不行了,也不知道是为什么),在CMD中运行:nox_adb devices,注意这事nox_adb还没有重命名或移走,是在nox_adb所在目录运行命令,这样会列出nox_adb连接的终端地址是127.0.0.1:62001;执行完这个操作后就将nx_adb重命名或者移走,接下来就要让Hbuilder的adb连接到模拟器,定位到Hbuilder的adb目录,运行下面的第一条命令就连接上了模拟器,第二条命令是检查连接设备及状态。后面显示device即表示正常连接,如果不进行前面的一系列操作,直接连上127.0.0.1:62001的话,设备状态会显示offline,Hbuilder内识别模拟器但是不能正常连接调试。

posted @ 2015-08-22 15:03  FeMiner  阅读(12533)  评论(4编辑  收藏  举报