一、什么是ADB
ADB是Android-Sdk里的一個客戶端-服務(wù)器端程序意敛,其中客戶端是我們操作的電腦, 服務(wù)器端是Android設(shè)備膛虫,它的全稱為Android Debug Bridge稍刀,就是起到調(diào)試橋的作用。通過這個橋我們可以管理設(shè)備或手機(jī)模擬器的狀態(tài)账月,還可以進(jìn)行很多手機(jī)操作,如安裝軟件剧劝、系統(tǒng)升級抓歼、運(yùn)行shell命令等等。
簡而言之萄喳,ADB就是連接Android手機(jī)與PC端的橋梁蹋半,可以讓用戶在電腦上對手機(jī)進(jìn)行全面的操作。
二染突、安裝方法
電腦上需要安裝客戶端,客戶端包含在sdk里觉痛,而服務(wù)端設(shè)備上不需要安裝薪棒,只需要在手機(jī)上打開開發(fā)者選項(xiàng)并啟用USB調(diào)試功能即可。
對于Linux用戶有一個最簡單的安裝方法:在terminal下鍵入sudo apt-get install adb然后回車輸入密碼再回車俐芯,稍等片刻即可使用吧史。
不過這樣我們就沒法知道adb具體的安裝位置了,雖然這也沒什么贸营。對于好奇心爆棚的同學(xué)可以采用這樣的方法安裝:
1钞脂、將下載好的sdk解壓后放在“~目錄”或者其它任意目錄,然后修改~/.bash_profile文件冰啃,設(shè)置運(yùn)行環(huán)境指向sdk的tools目錄。
2焚刚、具體是打開~/.bash_profile文件(如果沒有此文件也可以自行添加)扇调,然后在里面加入一行 export PATH=${PATH}:<你的sdk目錄>/tools,然后就可以使用adb命令了痴腌。
三燃领、ADB常用命令
-
adb devices
這個命令是查看當(dāng)前連接的設(shè)備, 連接到計算機(jī)的Android設(shè)備或者模擬器將會被顯示出來剥悟。
-
adb install
用來安裝軟件,將指定的apk文件安裝到設(shè)備上略板。
-
adb uninstall
用來卸載軟件慈缔,將指定包名的apk文件從設(shè)備上卸載。
-
adb shell
通過上面的命令瓤檐,就可以進(jìn)入設(shè)備或模擬器的shell環(huán)境中娱节,在這個Linux Shell中,你可以執(zhí)行各種Linux的命令谴古,另外如果只想執(zhí)行一條shell命令稠歉,可以采用這種方式:adb shell [command],如:adb shell dmesg會打印出內(nèi)核的調(diào)試信息恩敌。
-
adb push 本地路徑 遠(yuǎn)程路徑
用push命令可以把本機(jī)電腦上的文件或者文件夾復(fù)制到設(shè)備(手機(jī))横媚。
-
adb pull 遠(yuǎn)程路徑 本地路徑
用pull命令可以把設(shè)備(手機(jī))上的文件或者文件夾復(fù)制到本機(jī)電腦月趟。
-
adb get-product
獲取設(shè)備的ID號
-
adb get-serialno
獲取設(shè)備的序列號
-
adb help
顯示幫助信息(包括各種命令用法與含義)
四、push 和 Install 的不同
adb push和adb install是apk包安裝的兩種方法穷躁,用法如下:
1.adb push XXX.apk /你想推送的路徑
2.adb install XXX.apk
顯而易見因妇,兩者的區(qū)別是:
adb push可以自定義推送路徑,adb install 只能安裝在/data/app文件下狡忙。
其次址芯,adb push 是將apk包復(fù)制到路徑下面窜觉,重啟后/system/app和/data/app下的apk包都會自動安裝北专。
adb install是將apk安裝到手機(jī)里拓颓,流程是:復(fù)制APK安裝包到data/app目錄下,解壓并掃描安裝包驶睦,把dex文件(Dalvik字節(jié)碼)保存到dalvik-cache目錄啥繁,并data/data目錄下創(chuàng)建對應(yīng)的應(yīng)用數(shù)據(jù)目錄(so文件也在./包名/lib下,或者/data/app-lib/包名)酬核。
另外适室,install復(fù)制APK安裝包到data/app目錄下的過程中,會將apk名改為包名-1.apk捣辆,數(shù)字為android接收到的版本號汽畴。
其中對于/system文件夾比較容易碰到的問題是報read only file的錯誤,哪怕/system已經(jīng)被你改成了777的權(quán)限鲁猩,解決的方法是:1.adb shell 2.su 3.mount -o remount rw /system重新掛載一下/system文件系統(tǒng)
五罢坝、常用的抓取日志命令
捕獲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命令向設(shè)備復(fù)制導(dǎo)入、導(dǎo)出隙券、刪除文件等
//導(dǎo)入文件復(fù)制文件
adb push 文件 目標(biāo)文件路徑
adb push lo.log storage/sdcard0
//導(dǎo)出文件 mac默認(rèn)是你的$home文件查看home文件方法 echo $HOME
adb pull storage/sdcard0/wifi_config.log
獲取序列號:
adb get-serialno
查看連接計算機(jī)的設(shè)備: adb devices
重啟機(jī)器: adb reboot
重啟到bootloader闹司,即刷機(jī)模式: adb reboot bootloader
重啟到recovery,即恢復(fù)模式: adb reboot recovery
查看log: adb logcat
終止adb服務(wù)進(jìn)程: adb kill-server
重啟adb服務(wù)進(jìn)程: adb start-server
獲取機(jī)器MAC地址: adb shell cat /sys/class/net/wlan0/address
獲取CPU序列號:adb shell cat /proc/cpuinfo
安裝APK:adb install <apkfile> //比如:adb install baidu.apk
保留數(shù)據(jù)和緩存文件拟枚,重新安裝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但保留數(shù)據(jù)和緩存文件:adb uninstall -k <package>
//比如:adb uninstall -k com.baidu.search
啟動應(yīng)用:adb shell am start -n <package_name>/.<activity_class_name>
查看設(shè)備cpu和內(nèi)存占用情況:adb shell top
查看占用內(nèi)存前6的app:adb shell top -m 6
刷新一次內(nèi)存信息恩溅,然后返回:adb shell top -n 1
查詢各進(jìn)程內(nèi)存使用情況:adb shell procrank
殺死一個進(jìn)程:adb shell kill [pid]
查看進(jìn)程列表:adb shell ps
查看指定進(jìn)程狀態(tài):adb shell ps -x [PID]
查看后臺services信息:adb shell service list
查看當(dāng)前內(nèi)存占用:adb shell cat /proc/meminfo
查看IO內(nèi)存分區(qū):adb shell cat /proc/iomem
將system分區(qū)重新掛載為可讀寫分區(qū):adb remount
從本地復(fù)制文件到設(shè)備:adb push <local> <remote>
從設(shè)備復(fù)制文件到本地:adb pull <remote> <local>
列出目錄下的文件和文件夾,等同于dos中的dir命令:adb shell ls
//進(jìn)入文件夾蜒滩,等同于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
設(shè)置文件權(quán)限:
adb shell chmod 777 /system/fonts/DroidSansFallback.ttf
新建文件夾:adb shell mkdir path/foldelname
查看文件內(nèi)容:adb shell cat <file>
查看wifi密碼:adb shell cat /data/misc/wifi/*.conf
清除log緩存:adb logcat -c
查看bug報告:adb bugreport
獲取設(shè)備名稱:adb shell cat /system/build.prop
查看ADB幫助:adb help
跑monkey:adb shell monkey -v -p your.package.name 500
感謝優(yōu)秀的你跋山涉水看到了這里俯艰,不如關(guān)注下讓我們永遠(yuǎn)在一起锌订!