Android 工具:ADB 使用總結

ADB全稱Android Debug Bridge,Android 開發中, 我們在開發過程中經常使用這個工具來操作Android系統,是 Android 開發者必須掌握的。

功能介紹

ADB主要功能有:

  1. 在Android設備上運行Shell(命令行)

  2. 管理模擬器或設備的端口映射

  3. 在計算機和設備之間上傳/下載文件

  4. 將電腦上的本地APK軟件安裝至Android模擬器或設備上

使用配置

一個這么常用工具, Google 早就在 Android SDK 中幫我們集成了,就放在\android-sdk-windows\platform-tools這個目錄下面,我們只需要配置一下環境變量就可以使用了。作為開發者,配置環境變量這種小兒科我就不贅述了......

ADB 用法

查詢模擬器或手機狀態

查看 adb 服務端連接的模擬器或手機可以幫助更好的使用 adb 命令,這可以通過 devices 命令來列舉當前連接的設備:

adb devices

執行結果是 adb 為每一個設備輸出以下狀態信息:

序列號(serialNumber):由 adb 創建用于唯一標識設備的字符串,格式是 <設備類型>-<端口號>,例如: emulator-5554

連接狀態(state),其值是可能是下面的任意一種:

offline — 未連接或未響應

device — 表示設備已經連接到服務端。但需要注意的是,這個狀態并不表示 Android 系統已經完全啟動起來并且可操作,因為系統在啟動的過程中就已經連接 adb ,但這個狀態是正常的可操作狀態。

no device – 表示沒有任何設備連接(樓主測試過程中沒有碰到過 no device 的情況,沒連接設備就沒任何輸出)

操作指定模擬器或手機

如果有多個模擬器或手機正在運行,當使用 adb 命令的時候就需要指定目標設備,這可以通過使用 -s 選項參數實現,用法如下:

adb -s < serialNumber > < command >

// 例如在 emulator-5556 設備上安裝應用:

adb -s emulator-5556 install xxxx.apk

這里補充一點, Google 官方給出在多設備的情況下,不用 -s 參數指定目標設備的快捷方式。

adb -e install xxxx.apk

//同理,如果有多個設備,但只有一個真機,可以使用如下命令快速發送命令

adb -d install xxxx.apk

安裝應用

使用 adb install 命令可以從開發用電腦中復制應用程序并且安裝到模擬器或手機上, adb install 命令必須指定待安裝的.apk文件的路徑。

adb install [-lrtsdg] < path_to_apk >

(-l : 鎖定該程序)

(-r : 重新安裝該程序,保留應用數據)

(-t : allow test packages)

(-s : 將應用安裝到 SD卡,不過現在手機好像都沒有 SD卡 了吧)

(-d : 允許降版本號安裝,當然只有 debug 包才能使用)

(-g : 安裝完默認授予所有運行時權限)

卸載應用

上面介紹了安裝應用命令,既然有安裝應用的命令,那當然有卸載應用的命令。卸載應用命令的格式如下:

// < package > 表示要卸載應用的包名

adb uninstall [-k] < package > (-k:不刪除程序運行所產生的數據和緩存目錄)

與模擬器或手機傳輸文件

使用 adb 命令 pull 和 push 能從 Android 設備拷貝或復制文件到 Android 設備。跟 install 命令不同,pull 和 push 命令允許拷貝和復制文件到任何位置。

  • pull

adb pull [-a] < remote_path > < local_path > (-a:保留文件時間戳及屬性)

舉個栗子,我想把應用中的數據庫文件復制到本地目錄下:

adb pull sdcard/contacts_app.db

  • push

adb push < local_path > < remote_path >

舉個栗子,我想把桌面的 log.txt 復制到手機的 dev 目錄下:

adb push .../log.txt /dev

無線調試

平時我們都是使用 USB調試,但是有時候設備老化或者數據線連接不穩定, USB 調試就不好使了。這時我們就想能不能拋開這根數據線呢?當然可以,adb 也是支持通過 WIFI 進行調試了,使用方式如下:

  • 首先,你要將 Android 設備和 裝有 adb 的電腦連接到同一 Wi-Fi 網絡。其次,你需要配置好防火墻,否則很有可能導致 Wi-Fi 調試不能使用。

  • 使用 USB數據線 將手機連接到電腦。

  • 設置目標設備監聽 5555端口 的 TCP/IP 連接。

    adb tcpip 5555

  • 斷開手機與電腦的 USB 連接。

  • 查看手機的 IP地址 。

  • 通過 IP 連接手機

    adb connect < device_ip_address >

這時就可以使用 adb devices 確認手機是否連接到電腦上了。

通過以上步驟,就可以開心的享用 WiFi 調試了。如果沒有正常連接,可以按照下面的步驟檢查:

  1. 檢查電腦和手機是否還在同一個 WiFi 網絡下
  2. 重新執行一次 adb connect <device_ip_address> 命令
  3. 重啟 adb 服務,然后重頭再來
  4. 檢查是否是防火墻的設置問題

查看設備的 log

在日常開發中,我們經常要查看日志進行調試我們的app,adb 提供了強大的日志查看命令。 adb logcat 命令格式是這樣的:

adb logcat [選項] [過濾項]

(-s : 設置輸出日志的標簽, 只顯示該標簽的日志)

(-f : 將日志輸出到文件, 默認輸出到標準輸出流中, -f 參數執行不成功)

(-r : 按照每千字節輸出日志, 需要 -f 參數, 不過這個命令沒有執行成功)

(-n : 設置日志輸出的最大數目, 需要 -r 參數, 這個執行 感覺 跟 adb logcat 效果一樣)

(-v : 設置日志的輸出格式, 注意只能設置一項)

(-c : 清空所有的日志緩存信息)

(-d : 將緩存的日志輸出到屏幕上, 并且不會阻塞)

(-t : 輸出最近的幾行日志, 輸出完退出, 不阻塞)

(-g : 查看日志緩沖區信息)

(-b : 加載一個日志緩沖區, 默認是 main, 下面詳解)

(-B : 以二進制形式輸出日志)

舉幾個常用的栗子,場景如下:

  • 應用調試過程中,我想看全部日志,并想看日志輸出時間。

adb logcat -v time

  • 日志輸出后發現在終端控制臺里查看不太方面,想輸出到文件中查看。

adb logcat -v time >xxx.txt

  • 應用崩潰了,我現在只關心崩潰日志。

adb logcat -v time *:e

  • 崩潰解決了,心安了,現在想看某一個邏輯完整的執行過程(日志TAG:######)。

adb logcat -s ######

  • 前面打了很多日志了,這時我想清空一下緩存區的日志,開始打新的日志。

adb logcat -c

這里就介紹這些基本且常用的命令的使用,如果你想深入了解一下,可以到 Android調試橋 具體學習。

重啟手機

有時候,手動關機太麻煩,那就來個命令行吧~

adb reboot

以 root 權限開啟 adb 守護進程

很多時候我們需要 root 手機以獲得高權限操作手機,此時就需要下面的命令了:

// 此命令會重啟守護進程

adb root

// root 成功后需要重新掛在磁盤
adb remount

開啟或關閉 adb 服務

在某些情況下需要重啟 adb 服務來解決問題,比如 adb 無響應。這時你可以通過 adb kill-server 來實現這一操作。

adb kill-server

kill 之后,通過 adb start-server 或者任意 adb 命令來重啟 adb 服務。

adb start-server

總結

以上就是 adb 命令的常見用法,都是本人日常開發中使用頻率高的。有些不常用的 adb 命令沒有介紹,更多 adb 用法請見:Android調試橋。文中如有紕漏,歡迎大家留言指出。

最后編輯于
?著作權歸作者所有,轉載或內容合作請聯系作者
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發布,文章內容僅代表作者本人觀點,簡書系信息發布平臺,僅提供信息存儲服務。
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市,隨后出現的幾起案子,更是在濱河造成了極大的恐慌,老刑警劉巖,帶你破解...
    沈念sama閱讀 228,197評論 6 531
  • 序言:濱河連續發生了三起死亡事件,死亡現場離奇詭異,居然都是意外死亡,警方通過查閱死者的電腦和手機,發現死者居然都...
    沈念sama閱讀 98,415評論 3 415
  • 文/潘曉璐 我一進店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人,你說我怎么就攤上這事?!?“怎么了?”我有些...
    開封第一講書人閱讀 176,104評論 0 373
  • 文/不壞的土叔 我叫張陵,是天一觀的道長。 經常有香客問我,道長,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 62,884評論 1 309
  • 正文 為了忘掉前任,我火速辦了婚禮,結果婚禮上,老公的妹妹穿的比我還像新娘。我一直安慰自己,他們只是感情好,可當我...
    茶點故事閱讀 71,647評論 6 408
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著,像睡著了一般。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發上,一...
    開封第一講書人閱讀 55,130評論 1 323
  • 那天,我揣著相機與錄音,去河邊找鬼。 笑死,一個胖子當著我的面吹牛,可吹牛的內容都是我干的。 我是一名探鬼主播,決...
    沈念sama閱讀 43,208評論 3 441
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了?” 一聲冷哼從身側響起,我...
    開封第一講書人閱讀 42,366評論 0 288
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后,有當地人在樹林里發現了一具尸體,經...
    沈念sama閱讀 48,887評論 1 334
  • 正文 獨居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內容為張勛視角 年9月15日...
    茶點故事閱讀 40,737評論 3 354
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發現自己被綠了。 大學時的朋友給我發了我未婚夫和他白月光在一起吃飯的照片。...
    茶點故事閱讀 42,939評論 1 369
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖,靈堂內的尸體忽然破棺而出,到底是詐尸還是另有隱情,我是刑警寧澤,帶...
    沈念sama閱讀 38,478評論 5 358
  • 正文 年R本政府宣布,位于F島的核電站,受9級特大地震影響,放射性物質發生泄漏。R本人自食惡果不足惜,卻給世界環境...
    茶點故事閱讀 44,174評論 3 347
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧,春花似錦、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 34,586評論 0 26
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至,卻和暖如春,著一層夾襖步出監牢的瞬間,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 35,827評論 1 283
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留,地道東北人。 一個月前我還...
    沈念sama閱讀 51,608評論 3 390
  • 正文 我出身青樓,卻偏偏與公主長得像,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當晚...
    茶點故事閱讀 47,914評論 2 372

推薦閱讀更多精彩內容