Android 調(diào)試橋 (adb) ?,可與設(shè)備進行通信。adb 命令可用于執(zhí)行各種設(shè)備操作(例如安裝和調(diào)試應(yīng)用),并提供對 Unix shell(可用來在設(shè)備上運行各種命令)的訪問權(quán)限。它是一種客戶端-服務(wù)器程序,包括以下三個組件:
津市網(wǎng)站建設(shè)公司創(chuàng)新互聯(lián)建站,津市網(wǎng)站設(shè)計制作,有大型網(wǎng)站制作公司豐富經(jīng)驗。已為津市千余家提供企業(yè)網(wǎng)站建設(shè)服務(wù)。企業(yè)網(wǎng)站搭建\成都外貿(mào)網(wǎng)站建設(shè)要多少錢,請找那個售后服務(wù)好的津市做網(wǎng)站的公司定做!
客戶端: 用于發(fā)送命令。客戶端在開發(fā)機器上運行。可以通過發(fā)出 adb 命令從命令行終端調(diào)用客戶端。(可以通過它對Android應(yīng)用進行安裝、卸載、調(diào)試)
PC上的手機助手基本都是通過adb命令去完成的。有時候裝了這類手機助手的話,它自帶的adb程序可能會與Android SDK下的adb程序產(chǎn)生沖突,5037端口被占用,導(dǎo)致adb命令無法連接到設(shè)備。Windows下通過netstat -ano|findstr "5037"
守護程序 (adbd): 用于在設(shè)備上運行命令。守護程序在每個設(shè)備上作為后臺進程運行
執(zhí)行adb shell ps | grep adbd, 可以找到該后臺進程,Windows使用findstr替代grep.
adb nodaemon server
服務(wù)器(Service): 用于管理客戶端與守護程序之間的通信。服務(wù)器在開發(fā)機器上作為后臺進程運行
adb服務(wù)啟動后,Windows可以在任務(wù)管理中找到adb.exe; linux ps -ef | gref adb 可以查看service
一般都是通過這樣子的格式 adb [-d|-e|-s 設(shè)備序列號] 子命令
通常只有一臺設(shè)備就忽略 [-d|-e|-s ] 這一部分
這里介紹一些常用的命令:
獲取設(shè)備列表及設(shè)備狀態(tài)
獲取設(shè)備的狀態(tài)
注意:設(shè)備的狀態(tài)有 3 鐘,device?,?offline?,?unknown
device:設(shè)備正常連接
offline:連接出現(xiàn)異常,設(shè)備無響應(yīng)
unknown:沒有連接設(shè)備
結(jié)束 adb 服務(wù)
啟動 adb 服務(wù)
注意:通常兩個命令一起用,有時候我們開啟server會失敗,這是因為我們裝了的手機助手,豌豆莢或者其他軟件自帶有自己的adb,導(dǎo)致端口沖突開啟失敗。一般在連接出現(xiàn)異常,使用 adb devices 未正常列出設(shè)備, 設(shè)備狀態(tài)異常時使用 kill-server,然后運行 start-server 進行重啟服務(wù)。
打印 Android 的系統(tǒng)日志
打印 dumpsys、dumpstate、logcat 的輸出,也是用于分析錯誤輸出比較多
打印日志后重定向到一個文件中
安裝應(yīng)用,覆蓋安裝是使用 -r 選項
注意:有些adb版本無法支持安裝中文的apk
查看手機應(yīng)用包名
查看應(yīng)用對應(yīng)的apk文件在手機上的安裝位置則可以在上面的命令后加-f參數(shù)
卸載應(yīng)用,后面跟的參數(shù)是應(yīng)用的包名,請區(qū)別于?apk 文件名
'-k' means keep the data and cache directories , -k 選項,卸載時保存數(shù)據(jù)和緩存目錄
將 Android 設(shè)備上的文件或者文件夾復(fù)制到本地
adb pull /sdcard/test.txt C:\Users\Administrator\Desktop\log
推送本地文件至 Android 設(shè)備
獲取連接到的手機的序列號
獲取設(shè)備的連接狀態(tài)
等待設(shè)備連接成功
該命令將會阻塞一直到默認(rèn)連接的那部機器狀態(tài)變?yōu)閐evice,也就是連接成功。
其實adb shell命令就是調(diào)用的是Android設(shè)備中的system/bin目錄下的命令。
Android的內(nèi)核本身就是Linux,所以Android本身也支持Linux命令,但是因為是手機系統(tǒng),所以進行了一定的刪減,部分命令不支持,而不支持的部分,我們可以通過安裝busybox這個軟件進行。
如何在手機中執(zhí)行Shell命令?
每次都加上adb shell來進行命令的發(fā)送與執(zhí)行
先通過adb shell進入手機Shell執(zhí)行狀態(tài),然后直接輸入Linux命令。
使一個apk處于禁用狀態(tài),相當(dāng)于卸載了:
其中 PACKAGE_OR_COMPONENT的格式是 package/class, 如 com.UCMobile/.main.UCMobile
eg:adb shell su disable com.UCMobile/.main.UCMobile
同時我們在手機上發(fā)現(xiàn),UC瀏覽器的圖標(biāo)不見了
讓一個apk從禁用狀態(tài)恢復(fù)過來
其中 PACKAGE_OR_COMPONENT的格式是 package/class, 如 com.UCMobile/.main.UCMobileeg:
adb shell su enable com.UCMobile/.main.UCMobile
同時我們從手機上發(fā)現(xiàn),UC瀏覽器的圖標(biāo)又出現(xiàn)了。
查看一個apk所在的路徑
adb shell pm path com.UCMobile
查看手機中裝的所有的包
屏幕開始錄像并且儲存到/sdcard中,同時名字為demo.mp4
錄屏設(shè)置時長10s,命名為demo.mp4
注意:現(xiàn)在僅支持一部分手機錄屏,不支持的手機會出現(xiàn)以下提示
解決方法:
安裝了scrcpy之后,只需要輸入如下命令,即可錄取指定設(shè)備的屏幕
scrcpy -s device --render-expired-frames -Nr ./demo.pm4
--render-expired-frames:盡可能最大幀率
-N:不在PC端展示
-r:錄制mp4/mkv文件
關(guān)閉設(shè)備請求,開啟設(shè)備
設(shè)備關(guān)機以及重啟
pm(package manager)可以獲取一些安裝到Android設(shè)備上的app的信息
pm list packages 用法:list packages [?options]?filter
獲取所有的應(yīng)用的包名
列出系統(tǒng)應(yīng)用
列出第三方應(yīng)用
查看它們的關(guān)聯(lián)文件
adb shell pm list package -f
查看軟件包的安裝來源
pm dump?包名?很多dump信息
安裝應(yīng)用
apk如果在電腦用 adb install?
如果在Android設(shè)備上用 adb shell pm install
卸載應(yīng)用,同adb uninstall ,后跟包名
清除應(yīng)用數(shù)據(jù)
am(activity manager,字面意思就跟activity有關(guān),大家都知道Android的界面都是由一個個activity顯示的)
啟動一個Activity
獲取到package和launch_activity
AndroidSDK中aapt工具,檢索命令結(jié)果,可以獲取到package和launch_activity
這里涉及到一個點,如何找到程序的入口,首先你要知道是哪個activity才能啟動;
啟動華為系統(tǒng)相機
打開音樂播放器
播放指定音樂:
先停止目標(biāo)應(yīng)用,再啟動
等待應(yīng)用完成啟動
啟動網(wǎng)頁(android.intent.action.VIEW具體參考Android官網(wǎng))
結(jié)束應(yīng)用
input
模擬輸入,向獲得焦點的EditText控件輸入內(nèi)容
返回主界面
發(fā)送一個點擊操作的指令,參數(shù)是x y坐標(biāo)
從左往右滑動屏幕,?/從?100 100?經(jīng)歷300毫秒滑動到?200 200
長按操作,在?100 100?位置長按?1000毫秒
adb root 獲取 root 權(quán)限。
adb sideload
adb shell ps 打印進程狀態(tài)。
adb shell top 展現(xiàn)上層 CPU 進程信息。
adb shell getprop 獲取 Android 系統(tǒng)服務(wù)屬性
adb shell setprop 設(shè)置服務(wù)屬性。
adb shell dumpsys 獲取系統(tǒng)數(shù)據(jù)。
adb logcat 打印日志文件
adb shell ip 主要用于顯示一些數(shù)據(jù)
adb shell netstat 主要用于網(wǎng)絡(luò)統(tǒng)計。
adb shell ping 沒啥好說的,和 PC 的 ping 命令一樣的。
adb shell netcfg 通過配置文件配置和管理網(wǎng)絡(luò)連接。
adb shell cp 字面意思,很好理解,復(fù)制。
adb shell pwd 定位當(dāng)前的操作位置
adb shell mv 移動或者更名文件
adb shell mkdir 創(chuàng)建一個文件夾
adb shell rm 刪除文件或者目錄
adb shell ls 列出目錄內(nèi)容。
adb shell pm clear 清除應(yīng)用緩存。
adb shell pm path 打印 apk 的路徑。
adb usb 設(shè)置設(shè)備以 USB 形式連接 PC
adb kill-server 終止 adb 進程。
adb forward 端口映射,將 PC 端的某端口數(shù)據(jù)重定向到手機端的一個端口。
adb devices 主要是用于打印當(dāng)前連接的所有模擬器或者設(shè)備。
shutdown -h now 關(guān)閉系統(tǒng)
init 0 關(guān)閉系統(tǒng)
telinit 0 關(guān)閉系統(tǒng)
shutdown -h hours:minutes 按預(yù)定時間關(guān)閉系統(tǒng)
shutdown -c 取消按預(yù)定時間關(guān)閉系統(tǒng)
shutdown -r now 重啟
reboot 重啟
logout 注銷
文件和目錄
cd /home 進入 '/ home' 目錄'
cd .. 返回上一級目錄
cd ../.. 返回上兩級目錄
cd 進入個人的主目錄
cd ~user1 進入個人的主目錄
cd - 返回上次所在的目錄
pwd 顯示工作路徑
ls 查看目錄中的文件
ls -F 查看目錄中的文件
ls -l 顯示文件和目錄的詳細(xì)資料
ls -a 顯示隱藏文件
ls [0-9] 顯示包含數(shù)字的文件名和目錄名
tree 顯示文件和目錄由根目錄開始的樹形結(jié)構(gòu)
lstree 顯示文件和目錄由根目錄開始的樹形結(jié)構(gòu)
mkdir dir1 創(chuàng)建一個叫做 'dir1' 的目錄'
mkdir dir1 dir2 同時創(chuàng)建兩個目錄
mkdir -p /tmp/dir1/dir2 創(chuàng)建一個目錄樹
rm -f file1 刪除一個叫做 'file1' 的文件'
rmdir dir1 刪除一個叫做 'dir1' 的目錄'
rm -rf dir1 刪除一個叫做 'dir1' 的目錄并同時刪除其內(nèi)容
rm -rf dir1 dir2 同時刪除兩個目錄及它們的內(nèi)容
mv dir1 new_dir 重命名/移動 一個目錄
cp file1 file2 復(fù)制一個文件
cp dir/* . 復(fù)制一個目錄下的所有文件到當(dāng)前工作目錄
cp -a /tmp/dir1 . 復(fù)制一個目錄到當(dāng)前工作目錄
cp -a dir1 dir2 復(fù)制一個目錄
cp -r dir1 dir2 復(fù)制一個目錄及子目錄
ln -s file1 lnk1 創(chuàng)建一個指向文件或目錄的軟鏈接
ln file1 lnk1 創(chuàng)建一個指向文件或目錄的物理鏈接
touch -t 0712250000 file1 修改一個文件或目錄的時間戳 - (YYMMDDhhmm)
file file1 outputs the mime type of the file as text
iconv -l 列出已知的編碼
Android Debug Bridge,一般簡稱為adb,主要存放在sdk安裝目錄下的platform-tools文件夾中,它是一個非常強大的命令行工具,通過這個工具你能夠與你的android設(shè)備進行交互。同時這是一個包含了以下三部分的cs模式的程序:
1) adb client
從圖中,我們知道client是運行在PC端的,每當(dāng)我們發(fā)起一個adb命令的時候,就會開啟一個client程序。當(dāng)然,當(dāng)我們開啟DDMS或者ADT的時候,也會自動創(chuàng)建client。
當(dāng)我們開啟一個client的時候,它首先會去檢測后臺是否已經(jīng)有一個server程序在運行著,否則會開啟一個adb-server進程。
所有的client都是通過5037端口與adb-server進行通信的。
2)adb daemon(adbd)
從圖中,我們知道daemon是作為一個后臺進程運行在模擬器/真實Android設(shè)備中的。
daemon使用端口的范圍是5554-5585,每個模擬器/設(shè)備連接到PC端時,總會開啟這么一個后臺進程,并且為其分配了兩個連續(xù)的端口,比如:
Emulator 1, console: 5554
Emulator 1, adb: 5555
也正因為每個設(shè)備都分一組兩個端口,也已adb連接手機的最大數(shù)量為16。
說回端口的作用,在這兩個端口中,其中偶數(shù)端口是用于server 與設(shè)備進行交互的,可以讓server直接從設(shè)備中讀取數(shù)據(jù),而奇數(shù)端口是用來與設(shè)備的adbd進行連接通信的。
2) adb server
從圖中,我們同樣可以知道,server也是作為一個后臺的程序運行在PC端的,他負(fù)責(zé)管理client進程以及adb daemon之間的通信。
當(dāng)一個server開啟的時候,他會自動綁定并且監(jiān)聽5037端口,接收client通過該端口發(fā)送過來的命令。同時server還會對5555-5585間的奇數(shù)端口進行掃描,進行對已連接設(shè)備的定位。
1.2 常用的adb命令
首先我們先來介紹一下,adb命令的使用格式吧:
adb [-d|-e|-s ]
adb是必須的,接下來方括號[]里面的內(nèi)容不是必須的,最后才是我們需要執(zhí)行的命令操作,例如 adb -s emulator-5554 install UCBrowser.apk (這是安裝UC瀏覽器的意思)
下面先介紹下,前面幾個參數(shù)的含義吧:
-d: 讓唯一連接到該PC端的真實安卓設(shè)備執(zhí)行命令,如果發(fā)現(xiàn)USB中連接有多部設(shè)備,將會報錯
-e: 讓唯一連接到該PC端的模擬器執(zhí)行命令,如果發(fā)現(xiàn)開啟了多個模擬器,將會報錯
-s:通過設(shè)備的序列號進行指定設(shè)備執(zhí)行命令
如果設(shè)備只連接有一個設(shè)備或者一個模擬器的時候,可以不用聲明這三個參數(shù),adb默認(rèn)會讓這部唯一連接到的設(shè)備進行命令執(zhí)行。
ok,下面開始講解常用的命令吧:
1) 查看當(dāng)前PC端連接有多少設(shè)備:
adb devices
終端中的執(zhí)行結(jié)果為:
從上圖中,我們看到了設(shè)備有的兩種狀態(tài),其實執(zhí)行該命令,可能返回的狀態(tài)有三種:
I. device 設(shè)備已經(jīng)成功連接到了adb-server
II. offline 設(shè)備并沒有連接到adb或者沒有響應(yīng)
III. no device 并沒有設(shè)備/模擬器連接
2) 查看adb的版本
adb version
終端中的執(zhí)行結(jié)果為:
3) 給設(shè)備進行軟件的安裝
adb -s install
eg:
adb -s 99eb07a9 install D://Test.apk
終端中的執(zhí)行結(jié)果為:
除了上面這種方法,我們還有另外一個命令:
adb -s shell pm install [options]
其中[options]中最常用的選項是-r,代表著本次安裝是重新安裝,會保留用戶數(shù)據(jù)。
4) 卸載設(shè)備中已經(jīng)安裝的軟件
adb -s uninstall
eg:
adb -s 99eb07a9 uninstall cn.uc.test
終端中的執(zhí)行結(jié)果為:
除了上面這種方法,我們還有另外一個命令:
adb -s uninstall [options]
這里的options是-k,加上該參數(shù)表明卸載軟件后依舊保留用戶數(shù)據(jù)
5) 將數(shù)據(jù)從設(shè)備復(fù)制到PC中
adb -s pull
eg:
adb -s 99eb07a9 pull /sdcard/stericson-ls D://
終端的執(zhí)行結(jié)果:
在D://盤中我們也可以發(fā)現(xiàn)stericson-ls文件
6) 講數(shù)據(jù)從PC端復(fù)制到設(shè)備中
adb -s push
eg:
adb -s 99eb07a9 push d://stericson-ls /sdcard/
終端的執(zhí)行結(jié)果:
7) 獲取連接到的手機的序列號
adb get-serialno
終端的執(zhí)行結(jié)果:
8)獲取設(shè)備的連接狀態(tài)
adb -s get-state
eg:
adb -s 99eb07a9 get-stat
終端的執(zhí)行結(jié)果:
9) 等待設(shè)備連接成功
adb wait-for-device
該命令將會阻塞一直到默認(rèn)連接的那部機器狀態(tài)變?yōu)閐evice,也就是連接成功。
10) adb-server 的開啟與關(guān)閉
adb kill-server
adb start-server
終端的執(zhí)行結(jié)果:
有時候我們開啟server會失敗,這是因為我們裝了的手機助手,豌豆莢或者其他軟件自帶有自己的adb,導(dǎo)致端口沖突開啟失敗。主要關(guān)掉那些軟件并且殺掉那些軟件自帶的adb進程重來即可。
1.2 手機執(zhí)行Shell命令
眾所周知,Android的內(nèi)核本身就是Linux,所以Android本身也支持Linux命令,但是因為是手機系統(tǒng),所以進行了一定的刪減,部分命令不支持,而不支持的部分,我們可以通過安裝busybox這個軟件進行
填補。
下面我們講解下如何在手機中執(zhí)行Shell命令:
1) 每次都加上adb shell來進行命令的發(fā)送與執(zhí)行
adb shell
2) 先通過adb shell進入手機Shell執(zhí)行狀態(tài),然后直接輸入Linux命令,如圖:
1.3 Activity Manager 常用命令與參數(shù)說明
一般情況下,我們最常用它來進行app的開啟,并且傳遞一定的參數(shù)過去,比如:
adb shell am start -a android.intent.action.VIEW -n cn.uc.test/.MainActivity -d
在這里就不做太過詳細(xì)和重復(fù)的說明了
1.4 Package Manager 常用命令與參數(shù)說明
1) 使一個apk處于禁用狀態(tài),相當(dāng)于卸載了:
disable
其中 PACKAGE_OR_COMPONENT的格式是 package/class, 如 com.UCMobile/.main.UCMobile
eg:
adb shell su disable com.UCMobile/.main.UCMobile
終端執(zhí)行結(jié)果:
同時我們在手機上發(fā)現(xiàn),UC瀏覽器的圖標(biāo)不見了
2) 讓一個apk從禁用狀態(tài)恢復(fù)過來
enable
其中 PACKAGE_OR_COMPONENT的格式是 package/class, 如 com.UCMobile/.main.UCMobile
eg:
adb shell su enable com.UCMobile/.main.UCMobile
終端執(zhí)行結(jié)果:
同時我們從手機上發(fā)現(xiàn),UC瀏覽器的圖標(biāo)又回來啦。
3) 查看一個apk所在的路徑
pm path
eg:
adb shell pm path com.UCMobile
終端執(zhí)行結(jié)果:
4) 查看手機中裝的所有的包
pm list packages
再次不做過多的說明
1.5其他常用的adb命令
1) 屏幕錄像
例如,屏幕開始錄像并且儲存到/sdcard中,同時名字為demo.mp4
adb shell screenrecord /sdcard/demo.mp4
2) 關(guān)閉設(shè)備請求,開啟設(shè)備
adb shell stop
adb shell start
3)設(shè)備關(guān)機以及重啟
adb reboot
adb shutdown
本文題目:Linux添加adb命令 linux使用adb命令
文章鏈接:http://chinadenli.net/article8/hgoeop.html
成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供軟件開發(fā)、網(wǎng)站維護、云服務(wù)器、營銷型網(wǎng)站建設(shè)、網(wǎng)站策劃、小程序開發(fā)
聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時需注明來源: 創(chuàng)新互聯(lián)