Android學習第一天 adb常用命令

2021-08-18 04:44:58 字數 4392 閱讀 2406

平時開發android應用 的時候,我們都會用到包含在android sdk中一系列的工具,或許我們通過eclipse去呼叫,又或許,我們自己通過開啟終端進行手動輸入並且執行,下面我們來一起學習下這些工具的開發使用吧。

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間的奇數埠進行掃瞄,進行對已連線裝置的定位。

首先我們先來介紹一下,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的版本

adb version

終端中的執行結果為:

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程序重來即可。

眾所周知,android的核心本身就是linux,所以android本身也支援linux命令,但是因為是手機系統,所以進行了一定的刪減,部分命令不支援,而不支援的部分,我們可以通過安裝busybox這個軟體進行

填補。下面我們講解下如何在手機中執行shell命令:

1) 每次都加上adb shell來進行命令的傳送與執行

adb shell

2) 先通過adb shell進入手機shell執行狀態,然後直接輸入linux命令,如圖:

adb shell am start -a android.intent.action.view -n cn.uc.test/.mainactivity -d

詳情的可以參考:

在這裡就不做太過詳細和重複的說明了

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.ucmobileeg:

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) 螢幕錄影

例如,螢幕開始錄影並且儲存到/sdcard中,同時名字為demo.mp4

adb shell screenrecord /sdcard/demo.mp4

2) 關閉裝置請求,開啟裝置

adb shell stop

adb shell start

3)裝置關機以及重啟

adb reboot

adb shutdown

android基礎 第一天

一 android體系結構 密碼 d7g8 二 兩種虛擬機器的比較 密碼 8gyf 三 sdk介紹 密碼 xqam 四 eclipse環境搭建 密碼 yt4z 五 模擬器的介紹 密碼 j7wg 六 第乙個android專案 上 密碼 jnz1 七 第乙個android專案 下 密碼 i6td 八 a...

學習第一天

知識是學會的,不是教會的 程式設計 驗證性或體驗性 創造性 學程式設計的4個階段 1.能看懂別人的 除錯別人的 2.能修改別人的 3.能拷貝別人的 做自己的事 4.能自己設計編寫 方法 多讀 做記錄 執行 修改 執行 練習,光說不練假把式 刷oj總結 寫部落格或許是個不錯的選擇 學生和已經工作的程式...

php學習第一天

第一章 安裝 php語言的核心特性是強大的字串和資料處理工具,還提供物件導向的支援。可以用c寫自己的php擴充套件模組。php能做什麼?伺服器指令碼,命令列指令碼,客戶端gui應用,安裝php環境 www.php.net,www.apache.org 2解壓後放在同一目錄下 3對apache和php...