一、什么是ADB
ADB是Android-Sdk里的一個客戶端-服務器端程序,其中客戶端是我們操作的電腦, 服務器端是Android設備,它的全稱為Android Debug Bridge,就是起到調試橋的作用。通過這個橋我們可以管理設備或手機模擬器的狀態,還可以進行很多手機操作,如安裝軟件、系統升級、運行shell命令等等。
簡而言之,ADB就是連接Android手機與PC端的橋梁,可以讓用戶在電腦上對手機進行全面的操作。
二、安裝方法
電腦上需要安裝客戶端,客戶端包含在sdk里,而服務端設備上不需要安裝,只需要在手機上打開開發者選項并啟用USB調試功能即可。
對于Linux用戶有一個最簡單的安裝方法:在terminal下鍵入sudo apt-get install adb然后回車輸入密碼再回車,稍等片刻即可使用。
不過這樣我們就沒法知道adb具體的安裝位置了,雖然這也沒什么。對于好奇心爆棚的同學可以采用這樣的方法安裝:
1、將下載好的sdk解壓后放在“~目錄”或者其它任意目錄,然后修改~/.bash_profile文件,設置運行環境指向sdk的tools目錄。
2、具體是打開~/.bash_profile文件(如果沒有此文件也可以自行添加),然后在里面加入一行 export PATH=${PATH}:<你的sdk目錄>/tools,然后就可以使用adb命令了。
三、ADB常用命令
-
adb devices
這個命令是查看當前連接的設備, 連接到計算機的Android設備或者模擬器將會被顯示出來。
-
adb install
用來安裝軟件,將指定的apk文件安裝到設備上。
-
adb uninstall
用來卸載軟件,將指定包名的apk文件從設備上卸載。
-
adb shell
通過上面的命令,就可以進入設備或模擬器的shell環境中,在這個Linux Shell中,你可以執行各種Linux的命令,另外如果只想執行一條shell命令,可以采用這種方式:adb shell [command],如:adb shell dmesg會打印出內核的調試信息。
-
adb push 本地路徑 遠程路徑
用push命令可以把本機電腦上的文件或者文件夾復制到設備(手機)。
-
adb pull 遠程路徑 本地路徑
用pull命令可以把設備(手機)上的文件或者文件夾復制到本機電腦。
-
adb get-product
獲取設備的ID號
-
adb get-serialno
獲取設備的序列號
-
adb help
顯示幫助信息(包括各種命令用法與含義)
四、push 和 Install 的不同
adb push和adb install是apk包安裝的兩種方法,用法如下:
1.adb push XXX.apk /你想推送的路徑
2.adb install XXX.apk
顯而易見,兩者的區別是:
adb push可以自定義推送路徑,adb install 只能安裝在/data/app文件下。
其次,adb push 是將apk包復制到路徑下面,重啟后/system/app和/data/app下的apk包都會自動安裝。
adb install是將apk安裝到手機里,流程是:復制APK安裝包到data/app目錄下,解壓并掃描安裝包,把dex文件(Dalvik字節碼)保存到dalvik-cache目錄,并data/data目錄下創建對應的應用數據目錄(so文件也在./包名/lib下,或者/data/app-lib/包名)。
另外,install復制APK安裝包到data/app目錄下的過程中,會將apk名改為包名-1.apk,數字為android接收到的版本號。
其中對于/system文件夾比較容易碰到的問題是報read only file的錯誤,哪怕/system已經被你改成了777的權限,解決的方法是:1.adb shell 2.su 3.mount -o remount rw /system重新掛載一下/system文件系統
五、常用的抓取日志命令
捕獲Logcat輸出:
adb logcat -c && adb logcat -v time | tee logcat.txt | grep -i 7837
adb logcat -c && adb logcat -v time | tee logcat.txt | grep -E 'showImgWithUrl'
抓取崩潰日志:
logcat -s AndroidRuntime DEBUG
adb命令向設備復制導入、導出、刪除文件等
//導入文件復制文件
adb push 文件 目標文件路徑
adb push lo.log storage/sdcard0
//導出文件 mac默認是你的$home文件查看home文件方法 echo $HOME
adb pull storage/sdcard0/wifi_config.log
獲取序列號:
adb get-serialno
查看連接計算機的設備: adb devices
重啟機器: adb reboot
重啟到bootloader,即刷機模式: adb reboot bootloader
重啟到recovery,即恢復模式: adb reboot recovery
查看log: adb logcat
終止adb服務進程: adb kill-server
重啟adb服務進程: adb start-server
獲取機器MAC地址: adb shell cat /sys/class/net/wlan0/address
獲取CPU序列號:adb shell cat /proc/cpuinfo
安裝APK:adb install <apkfile> //比如:adb install baidu.apk
保留數據和緩存文件,重新安裝apk:adb install -r <apkfile>
//比如:adb install -r baidu.apk
安裝apk到sd卡:adb install -s <apkfile>
// 比如:adb install -s baidu.apk
卸載APK:adb uninstall <package>
//比如:adb uninstall com.baidu.search
卸載app但保留數據和緩存文件:adb uninstall -k <package>
//比如:adb uninstall -k com.baidu.search
啟動應用:adb shell am start -n <package_name>/.<activity_class_name>
查看設備cpu和內存占用情況:adb shell top
查看占用內存前6的app:adb shell top -m 6
刷新一次內存信息,然后返回:adb shell top -n 1
查詢各進程內存使用情況:adb shell procrank
殺死一個進程:adb shell kill [pid]
查看進程列表:adb shell ps
查看指定進程狀態:adb shell ps -x [PID]
查看后臺services信息:adb shell service list
查看當前內存占用:adb shell cat /proc/meminfo
查看IO內存分區:adb shell cat /proc/iomem
將system分區重新掛載為可讀寫分區:adb remount
從本地復制文件到設備:adb push <local> <remote>
從設備復制文件到本地:adb pull <remote> <local>
列出目錄下的文件和文件夾,等同于dos中的dir命令:adb shell ls
//進入文件夾,等同于dos中的cd 命令:
adb shell cd <folder>
重命名文件:adb shell rename path/oldfilename path/newfilename
刪除system/avi.apk:adb shell rm /system/avi.apk
刪除文件夾及其下面所有文件:adb shell rm -r <folder>
移動文件:adb shell mv path/file newpath/file
設置文件權限:
adb shell chmod 777 /system/fonts/DroidSansFallback.ttf
新建文件夾:adb shell mkdir path/foldelname
查看文件內容:adb shell cat <file>
查看wifi密碼:adb shell cat /data/misc/wifi/*.conf
清除log緩存:adb logcat -c
查看bug報告:adb bugreport
獲取設備名稱:adb shell cat /system/build.prop
查看ADB幫助:adb help
跑monkey:adb shell monkey -v -p your.package.name 500
感謝優秀的你跋山涉水看到了這里,不如關注下讓我們永遠在一起!