⑴ 如何通過adb 啟動WIFI連接網路
1. 確保目標板和主機連接在同一區域網裡面
2. 使用netcfg查看網路狀態,如果乙太網沒有配置,請先配置好網路再進行下面的步驟
3. 在目標板信首上通過使用乙太網連接來配置adb守護進程,使用setprop來設置守護進程的埠號
# setprop service.adb.tcp.port 5555
4. 如果以上配置成功,再重啟目標板上的adbd服務滑此數
# stop adbd
# start adbd
5. 在主機端使用如下命令建立adb連接
export ADBHOST=<target's ip address>
adb kill-server
adb start-server
adb connect <target_ip_address>:5555
6. 使用扒芹如下命令確認設備連接成功
adb devices
設備連接成功後將出現設備序列號和名稱
⑵ 深入扒一扒安卓中的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被佔用,導致無法連接手機的原因,我想,我們應該有了更深層次的理解。同時對於其他情況的不能連接手機,我們下次就會有了自己的思考了。
⑶ 如何在android應用里執行adb 命令
ADB介面的作用主要是讓電腦等其它設備控制安卓系統的,所以,稱為「中間橋」;
不是為安卓自已用的,自已可直接執行稱為SHELL,這與ADB無關。
所以安卓JAVA不一定有封裝的ADB類。電腦上有ADB服務程序,埠5037,
它是中間程序,與安卓系統上守護進程(Daemon)通訊。
如果要在自已的手機上應該也能執行adb命令,應該直接跟守護進程
(Daemon)通訊了。網路上可以搜到的方法並不滿意。
樓主用exec執行CMD命令,這已不是ADB介面了,這是系統的SHELL了!!!
自已用socket/tcp直接發命令效果不知怎樣,地址用127.0.0.1,安卓daemon進程的埠
5555是奇數開始。
。。。。至於ADB對話協議網路可以搜到,建議試一試。
樓上其實要的是SHELL,並不是ADB,我搜到一篇文章,但我並沒有試過,
是否需要ROOT,不得而知,附上,你試一試 ,回個話。
滿意就採納!
⑷ 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
⑸ 使用adb命令通過手機IP地址連接電腦
使用無線WiFi連接
首先先了解一點底層的知識:
•以上屬性的值 > 0:adbd將監聽網路對應的埠(一般為5555)
•以上屬性的值 <=-1:adbd將監聽USB
接下來是連接步驟:
命令行輸入:adb connect (ip):5555
提示:unable to connect to (ip):5555
解決辦法:
1)手機與PC相連,執行以下命令:adb tcpip 5555
然後斷開USB
2)接著執行adb connect (ip):5555,這時候應該就能連接成功了
調試完成之後,輸入如下的命令斷開連接:
adb disconnect (ip):5555
ip:手機IP,去手機里就可以找到握粗喊啦
以上是網路大大告訴我的,自己連接的時候遇到了一些問題,下面簡單說下我遇到的問題以及是如何解決的,或許你也會遇到呦~~~~~
在連接ip的時凳橋候輸入命令:adb connect 192.169.102.148:5555
調試顯示unknown command device
說明埠(5037)段野被佔用了
解決辦法:
查看是否被佔用——輸入adb nodaemon server
輸入如下命令查看是哪個進程佔用的
netstat -ano | findstr "5037"
可以看到是PID為9476的進程
TCP 127.0.0.1:5037 0.0.0.0:0 LISTENING 9476
輸入 tasklist | findsty "9476"
顯示 adb.exe 9476 Console 2 3,084 K
然後結束進程 taskkill /f /pid 9476
顯示成功: 已終止 PID 為 9476 的進程
然後輸入 adb tcpip 5555
顯示 restarting in TCP mode port: 5555 表示連接成功
輸入 adb connect 192.162.102.148:5555
顯示 connected to 192.168.102.148:5555 表示連接成功
輸入adb disconnect 192.168.102.148:5555 表示斷開連接
然後再adb devices
List of devices attached
192.168.102.148:5555 device
然後,,,,,就是你說了算了~~~~~
⑹ 踩坑adb——我的一次使用adb命令的踩坑之旅
昨晚正在測case的時候,突然冒出來一同事(我們都叫他肖總),來了一句:BUG基(同事都叫我BUG基,你懂的),我這復現了一個問題,但是開發那邊說叫我把log導出來,我這不會導,你知道怎麼導嗎?
作為一隻BUG基,我怎麼可能會放過這個裝比的機會呢,哈哈。
叫肖總導log的那個開發啥也沒說,就只在jira系統的comments最後寫了一句「導出方法:adb pull/cache/recovery/ ./」。其實當時我是崩潰的,我擦,肖總,你妹,這開發不是說了導出方法了嗎?你直接復制粘貼打上去命令不就行了嗎?然而,裝比心理作怪,我還是決定了幫他。
那麼下一步是什麼?沒錯,是時候展現裝比的技術了!
拿過Pad的第一步,那當然是先裝驅動啦。沒驅動你怎麼使用adb命令?為什麼這么說呢。驅動一般指的是設備驅動程序(Device Driver),是一種可以使 計算機 和設備通信的特殊程序。相當於 硬體 的介面, 操作系統 只有通過這個介面,才能控制 硬體 設備的工作,假如某設備的驅動程序未能正確安裝,便不能正常工作。那麼ADB又是什麼東東?Android Debug Bridge,我們一般簡稱為adb,它是一個非常強大的命令行工具,通過這個工具你能夠與你的android設備進行交互。意思也就是說,ADB命令需要通過驅動程序提供的介面來控制硬體設備,因為我們的文件是存儲在硬體設備上的呀。
那裝驅動要在什麼狀態下安裝?廢話,肯定是開機狀態啦。當然在安裝驅動前,要先開啟開發者模式的ADB調試,這里我就不說為什麼了,自己想。
那再下一步就是我們要用開發給的adb命令,導出/cache/recovery/這個文件夾的內容。或許有人會問,這開發不是已經給了文件的路勁了嗎,直接在Pad上復制粘貼到SD卡又或者直接用PC從Pad復制粘貼到PC就可以了呀。對於這個,我只想說,廢話,這么簡單的,你會想不到嗎?你以為我是豬啊。然而我並不是豬,我是BUG基。
對於上面那個想法,條件並不成立,當我們連接Pad時,windows是屏蔽部分文件的,反正我這里是這個情況,而用Pad直接復制粘貼到SD卡也是不成立,當我復制的時候,會提示「操作失敗,目標無法復制」,至於為什麼會出現這個提示,請往下看。
既然上面兩個方法都不行,那我們就只有用adb命令了。
在執行操作之前,我們要先看移動設備是否跟PC連接,那麼就需要用adb devices這個命令查看當前連接的設備,這里可能返回的狀態有三種:
I.device設備已經成功連接到了adb-server
II.offline設備並沒有連接到adb或者沒有響應
III.no device並沒有設備/模擬器連接
這里說的三種狀態顯示的可能跟顯示情況不大一樣,譬如我連接是正常的,返回的是
或許有人知道這里的意思是什麼,但是是否有想到過前面的那個daemon是什麼呢?當然有人會說,只要復制粘貼會用就可以了,對於這個回答,我默默表示不回答。
這個daemon還得要從ADB說起,ADB包含了以下三部分的cs模式的程序:
而在解釋上圖的意思之前,我想先引入兩個概念,那就是埠和通信(已理解的可以略過)。
埠
計算機"埠"是英文port的譯義,可以認為是計算機與外界通訊交流的出口。其中硬體領域的埠又稱介面,如:USB埠、串列埠等。軟體領域的埠一般指網路中面向連接服務和無連接服務的通信協議埠,是一種抽象的軟體結構,包括一些數據結構和I/O(基本輸入輸出)緩沖區。
埠最主要的作用就是通信和數據傳輸,把數據報順利的傳送到目的主機是沒有問題的。那麼問題出在哪裡呢?我們知道大多數 操作系統 都支持多程序(進程)同時運行,那麼目的主機應該把接收到的數據報傳送給眾多同時運行的進程中的哪一個呢?顯然這個問題有待解決,埠機制便由此被引入進來。
本地 操作系統 會給那些有需求的進程分配協議埠(protocal port,即我們常說的埠),每個協議埠由一個正整數標識,如:80,139,445,等等。當目的主機接收到數據報後,將根據報文首部的目的埠號,把數據發送到相應埠,而與此埠相對應的那個進程將會領取數據並等待下一組數據的到來。說到這里,埠的概念似乎仍然抽象,那麼繼續跟我來,別走開。
埠其實就是隊, 操作系統 為各個進程分配了不同的隊,數據報按照目的埠被推入相應的隊中,等待被進程取用,在極特殊的情況下,這個隊也是有可能溢出的,不過操作系統允許各進程指定和調整自己的隊的大小。
通信
通信(Communication)就是信息的傳遞,是指由一地向另一地進行信息的傳輸與交換,其目的是傳輸消息。其實這里的通信,意思就是說用特定的邏輯信號,實現雙方的互相信息傳輸,譬如說在命令行輸入adb devices命令,意思就是說我想要對方輸出設備列表給我看,這里的輸入」adb devices」就是發送給對方的信號,而輸出的設備列表就是對方反饋回來的信號,這個整個過程就是通信的過程。
說了這么多,其目的就在於掃盲,下面我們來說上面提到的ADB三部分的cs模式的程序(我把上面的圖拉下來,防止大家看不到):
1) adb client
從圖中,我們知道client是運行在PC端的,每當我們發起一個adb命令的時候,就會開啟一個client程序。當然,當我們開啟DDMS或者ADT的時候,也會自動創建client。
當我們開啟一個client的時候,它首先會去檢測後台是否已經有一個server程序在運行著,否則會開啟一個adb-server進程。
所有的client都是通過5037埠與adb-server進行通信的。
2 ) adb daemon ( adbd )
從圖中,我們知道daemon是作為一個後台進程運行在模擬器/真實Android設備中的。
daemon使用埠的范圍是5554-5585,每個模擬器/設備連接到PC端時,總會開啟這么一個後台進程,並且為其分配了兩個連續的埠,比如:
Emulator 1,console: 5554
Emulator 1, adb:5555
也正因為每個設備都分一組兩個埠,也已adb連接手機的最大數量為16。
說回埠的作用,在這兩個埠中,其中偶數埠是用於server與設備進行交互的,可以讓server直接從設備中讀取數據,而奇數埠是用來與設備的adbd進行連接通信的。
3) adb server
從圖中,我們同樣可以知道,server也是作為一個後台的程序運行在PC端的,他負責管理client進程以及adb daemon之間的通信。
當一個server開啟的時候,他會自動綁定並且監聽5037埠,接收client通過該埠發送過來的命令。同時server還會對5555-5585間的奇數埠進行掃描,進行對已連接設備的定位。
完成了上面一大堆吧啦吧啦的掃盲,大家應該知道了圖1的意思了吧,那麼我們就要解決問題了。
我們來看開發給我們的adb命令
不知大家是否看到使用adb命令都要在前面輸入adb,譬如開發給的「adb pull /cache/recovery/ ./」這個命令就有adb在前面。那麼為什麼要在命令前面加上一個adb呢,原因在於如果我們不加adb,windows系統會默認為對windows執行命令,而不是通過ADB命令行工具對手機執行操作命令。後面的「pull /cache/recovery/ ./」通過前面學習linux命令結構(linux命令結構為command [options] [arguments...])大概可知道pull指的是命令動作,後面那兩個,指的其實就是參數,/cache/recovery/指的是Pad設備的文件路徑,而./指的是當前運行命令行的路勁,譬如下面的提到的C:\Users\301001958這個路徑。
好了,繼續回到我們的裝比之路,剛開始的時候,我不小心把」 adb pull /cache/recovery/ ./ 」打成了「adb pull /cache/recovery/./」,也就是,我沒有把中間的空格打上,結果彈出了這樣的提示,啊,真是瞎了我的眼……
於是,我馬上改過來,修改成了「adb pull /cache/recovery/ ./」,結果還是彈出了一樣的提示。
我擦,這怎麼辦怎麼辦,難道真的要裝比不成,反遭雷劈?別急,我們先來看看這里提示的意思,這里的這個remote的意思是指的遠端設備,在這指的就是Pad,而object '/cache/recovery/' does not exist的意思就是說Pad的/cache/recovery/這個文件夾對象不存在。
這咋回事啊?怎麼會就不存在呢?於是乎,我再進入Recovery mode查看,得到的結果如下:
我擦,這怎麼回事?明明有這個文件夾的存在,於是我再次開機在命令行輸入adb -help,驗證一下這個adb命令的用法,結果吧啦吧啦的出現了一大坨黑色的字,看著都頭暈啊,不過還是讓我找到了想要的信息,如下圖:
看到了這里,我瞬間臉黑了,我靠,這完全就是跟我想的那樣沒錯嘛,怎麼就說文件夾對象不存在呢。
於是我還是找上了大家最喜歡的——度娘。找了一番,找到了一個似乎有用的信息,如下圖:
正如上面所說,難道是因為沒有文件夾沒有讀寫許可權?於是,我又輸入了adb remount,得出結果如下:
額,看到這里,我不想說話了,不過這里,已經算是弄出了點端倪,大家應該也知道了前面直接在Pad的系統裡面復制提示無法復制了吧,最主要就是不夠許可權的原因,因為一旦系統運行文件隨便被更改,系統就有可能出現運行錯誤或者崩潰。只是我竟天真的以為這里的root,指的是我們經常用的那個一鍵root軟體,只要用軟體一鍵root了,就可以快樂的解決問題了,可想而知,得到的結果依然是像是碰到了蜜蜂窩一樣,被蟄著千瘡百孔啊,面目全非……這些什麼鳥一鍵root軟體,根本就無法root得了我們這些開發中的Pad嘛,還試了一大堆都不行,至於為什麼,暫時我沒有深究,大家有空可以去研究研究。
到了這里,我只想說:蓋倫,請給我一把大寶劍……
無奈,問題最終還是得要解決,於是我繼續再找度娘玩去了。
經過了一番查找,我似乎終於找到了答案如何獲得root許可權了,就是僅僅只需要用「adb root」這個命令就可以讓adb獲得root許可權,二話不說,趕緊開干啊,輸入adb root,得出的結果是:adbd restart as root,我擦,藍瘦香菇,明明只需要幾個命令……就可以獲得root許可權,我為什麼能搞得那麼復雜,我不行了,蓋倫,借你的大寶劍扶我起來……
但是似乎有一件很重要的事是,正因為我前面用了一鍵root軟體,我才能在adb命令使用root許可權,前面的功夫也並不是全是無用功,來到這里,我們就只需執行最後一步就是用開發給的命令,把文件拖出來,不過,我把開發給的最後一個參數改了,也就是「./」這個參數,改成了我自己電腦桌面的一個文件夾路徑,如我在桌面起了個叫做FileLog的文件夾,如我FileLog的文件夾路徑為C:\Users\301001958\Desktop\FileLog,那麼我執行的就是adb pull /cache/recovery/ C:\Users\301001958\Desktop\FileLog,然後按Enter執行命令,文件就巴拉拉的復制到了我的FileLog文件夾裡面,到這里問題解決完畢。
回顧整個過程,踩的坑著實不少,一個簡簡單單的命令,一個簡簡單單的操作,都能把自己搞死,不過在這整個過程裡面,也是一個不斷擴展知識的過程,也是一個不斷挑戰自我的過程,到最後的解決,是滿心的舒暢。
這整個過程里,給我最大的感悟是,樂於助人,助的有時候不僅僅是別人,助的也是自己,因為在這個過程中,我的知識獲得了拓展,獲得了成長,也獲得了成就感,獲得了興趣,用此文,希望能助正在踩坑的你,走出這個坑,不管是大坑還是小坑,又或者是神坑,在這個寫作分享的過程中,也讓我對整個知識面理解更全面更深了一步。
文章寫得不是那麼好,太長了點,請輕噴。
致正在踩坑的你我。 2017.02.26 By BUG基
⑺ 如何通過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
⑻ linux下關於adb命令的一些知識
Android Debug Bridge,一般簡稱為adb,主要存放在sdk安裝目錄下的platform-tools文件夾中,它是一個非常強大的命令行工具,通過這個工具你能夠與你的android設備進行交互。同時這是一個包含了以下三部分的cs模式的程序:
1) adb client
從圖中,我們知道client是運行在PC端的,每當我們發起一個adb命令的時候,就會開啟一個client程序。當然,當我們開啟DDMS或者ADT的時候,也會自動創建client。
當我們開啟一個client的時候,它首先會去檢測後台是否已經有一個server程序在運行著,否則會開啟一個adb-server進程。
所有的client都是通過5037埠與adb-server進行通信的。
2)adb daemon(adbd)
從圖中,我們知道daemon是作為一個後台進程運行在模擬器/真實Android設備中的。
daemon使用埠的范圍是5554-5585,每個模擬器/設備連接到PC端時,總會開啟這么一個後台進程,並且為其分配了兩個連續的埠,比如:
Emulator 1, console: 5554
Emulator 1, adb: 5555
也正因為每個設備都分一組兩個埠,也已adb連接手機的最大數量為16。
說回埠的作用,在這兩個埠中,其中偶數埠是用於server 與設備進行交互的,可以讓server直接從設備中讀取數據,而奇數埠是用來與設備的adbd進行連接通信的。
2) adb server
從圖中,我們同樣可以知道,server也是作為一個後台的程序運行在PC端的,他負責管理client進程以及adb daemon之間的通信。
當一個server開啟的時候,他會自動綁定並且監聽5037埠,接收client通過該埠發送過來的命令。同時server還會對5555-5585間的奇數埠進行掃描,進行對已連接設備的定位。
1.2 常用的adb命令
首先我們先來介紹一下,adb命令的使用格式吧:
adb [-d|-e|-s ]
adb是必須的,接下來方括弧[]裡面的內容不是必須的,最後才是我們需要執行的命令操作,例如 adb -s emulator-5554 install UCBrowser.apk (這是安裝UC瀏覽器的意思)
下面先介紹下,前面幾個參數的含義吧:
-d: 讓唯一連接到該PC端的真實安卓設備執行命令,如果發現USB中連接有多部設備,將會報錯
-e: 讓唯一連接到該PC端的模擬器執行命令,如果發現開啟了多個模擬器,將會報錯
-s:通過設備的序列號進行指定設備執行命令
如果設備只連接有一個設備或者一個模擬器的時候,可以不用聲明這三個參數,adb默認會讓這部唯一連接到的設備進行命令執行。
ok,下面開始講解常用的命令吧:
1) 查看當前PC端連接有多少設備:
adb devices
終端中的執行結果為:
從上圖中,我們看到了設備有的兩種狀態,其實執行該命令,可能返回的狀態有三種:
I. device 設備已經成功連接到了adb-server
II. offline 設備並沒有連接到adb或者沒有響應
III. no device 並沒有設備/模擬器連接
2) 查看adb的版本
adbversion
終端中的執行結果為:
3) 給設備進行軟體的安裝
adb -s install
eg:
adb -s 99eb07a9 install D://Test.apk
終端中的執行結果為:
除了上面這種方法,我們還有另外一個命令:
adb -s shell pm install [options]
其中[options]中最常用的選項是-r,代表著本次安裝是重新安裝,會保留用戶數據。
4) 卸載設備中已經安裝的軟體
adb -s uninstall
eg:
adb -s 99eb07a9 uninstall cn.uc.test
終端中的執行結果為:
除了上面這種方法,我們還有另外一個命令:
adb -s uninstall [options]
這里的options是-k,加上該參數表明卸載軟體後依舊保留用戶數據
5) 將數據從設備復制到PC中
adb -s pull
eg:
adb -s 99eb07a9 pull /sdcard/stericson-ls D://
終端的執行結果:
在D://盤中我們也可以發現stericson-ls文件
6) 講數據從PC端復制到設備中
adb -s push
eg:
adb -s 99eb07a9 push d://stericson-ls /sdcard/
終端的執行結果:
7) 獲取連接到的手機的序列號
adb get-serialno
終端的執行結果:
8)獲取設備的連接狀態
adb -s get-state
eg:
adb -s 99eb07a9 get-stat
終端的執行結果:
9) 等待設備連接成功
adb wait-for-device
該命令將會阻塞一直到默認連接的那部機器狀態變為device,也就是連接成功。
10) adb-server 的開啟與關閉
adb kill-server
adb start-server
終端的執行結果:
有時候我們開啟server會失敗,這是因為我們裝了的手機助手,豌豆莢或者其他軟體自帶有自己的adb,導致埠沖突開啟失敗。主要關掉那些軟體並且殺掉那些軟體自帶的adb進程重來即可。
1.2 手機執行Shell命令
眾所周知,Android的內核本身就是Linux,所以Android本身也支持Linux命令,但是因為是手機系統,所以進行了一定的刪減,部分命令不支持,而不支持的部分,我們可以通過安裝busybox這個軟體進行
填補。
下面我們講解下如何在手機中執行Shell命令:
1) 每次都加上adb shell來進行命令的發送與執行
adb shell
2) 先通過adb shell進入手機Shell執行狀態,然後直接輸入Linux命令,如圖:
1.3 Activity Manager 常用命令與參數說明
一般情況下,我們最常用它來進行app的開啟,並且傳遞一定的參數過去,比如:
adb shell am start -a android.intent.action.VIEW -n cn.uc.test/.MainActivity -d
在這里就不做太過詳細和重復的說明了
1.4 Package Manager 常用命令與參數說明
1) 使一個apk處於禁用狀態,相當於卸載了:
disable
其中 PACKAGE_OR_COMPONENT的格式是 package/class, 如 com.UCMobile/.main.UCMobile
eg:
adb shell su disable com.UCMobile/.main.UCMobile
終端執行結果:
同時我們在手機上發現,UC瀏覽器的圖標不見了
2) 讓一個apk從禁用狀態恢復過來
enable
其中 PACKAGE_OR_COMPONENT的格式是 package/class, 如 com.UCMobile/.main.UCMobile
eg:
adb shell su enable com.UCMobile/.main.UCMobile
終端執行結果:
同時我們從手機上發現,UC瀏覽器的圖標又回來啦。
3) 查看一個apk所在的路徑
pm path
eg:
adb shell pm path com.UCMobile
終端執行結果:
4) 查看手機中裝的所有的包
pm list packages
再次不做過多的說明
1.5其他常用的adb命令
1) 屏幕錄像
例如,屏幕開始錄像並且儲存到/sdcard中,同時名字為demo.mp4
adb shell screenrecord /sdcard/demo.mp4
2) 關閉設備請求,開啟設備
adb shell stop
adb shell start
3)設備關機以及重啟
adb reboot
adb shutdown
⑼ 無線adb怎麼使用
要用網路調試Android需要設備已經獲取root許可權。
如果手機沒有命令行工具,請先在手機下載安裝一或困個終端模擬器,然後打開,輸入命令:
$su
#stop adbd
#setprop判襲service.adb.tcp.port 5555
#start adbd
(點擊查看大圖)
如果需要進入adb shell,直接在命令行輸入:
adb shell
關閉網路調試也很簡單,在手機命令中輸入命令:
$su
#stop adbd
#setpropservice.adb.tcp.port0
#start adbd
⑽ 常用的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