1. 常用的adb命令
android Debug Bridge,我們一般簡稱為adb,主要存放在sdk安裝目錄下的platform-tools文件夾中,它是一個非常強大的命令行工具,通過這個工具你能夠與你的android設備進行交互,被稱為Android 調試橋。
它是一種客戶端-伺服器程序,包括以下三個組件:
adb shell 命令
adb shell 則是調用的 Android 系統中的命令,這些 Android 特有的命令都放在了 Android 設備的 system/bin 目錄下
monkey命令
當您啟動某個 adb 客戶端時,該客戶端會先檢查是否有 adb 伺服器進程正在運行。如果沒有,它會啟動伺服器進程。伺服器在啟動後會與本地 TCP 埠 5037 綁定,並監聽 adb 客戶端發出的命令 - 所有 adb 客戶端均通過埠 5037 與 adb 伺服器通信。
然後,伺服器會與所有正在運行的設備建立連接。它通過掃描 5555 到 5585 之間(該范圍供前 16 個模擬器使用)的奇數號埠查找模擬器。伺服器一旦發現 adb 守護程序 (adbd),便會與相應的埠建立連接。請注意,每個模擬器都使用一對按順序排列的埠 - 用於控制台連接的偶數號埠和用於 adb 連接的奇數號埠。例如:
模擬器 1,控制台:5554
模擬器 1,adb:5555
模擬器 2,控制台:5556
模擬器 2,adb:5557
依此類推
如上所示,在埠 5555 處與 adb 連接的模擬器與控制台監聽埠為 5554 的模擬器是同一個。
伺服器與所有設備均建立連接後,您便可以使用 adb 命令訪問這些設備。由於伺服器管理與設備的連接,並處理來自多個 adb 客戶端的命令,因此您可以從任意客戶端(或從某個腳本)控制任意設備。
要在通過 USB 連接的設備上使用 adb,您必須在設備的系統設置中啟用 USB 調試 (位於 開發者選項 下)。
在搭載 Android 4.2 及更高版本的設備上,「開發者選項」屏幕默認情況下處於隱藏狀態。如需將其顯示出來,請依次轉到 設置 > 關於手機 ,然後點按 版本號 七次。返回上一屏幕,在底部可以找到 開發者選項 。
在某些設備上,「開發者選項」屏幕所在的位置或名稱可能有所不同。
執行 adb devices 驗證設備是否已連接。如果已連接,您將看到設備名稱以「設備」形式列出。
一般情況下,adb 通過 USB 與設備進行通信,但您也可以在通過 USB 完成一些初始設置後,通過 WLAN 使用 adb,如下所述。
如果 adb 連接斷開:
如果有多個設備在運行,您在發出 adb 命令時必須指定目標設備。為此,請使用 devices 命令獲取目標設備的序列號。獲得序列號後,請結合使用 -s 選項與 adb 命令來指定序列號。如果您要發出很多 adb 命令,可以將 $ANDROID_SERIAL 環境變數設為包含序列號。如果您同時使用 -s 和 $ANDROID_SERIAL , -s 會替換 $ANDROID_SERIAL 。
$ adb -s emulator-5555 install helloWorld.apk
注意 :如果您在多個設備可用時發出命令但未指定目標設備,adb 會生成錯誤。
如果有多個可用設備,但只有一個是模擬器,請使用 -e 選項將命令發送至該模擬器。同樣,如果有多個設備,但只連接了一個硬體設備,請使用 -d 選項將命令發送至該硬體設備。
使用 forward 命令設置任意埠轉發,將特定主機埠上的請求轉發到設備上的其他埠。以下示例設置了主機埠 6100 到設備埠 7100 的轉發:
>adb forward tcp:6100 tcp:7100
您可以使用 pull 和 push 命令將文件復制到設備或從設備復制文件。與 install 命令(僅將 APK 文件復制到特定位置)不同,使用 pull 和 push 命令可將任意目錄和文件復制到設備中的任何位置。
如需從設備中復制某個文件或目錄(及其子目錄),請使用以下命令:
adb pull remote local
如需將某個文件或目錄(及其子目錄)復制到設備,請使用以下命令:
adb push loca remote
adb kill-server
您可以使用 shell 命令通過 adb 發出設備命令,也可以啟動互動式 shell。如需發出單個命令,請使用 shell 命令,如下所示:
adb [-d |-e | -s shell shell_command
在 adb shell 中,您可以使用 Activity 管理器 ( am ) 工具發出命令以執行各種系統操作,如啟動 Activity、強行停止進程、廣播 intent、修改設備屏幕屬性,等等。在 shell 中,相應的語法為:
您也可以直接從 adb 發出 Activity 管理器命令,無需進入遠程 shell。例如:
adb shell am start -a android.intent.action.VIEW
2. ADB工作原理
Android 調試橋 (adb) 是一種功能多樣的命令行工具。它可以讓你與設備進行通信,adb 命令可用於執行各種設備操作(例如安裝和調試應用),並提供對 Unix shell(可用來在設備上運行各種命令)的訪問許可權,它是一種C/S架構的程序,包括以下三個組件:
客戶端: 主要用於發送命令,adb client在開發機器上運行,你可以通過發出 adb 命令從命令行終端調用客戶端,它主要的工作是:解析像:push、shell、install等命令的參數,做必要預處理,然後轉移為指令或數據,發送給adb server。
守護程序 (adbd): 是運行在Android設備(真機/模擬器)後台的一個進程,它是由init進程啟動的,並且系統一開機就已經啟動,它的主要作用是處理來自 adb server的命令行請求,然後獲取對應Android設備的信息,再將結果返回給adb server。
伺服器 (adb server): 是運行在PC上的一個後台進程,它有兩個作用:
當啟動某個 adb 客戶端時,該客戶端會先檢查是否有 adb 伺服器進程正在運行,如果沒有,它會先啟動伺服器進程,伺服器在啟動後會與綁定和監聽PC上的 TCP 埠 5037 ,並處理 adb 客戶端發出的命令(所有 adb 客戶端通信均通過與PC上埠 5037 建立TCP連接通信)如下圖:
然後,adb server會與所有正在運行的設備建立連接,TCP連接方式下,它通過掃描 5555 到 5585 之間(該范圍供前 16 個模擬器使用)的奇數號埠查找模擬器,伺服器一旦發現 adb 守護程序 (adbd),便會與相應的埠建立連接,請注意,每個模擬器都使用一對按順序排列的埠(用於控制台連接的偶數號埠和用於 adb 連接的奇數號埠)
通過查看埠,可以看到adb server已在 5037 埠監聽 'LISTENING' 。
Client通過發送指令的方式,給到adb server端,adb server端進行判定,是否需要轉發到adbd進行處理。
3. Android區域網開啟無線ADB調試
摘要:本文主要是介紹在Android中如何開啟動無線wifi的調試功能,橋啟做敏衡注意本文只限在區域網內網中進行無線調試,不限在外網。其中可以通過設置 「service.adb.tcp.port」 的系統屬性進行開啟調試埠,以方便進行自定義調試功能。下面逐一進行開啟步驟進行講解( 轉旁搏自雲書 ):
1、獲取root許可權
// 通過在命令行中執行如下指令即可
$ adb root
2、設置ADB的調試模式為TCP,並設置調試埠號為5555
// 在命令行中輸入如下指令
$ adb shell setprop service.adb.tcp.port 5555
3、重啟adbd服務,以便重新打開5555埠和服務
// 執行如下指令
$ adb shell stop adbd
$ adb shell start adbd
4、經過以上3步後,便可以進行無線的ADB連接了
// 獲取完手機的ip後,執行connect ip + 埠即可。
$ adb connect 192.168.1.100:5555
4. 深入扒一扒安卓中的ADB命令
做過安卓開發的朋友或多或少都遇到過讓人厭惡的類似於「could not read ok from ADB Server」的錯誤。產生這個錯誤的原因可能多種多樣,每次遇到問題的時候,可能大部分人都和我一樣,去google一下這個問題別人是如何解決的。假設一下子找到解決了,就放過,下次在遇到的時候同樣的再去google一下就好了。但是,這樣不是正確的治學態度,為此孔祥子決定去扒一扒!
如下,是我在發現Android studio連接不上手機的時候,嘗試去啟動一個adb server,但是失敗了。
<pre>
根據問題提示,5037埠被佔用了。下面就來看看到底是哪一個埠被佔用。
<pre>
C:Userszxy>netstat -ano | findstr "5037"
TCP 127.0.0.1:5037 0.0.0.0:0 LISTENING 7912
TCP 127.0.0.1:5037 127.0.0.1:50025 ESTABLISHED 7912
TCP 127.0.0.1:5037 127.0.0.1:56501 ESTABLISHED 7912
TCP 127.0.0.1:50025 127.0.0.1:5037 ESTABLISHED 7120
TCP 127.0.0.1:56501 127.0.0.1:5037 ESTABLISHED 1264
</pre>
果然,5037被進程id為7912的進程佔用了。順藤摸瓜,看看到底什麼進程搗的鬼,
<pre>
C:Userszxy>tasklist | findstr "7912"
romaster_daemon.exe 7912 Console 1 3,024 K
</pre>
看到了嗎,是這個進程romaster_daemon.exe ,好了,到此為止找出來是哪一個程序了,下面打開任務管理器,kill掉就可以了。
Android adb(Android Debug Bridge) 是一個通用命令行工具,其允許您與模擬器實例或連接的 Android 設備進行通信。它可為各種設備操作提供便利,如安裝和調試應用,並提供對 Unix shell(可用來在模擬器或連接的設備上運行各種命令)的訪問。
該工具作為一個客戶端-伺服器程序,包括三個組件:
客戶端(adb client) ,該組件發送命令。客戶端在開發計算機上運行。可以通過發出 adb 命令從命令行終端調用客戶端。
這里說的客戶端,其實包含很廣泛。例如我們在命令行窗口運行一個adb命令,其實就是一個adb客戶端。還有,我們在android studio中通過點擊運行或者調試按鈕,app就安裝到手機裡面了,這個也可以看做是adb客戶端。對應的後台進程名稱 根據運行的程序的不同而不同。
後台程序 ,該組件在設備上運行命令。後台程序在每個模擬器或設備實例上作為後台進程運行。
也就說,開發者測試手機或者模擬器上運行的後台進程,負責接收命令,並運行命令。這個名字對應應該是adbd
具體如下
服務端 ,該組件管理客戶端和後台程序之間的通信。伺服器在開發計算機上作為後台進程運行。
您可以在 android_sdk/platform-tools/ 中找到 adb 工具
這個是在開發者自己的電腦上,運行的旨在管理adb客戶端和手機端的後台程序通信的一個管理程序。
具體流程如下
啟動一個 adb 客戶端時,此客戶端首先檢查是否有已運行的 adb 伺服器進程。如果沒有,它將啟動伺服器進程。當伺服器啟動時,它與本地 TCP 埠 5037 綁定,並偵聽從 adb 客戶端發送的命令—所有 adb 客戶端均使用埠 5037 與 adb 伺服器通信。
然後,伺服器設置與所有運行的模擬器/設備實例的連接。它通過掃描 5555 到 5585 之間(模擬器/設備使用的范圍)的奇數號埠查找模擬器/設備實例。伺服器一旦發現 adb 後台程序,它將設置與該埠的連接。請注意,每個模擬器/設備實例將獲取一對按順序排列的埠 , 這些埠包括用於控制台連接的偶數號埠和用於 adb 連接的奇數號埠。例如:
模擬器 1,控制台:5554
模擬器 1,adb:5555
模擬器 2,控制台:5556
模擬器 2,adb:5557
以此類推...
如上所示,在埠 5555 與 adb 連接的模擬器實例與偵聽埠 5554 的控制台的實例相同。
注意 ,這里所說的埠都是開發者電腦上的埠。
我的理解,偶數埠用來實際的數據傳輸。奇數埠用來發送控制命令和連接用的,例如調試。(如果不正確請指出)
當伺服器已設置與所有模擬器實例的連接後,您可以使用 adb 命令訪問這些實例。由於伺服器管理與模擬器/設備實例的連接,並處理來自多個 adb 客戶端的命令,因此,您可以從任意客戶端(或從某個腳本)控制任意模擬器/設備實例。
解讀一下
注意:上圖中的標識為黃色的區域的進程為後台守護進程。
Adb Server運行在開發者電腦上,任何adb client都要等待這個運行起來之後才能做後續的工作。電腦上的android studio或者eclipse等一些adb client和它交互。一旦adb client的命令被發送到手機中,並且被手機中的adbd接收之後,才能和手機交互。
然後在看一張更詳細的圖
這個圖,詳細的解釋了我運行adb命令中的詳細細節。
關於adb的詳細命令可以參考: http://adbshell.com/commands 這個網站詳。
看了之後,對於前面的5037被佔用,導致無法連接手機的原因,我想,我們應該有了更深層次的理解。同時對於其他情況的不能連接手機,我們下次就會有了自己的思考了。
5. android 怎麼監聽adb命令
通過監聽埠(5555), adbd程序。
查看:網頁鏈接
6. 如何通過PC端連接Android設備進行adb調試
在電腦上下個adb工具包安裝附加Google服務的,然後u *** 調試,電腦鍵盤win加r,然後後面的過程網上有教程
adb是什麼?adb有什麼用?adb工具如何用? 是用來管理模擬器和真機的通用調試工具,該工具功能強大,直接打開cmd即可使用adb命令,adb的全稱為Android Debug Bridge,是起到調試橋的作用,通過adb我們可以在Eclipse中方面通過DDMS來調試Android程序,說白了就是debug工具,adb的工作方式比較特殊,採用**Socket TCP 5554等埠的方式讓IDE和Qemu通訊,默認情況下adb會daemon相關的網路埠,所以當返盯我們運行Eclipse時adb進程就會自動運行,藉助adb工具我們可以管理設備或手機模擬器的狀態,還可以進行很多手機操作,如安裝軟體、系統升級、運行shell命令等等,其實簡而言說,adb就是連接Android手機與PC端的橋梁,可以舉游讓用戶在電腦上對手機進行全面的操作 二:ADB的主要功能有哪些? 1:查看當前模擬器或者Android設備實例的狀態 一般在使用前都會使用adb devices這個命令查看一下模擬器的狀態,通過這個命令得到ADB的回應信息,可以看到ADB作為回應為每個實例制定了相關的信息 1.1:emulator-5554為實例名稱 1.2:device為實例連接狀態,device表示此實例正與adb相連接,offline表示此實例沒有與adb連接或者無法響應 2:安裝和卸載APK應用程序 你可以從電腦上復制一個APK應用到模擬器或者Android設備上,通過adb install <path_to_apk>安裝軟體,adb uninstall <packageName>卸載軟體,如果你不知道這個包名,在AndroidManifest.xml里的找package=""就可以了 2.1: 先把apk文件拷貝到sdk目錄下的tools 2.2: 進入dos下切換到SDK的安裝路徑下的tools目錄 2.3 :執行安裝命令 adb install <path_to_apk> 發生的錯誤,因為我連接了真機,而且也打開了模擬器,所以adb給我的回應信息是「比一個多的驅動設備和模擬器」,我最後關閉掉了模擬器在運行安裝命令,就提示安裝成功了 卸載APK 3:從本機上復制文件到模擬器或者Android設備 adb push <本地路徑><遠程路徑>,<本地路徑>指的是自己的機器上或者模擬器上的目標文件,<遠程路徑>指的是遠程設備實例上的目標文件 4:從模擬器復制文件到模擬器或者Android設備 adb pull <遠程路徑><本地路徑>,<本地路徑>指的是自己的機器上或者模擬器上的目標文件,<遠程路徑>指的是遠程設備實例上的目標文件 5:使用shell命令 輸入adb shell就可以進入shell命令行了,可以使用一些常用的shell命令,如:ls命令列出了文件
首先講講Android設備,大家都知道開發用的最多的Android設備就是手機了,今天主要講兩個Android設備的adb連接調試,一個是手機,一個是電視機頂盒。
一:手機端的adb調試
首先保證手機跟電腦處於同一個無線網
手機的IP地址查詢:設置–關於手機–狀態信息,就可以看到路由器分給手機的IP地址了,接下來就是adb調試
如果想利用gdb工具來調試程序,在編譯程序時要正世銷使用-g選項。如:
debian:~/c# g -g serial.c -o serial
調試serial程序。
debian:~/c# gdb serial
1.首先讓android手機來監聽指定的埠:
這一步需要使用shell,因此手機上要有終端模擬器,不過網上很多,隨便找個就行了,依次敲入下列幾行:
su獲取root許可權
setprop service.adb.tcp.port 5555設置監聽的埠,埠可以自定義,如5554,5555是默認的
s adbd關閉adbd
start adbd重新啟動adbd2.
手機連接wifi並確保手機和電腦連接同一個網路
,記下手機的ip地址,假設為a.b.c.d
3.電腦上打開命令提示符,敲入以下命令:
利用adb來連接手機, 有兩種方式: 1, wifi, 2, u *** .
前提條件: 下載adb, 最好把對應的文件置於cmd.exe同目錄下。
1. 通過wifi, 利用adb來連接手機。
在pc的cmd中輸入命令:
adb connect 192.168.1.100
其中adb就是手機的ip. 如果連接成功, 就可以進入android的shell了。
2. 通過u *** , 利用adb來連接手機。
我把手機通過u *** 接上pc, 結果adb並沒有連接上手機, 於是下載了android驅動程序, 安裝了, 就好了。這樣, adb就連接上了手機, 開心啊。於是就可以利用adb shell進入手機的android系統了
首先安裝手機驅動,然後下載adb工具箱 命令提示符進入目錄 adb shell