◆版權聲明:本文出自胖喵~的博客,轉載必須注明出處。
轉載請注明出處:http://www.cnblogs.com/by-dream/p/4630046.html
寫在前面的話
感覺自己進入Android測試這行以來,雖然了解了不少Android的東西和自動化技術,但都比較零散。當然這也和半路入行,然后要快速的將自動化技術運用所學的業務上有關。於是決定利用工作之余的時間將Android測試相關知識進行一個整理,一來鞏固一下自己學到的東西;二來可以讓想學習Android測試的同學進行學習(希望能幫到新手)。
由於我之前學的是C++沒有學過Java,因此可能有些東西理解的有偏差,希望大家能批評指正。當然我會盡量用最淺顯的話講明白Android測試的。FAF7F0
什么是ADB
何為ADB呢? 為什么手機和電腦之間用usb連接后,就可以電腦上通過應用寶或者豌豆莢等手機助手軟件對手機進行操作?
答案就是:因為這些都依賴於ADB。ADB就是連接手機和電腦通信的橋梁,只要這個橋梁建立起來了,那么你就可以通過電腦來控制你的手機了。
即使你再討厭英語,還是不得不向現實低頭,乖乖的閱讀下文檔吧 http://developer.android.com/tools/help/adb.html
如果你真的不願意讀,或者不會英語,那么我就解釋一點吧,不過解釋的終究沒有谷歌的工程師寫的文檔全面,湊合着看吧。
ADB 全稱 Android Debug Bridge,我把它解釋為“安卓調試的橋梁”,他是由三部分組成:
1、客戶端 client:運行在你的電腦上,你可以通過shell來調用起一個客戶端。其他Android工具,例如ADT插件、DDMS都可以創建出一個客戶端
2、服務器 server:運行在你電腦的后台,負責管理client和daemon進行通信。
3、守護進程 daemon:運行在模擬器或者Android設備的后台。
但是它最終呈現給我們用的就是一個命令行的工具 ( command line tool ),通過它我們就可以和模擬器或者是Android設備進行通信。 它就在 <sdk>/platform-tools/ 這個目錄下:


每次啟動客戶端的時候,首先會檢查服務器是否已經在后台運行了,如果沒有,他就會啟動server進程;
如果server是開啟的,server就會綁定在 TCP 的 5037 端口然后監聽客戶端發出來的命令;
所有的client都是通過 5037 端口和server進行通信的。
USB調試
當我們通過USB數據線來使用ADB的時候,通常需要將 "設置"-"開發者選項"-"USB調試" 這個框勾上。

需要注意的是:在有些 Android 4.2.2版本以上,是隱藏了“開發者選項”的,因此需要在 “設置”-“關於手機”-“Android版本” 在這里連續點擊7次,然后“開發者選項”就出現了。突然發現好多手機的這里點擊后都有意想不到的效果,你願意把你手機這里點擊7次后出現的內容截圖發到我的留言板嗎?
ADB 命令
連上手機,配置好了環境變量(直接搜索“adb環境變量配置”會出一大堆)就可以使用命令了。下面列舉一下常用的命令
adb devices 查看當前連接設備
顯示當前連接的一個序號和狀態:

adb install <path_to_apk> 安裝apk文件
給的Apk的路徑是當前PC端文件所在的路徑:

adb -s <serialNumber> <command> 指定設備執行命令
serialNumber就是adb devices中的第一列的信息

adb pull <remote> <local> 將Android設備上的文件拉到本地
一般Android手機默認的存儲路徑是“/mnt/sdcard/”,我們把這里面的一個文件拉到C盤

然后我們去電腦的C盤下去看一眼:

通過Adb pull 命令復制出來的文件
adb push <local> <remote> 把本地文件復制到Android設備上
和 adb pull 剛好是一對相反的命令。

adb start-server 啟動adb的server adb kill-server 關閉adb的server
有點時候adb在沒有響應的時候,我們需要重啟adb,不過這種情況一般較少。

adb shell [shellCommand] 運行shell命令
眾所周知,Android是基於linux內核的,因此可以在Android的系統上運行shell命令
通過adb shell 可以進入手機的系統,然后執行一些linux的命令

當然也可以不進入系統,直接使用命令

例如adb shell下安裝和卸載命令是:
pm uninstall com.tencent.qq
pm install -r "/data/local/tmp/com.tencent.qq"
