6.Appium 安卓自動化(adb 命令)

Android 調試橋

adb ( Android Debug Bridge)是一個通用命令行工具,其容許您與模擬器實例或鏈接的 Android 設備進行通訊。它可爲各類設備操做提供便利,如安裝和調試應用。html

Tips: 在 android_sdk/platform-tools/ 中找到 adb 工具,而後根據其具體的路徑配置好環境變量。而後啓動cmd 輸入‘adb’便可查看是否配置成功。android

adb 的工做原理

啓動一個 adb 客戶端時,此客戶端首先檢查是否有已運行的 adb 服務器進程。若是沒有,它將啓動服務器進程。當服務器啓動時,它與本地 TCP 端口 5037 綁定,並偵遵從 adb 客戶端發送的命令—全部 adb 客戶端均使用端口 5037 與 adb 服務器通訊。shell

啓用 adb 調試

要在經過 USB 鏈接的設備上使用 adb,您必須在設備系統設置中啓用 USB debugging(位於 Developer options 下)。windows

在運行 Android 4.2 及更高版本的設備上,Developer options 屏幕默認狀況下處於隱藏狀態。如需將其顯示出來,請轉到 Settings > About phone 並點按 Build number 七次。返回上一屏幕,在底部能夠找到 Developer options。緩存

注:當您鏈接運行 Android 4.2.2 或更高版本的設備時,系統將顯示一個對話框,詢問您是否接受容許在這臺計算機上調試的 RSA 密鑰。這種安全機制能夠保護用戶設備,由於它能夠確保只有在您可以解鎖設備並確認對話框的狀況下才能執行 USB 調試和其餘 ADB 命令。安全

adb經常使用命令

查看adb版本

adb version服務器

查看設備信息

adb devicesapp

鏈接模擬器

adb connect + 模擬器端口號工具

進入sell

adb shellui

進入指定設備shell

adb -s + 端口 sell

root知識小科普

「To err is human, but to really foul up everything, you need root password.」

「人非聖賢孰能無過,可是擁有root密碼就真的萬劫不復了。」

root用戶是系統中惟一的超級管理員,它具備等同於操做系統的權限。一些須要root權限的應用,譬如廣告阻擋,卸載系統預裝App是須要root權限的。可問題在於root比windows的系統管理員的能力更大,足以把整個系統的大部分文件刪掉,致使系統徹底毀壞,不能再次使用。因此,用root進行不當的操做是至關危險的,輕微的能夠死機,嚴重的甚至不能開機。因此,在Unix、Linux及Android中,除非確實須要,通常狀況下都不推薦使用root。

在設備安裝apk

adb install | -r <apkName>  -r 覆蓋原安裝文件 -s 能夠指定設備

默認安裝

adb install +包的路徑

覆蓋安裝

adb install -r +包的路徑

指定設備安裝

adb -s +指定設備端口 install +包的路徑(能夠指定多個包的路徑) 

如遇到報錯:Failure [INSTALL_FAILED_INVALID_URI]

解決方案: cmd命令行下執行如下命令:

  • 第一步、adb remount
  • 第二步、adb shell
  • 第三步、cd /data
  • 第四步、chmod 777 local
  • 從新安裝apk,ok了。

卸載apk

1.首先進入設備的/data/app目錄找到app包名

adb shell

cd /data/app/

 

2.執行命令刪除

adb uninstall  | -k  <apkName>  卸載軟件名稱

adb uninstall  com.wandoujia.phoenix2

Tips:安裝後的包名系統會在末尾加上-1之類的數字,要去掉才能夠成功卸載。 軟件名稱爲包名,不要包含.apk
-k 加 -k 參數,爲卸載軟件可是保留配置和緩存文件.

查看設備上面安裝的應用包名

adb shell pm list package

管道搜索

adb sell

adb sell pm list package | grep "安裝時app.apk 的名稱"

 

文件讀取寫入

1.將文件從PC寫入到設備

adb push +本地文件路徑 +設備文件存放路徑

eg

adb push C:\Users\Shuqing\Desktop\kyb.txt /sdcard

C:\Users\Shuqing\Desktop\kyb.txt: 1 file pushed. 0.1 MB/s (462 bytes in 0.005s)

2.將文件從設備讀取到PC

adb push +設備文件路徑 +本地文件存放路徑 

eg:

adb pull /sdcard/server.log  C:\Users\Shuqing\Desktop

/sdcard/server.log: 1 file pulled. 0.0 MB/s (196 bytes in 0.004s)

注意:因爲權限問題,不能直接pull到電腦磁盤根目錄,不然會報錯:

C:\Users\Shuqing>adb pull /sdcard/server.log  D:\\

adb: error: cannot create file/directory 'D:\\': No such file or directory

屏幕截圖

adb shell screencap +圖片存放設備路徑(/sdcard/screen.png)

adb pull +圖片存放設備路徑(/sdcard/screen.png)  +電腦想存放圖片的路徑(C:\Users\Shuqing\Desktop)

adb服務啓動和關閉

adb kill-server                 關閉adb服務

adb start-server            開啓adb服務

Tips:若是5037端口被佔用可使用以下命令釋放端口

 

C:\Users\Shuqing> netstat -ano | findstr "5037"

  TCP    127.0.0.1:5037         0.0.0.0:0              LISTENING       11072

  TCP    127.0.0.1:5037         127.0.0.1:59519        TIME_WAIT       0

 
taskkill -f -pid XXX
 

小結

  1. adb是自動化很是重要的一個工具
  2. 目前不少PC客戶端手機助手也是基於adb鏈接原理進行封裝的。
  3. 能夠將經常使用的adb命令封裝成bat命令,隨時能夠運行。如:

adbdevices.bat

adb devices

pause

AdbConnect.bat

adb connect +設備端口如(127.0.0.1:62025)

adb devices

pause

參考文檔

相關文章
相關標籤/搜索