標籤:serial filter 不能 cells 未在 調試 str 多個 2.3
一. Adb命令
Adb全稱是Android Debug Bridge,翻譯過來就是安卓調試橋,一種多用途的命令列工具,可以串連模擬器或者真實的安卓裝置進行通訊,他是一個包括三個組成的用戶端-服務端程式
1.1 用戶端是運行在我們的開發機器上,通過adb命令可以從shell調用用戶端,其他Android工具,如ADT外掛程式和DDMS也可以建立adb命令的用戶端。
1.2 服務端是在開發機器後台啟動並執行進程。伺服器管理用戶端和運行在模擬器或者真實裝置上的adb守護(adb daemon)進程之間的通訊
1.3 adb daemon是一個運行在模擬器或者真實安卓裝置背景而守護進程
Adb命令檔案所在路徑<sdk>/platform-tools/
當你運行一個adb的用戶端的時候,首先會檢查adb的服務端是否在運行,如果沒有運行,那麼會自動開啟一個服務端進程。當服務端開啟後,他會綁定本地的tcp連接埠5037,並且通過5037連接埠監聽所有用戶端發過來的命令
Adb使用
類別 |
命令 |
說明 |
備忘 |
可選項 |
-d |
命令僅對USB裝置有效 |
如果有多個USB裝置就會返回錯誤 |
-e |
命令僅對運行中的模擬器有效 |
如果有多個運行中的模擬器就會返回錯誤 |
-s <serialNumber> |
命令僅對adb關聯的特定序號的模擬器或手機有效(例如 "emulator-5556"). |
如果不指定裝置就會返回錯誤 |
一般項 |
devices |
輸出所有關聯的模擬器或手機裝置列表 |
參見 Querying for Emulator/Device Instances以獲得更多資訊。 |
help |
輸出adb支援的命令 |
|
version |
輸出adb的版本號碼 |
|
調試項 |
logcat [<option>] [<filter-specs>] |
在螢幕上輸出日誌資訊 |
|
bugreport |
為報告bug,在螢幕上輸出dumpsys,dumpstate和 logcat資料 |
|
jdwp |
輸出有效JDWP進程資訊 |
可以使用 forward jdwp:<pid> 轉換連接埠以串連到指定的 JDWP 進程,例如: adb forward tcp:8000 jdwp:472 jdb -attach localhost:8000 |
資料項目 |
install <path-to-apk> |
安裝應用程式(用完整路徑指定.apk檔案) |
|
pull <remote> <local> |
從模擬器或手機COPY檔案到開發機 |
|
push <local> <remote> |
從開發機COPY指定的檔案到模擬器或手機 |
|
連接埠和網路項 |
forward <local> <remote> |
從本地連接埠轉換串連到模擬器或手機的指定連接埠 |
連接埠可以使用以下格式表示: tcp:<portnum> local:<UNIX domain socket name> dev:<character device name> jdwp:<pid> |
ppp <tty> [parm]... |
通過USB運行UPP <tty> —PPP流中的tty。例如:/dev/omap_csmi_ttyl。 [parm]... — 0到多個PPP/PPPD 選項,例如 defaultroute, local, notty等等。 注意不用自動啟動PPP串連 |
|
指令碼項 |
get-serialno |
輸出adb對象的序號 |
參見 Querying for Emulator/Device Instances以獲得更多資訊。 |
get-state |
輸出adb裝置的狀態 |
wait-for-device |
阻塞執行直到裝置已經串連,即裝置狀態是 device. |
可以在其他命令前加上此項,那樣的話adb就會等到模擬器或手機裝置已經串連才會執行命令,例如: 注意該命令並不等待系統完全啟動,因此不能追加需要在系統完全啟動才能執行的命令,例如install 命令需要Android包管理器支援,但它必須在系統完全啟動後才有效。下面的命令 會在模擬器或手機與adb發生串連後就執行install,但系統還沒有完全啟動,所以會引起錯誤。 |
服務端項 |
start-server |
檢測adb服務進程是否啟動,如果沒啟動則啟動它。 |
|
kill-server |
終止服務端進程 |
|
Shell |
shell |
在目標模擬器或手機上啟動遠程SHELL |
參見 Issuing Shell Commands以獲得更多資訊。 |
shell [<shellCommand>] |
在目標模擬器或手機上執行shellCommand然後退出遠程SHELL |
使用執行個體
1. –d 參數
-e 參數
-s < serialNumber > 參數,角括弧裡的內容是必須的
2. devices命令
注意裝置的狀態包含三種:
Offline(不能調試僅是串連,原因很可能是adb與安卓系統不匹配) device(正常狀態可調試) unauthorized(串連後不能調試,原因是未在手機上同意調試)
加上-l 參數會列出裝置的詳細資料,如果報錯是error:protocol fault(no status),那從工作管理員殺掉各種手機小幫手的進程
help 命令,詳細列出adb命令及參數的協助文檔
version 命令,顯示adb版本
3. logcat 命令,查看裝置日誌
如果只有一台裝置直接執行adb logcat就可以,
如果有多台,那麼需要指定某一個裝置執行adb –s 192.168.56.101 logcat
但是這個命令重新整理日誌會很快,我們的dos視窗不好查看,所以我們可以將結果重新導向到一個檔案,然後開啟檔案方便查看
查看logcat.txt檔案內容如下:
logcat 的-f參數是將日誌儲存到檔案,這個檔案是在裝置上,使用如下
logcat 本身會顯示出很多日誌來,那麼我們可以通過篩選來獲得我們想要的應用的日誌,直接使用adb logcat時的用法
先使用adb shell進入shell環境再logcat
bugreport命令,會將dumpsys,dumpstate以及logcat的資訊全部顯示
dumpsys:安卓系統命令,擷取android服務進程的各個資訊
dumpstate:安卓系統命令,系統狀態資訊,裡面比較全,包括手機當前的記憶體資訊、cpu資訊等等
使用和之前的一樣,可以重新導向到檔案
adb bugreport>Desktop\bugreport.log
單獨顯示dumpsys和dumpstate的資訊,使用如下:
adb shell dumpsys>Desktop\dumpsys.log
adb shell dumpstate>Desktop\dumpstate.log
4. install 命令,安裝app檔案到裝置
如果已經安裝了,需要再次安裝需要加參數-r,否則會失敗
有安裝就會有卸載uninstall
pull命令,從手機裝置COPY指定的檔案到開發機
push命令,從開發機copy指定檔案到裝置
5. start-server命令,檢查服務狀態,如果沒啟動那就啟動
kill-server 命令,殺死所有adb進程
通常當我們在執行adb時碰到error或者裝置狀態不對,可以嘗試重啟adb服務,也就是使用這兩命令,就猶如網管的重啟電腦大殺器一樣
6. shell命令,進入安卓shell環境,這裡的shell環境就是指安卓系統
shell <command> 命令,直接執行shell環境下的命令,例子如下:
這裡用的vmstat命令會顯示伺服器的狀態值,包括伺服器的CPU使用率,記憶體使用量,虛擬記憶體交換情況,IO讀寫情況
7. root 命令,以root身份重啟adbd守護進程,對於未獲得root許可權的手機,這個命令執行時會報錯的
usb 命令,在usb上重啟守護進程的監聽
tcpip <port> 命令,在特定連接埠上以tcpip協議重啟守護進程的監聽
下面執行個體示範手機wifi串連電腦
先使用usb串連手機和電腦,查看
再使用adb tcpip 8787 重啟守護進程
然後查看手機裝置的ip,這裡我的是192.168.1.109,注意這裡需要保持電腦ip和手機ip能夠互相ping通,使用adb connect 192.168.1.109:8787 串連裝置
再次查看串連的裝置
這裡顯示兩個,一個是usb的串連,一個是wifi串連,拔掉資料線,我們依然可以針對該裝置進行調試操作
斷開wifi串連命令
再次轉換為usb,使用命令adb usb即可
二. Dos命令
2.1 cd命令,切換目錄
注意切換盤符不能使用cd e:這樣的形式,必須直接使用e:就可以切換
cd workspace 進入e盤workspace目錄
cd ..返回上一級目錄,cd ..\..\ 返回上兩級目錄
2.2 dir 查看目前的目錄都有哪些檔案
2.3 md 建立目錄
rd /s /q testdir 刪除testdir這個目錄及其以下的所有檔案
type test.txt 查看檔案內容
del test.txt刪除檔案
2.4 netstat –ano|findstr 4723 查看連接埠佔用情況,下面表示該連接埠已佔用,最後一列的數字是該進程的id
taskkill -F -pid 7812 按照進程號強殺某進程
taskkill -F -im name 按照進程名稱強殺進程
三.安卓shell命令
3.1 cd命令,切換目錄
cd ..返回上一級
cd –返回上次的目錄
cd ~返回目前使用者的家目錄
pwd 命令,顯示當前所在目錄路徑
3.2 ls 命令顯示目前的目錄下的所有檔案(不包括隱藏檔案)
ll 命令是以上列表的形式顯示所有檔案(不包括隱藏檔案),注意第一列的第一個字元,-表示是檔案,d表示是目錄,ll實際上是ls –l的簡寫
3.3 rm –rf <檔案或者目錄>表示強制移除檔案或者目錄,-r表示遞迴刪除 –f表示強制不用詢問
mkdir <目錄名稱> 建立目錄
3.4 cat <檔案名稱> 查看檔案內容
Appium基礎知識(一)