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內識別模擬器但是不能正常連接調試。

