Android adb你真的会用吗?
引言
本文基于Android官方文檔, 以及個(gè)人工作的使用經(jīng)驗(yàn), 總結(jié)下adb的常用用法, 備忘.
1, adb簡(jiǎn)介
adb全名Andorid Debug Bridge. 顧名思義, 這是一個(gè)Debug工具.
然而, 為何稱(chēng)之為Bridge呢? 因?yàn)閍db是一個(gè)標(biāo)準(zhǔn)的CS結(jié)構(gòu)的工具, 是要連接開(kāi)發(fā)電腦和你的調(diào)試手機(jī)的.包含如下幾個(gè)部分:
- Client端, 運(yùn)行在開(kāi)發(fā)機(jī)器中, 即你的開(kāi)發(fā)PC機(jī). 用來(lái)發(fā)送adb命令.
- Deamon守護(hù)進(jìn)程, 運(yùn)行在調(diào)試設(shè)備中, 即的調(diào)試手機(jī)或模擬器.
- Server端, 作為一個(gè)后臺(tái)進(jìn)程運(yùn)行在開(kāi)發(fā)機(jī)器中, 即你的開(kāi)發(fā)PC機(jī). 用來(lái)管理PC中的Client端和手機(jī)的Deamon之間的通信.
2, 常用用法
2.1 adb devices
列舉當(dāng)前連接的調(diào)試設(shè)備
2.2 adb logcat
打印log信息
| adb logcat | 打印log | / |
| adb logcat -c | 清除手機(jī)的log buffer | 有些手機(jī)權(quán)限控制, 不支持. |
| adb logcat -b <buffer> | 打印指定buffer的log信息 | buffer有: main(主log區(qū),默認(rèn)), events(事件相關(guān)的log), radio(射頻, telephony相關(guān)的log) |
| adb logcat -v <format> | 格式化輸出log | 常用的用adb logcat -v time顯示時(shí)間 |
| adb logcat -f <filename> | 輸出log到指定文件 |
2.3 adb install/uninstall
安裝卸載apk
// 安裝apk時(shí)指定apk file路徑2.4 adb pull/push
調(diào)試設(shè)備和開(kāi)發(fā)PC之間拷貝文件.
// 拷貝本地文件到調(diào)試設(shè)備中2.5 adb start/kill-server
啟動(dòng)/殺死adb簡(jiǎn)介中提到的Server端進(jìn)程.
由于adb并不穩(wěn)定, 有時(shí)候莫名的問(wèn)題掉線(xiàn)時(shí), 可以先kill-server, 然后start-server來(lái)確保Server進(jìn)程啟動(dòng). 往往可以解決問(wèn)題.
2.5 adb shell
進(jìn)入調(diào)試設(shè)備的shell界面, 此時(shí)可以使用調(diào)試設(shè)備中的很多指令. 下文高階用法中很多就是.
3, 高階用法
3.1 adb connect/disconnect
通過(guò)wifi進(jìn)行遠(yuǎn)程連接手機(jī)進(jìn)行調(diào)試的.
https://developer.android.com/studio/command-line/adb.html#wireless
需先連上usb模式, 開(kāi)啟遠(yuǎn)程調(diào)試模式:
$ adb tcpip 5555
3.2 adb shell am
am即activity manager.
該命令用來(lái)執(zhí)行一些系統(tǒng)動(dòng)作, 例如啟動(dòng)指定activity, 結(jié)束進(jìn)程, 發(fā)送廣播, 更改屏幕屬性等. 調(diào)試?yán)?
| start <Intent> | 根據(jù)intent指向啟動(dòng)Activity | Intent可以是顯示的指向activity, 也可以是ACTION方式, 并且可以添加flag, data等參數(shù)信息. |
| startservice <Intent> | 啟動(dòng)Service | 可以添加flag, data等參數(shù)信息. |
| broadcast <Intent> | 發(fā)送廣播 | 可以添加flag, data等參數(shù)信息. |
| monitor | 啟動(dòng)一個(gè)Crash和ANR的監(jiān)聽(tīng)器 | 如有Crash或ANR會(huì)在控制臺(tái)輸出相關(guān)信息. |
| force-stop <Package> | 強(qiáng)制停止該包相關(guān)的一切 | 傳入package name. |
| kill <Package> | 殺死該包相關(guān)的所有進(jìn)程 | 傳入package name. |
| kill-all | 殺死所有后臺(tái)進(jìn)程 | |
| display-size WxH | 改變顯示的分辨率 | 例如adb shell am display-size 1280x720, 手機(jī)可能不支持. |
| display-density <dpi> | 改變顯示的density | 例如adb shell am display-density 320, 手機(jī)可能不支持. |
3.3 adb shell pm
pm即package manager.
用來(lái)執(zhí)行package相關(guān)的操作, 例如安裝卸載, 查詢(xún)系統(tǒng)的安裝包等.
| list packages <Filter> | 列出滿(mǎn)足filter條件的所有包 | |
| list permissions <Group> | 列出該Group的所有權(quán)限 | |
| list features | 查看系統(tǒng)支持哪些feature | 例如藍(lán)牙, wifi, 攝像頭等. |
| install <Path>/uninstall <Package> | 安裝卸載 | |
| clear <Package> | 清除應(yīng)用數(shù)據(jù) |
3.4 adb shell screencap
截屏, 比截屏快捷鍵更加方便快捷.
3.5 adb shell screenrecord
錄屏, 做demo的話(huà), 可以很方便的用這個(gè)命名錄制視頻, 然后借助工具將其轉(zhuǎn)換成gif圖, 超贊. 如下:
screenrecord gifAndroid4.4及以上系統(tǒng)可用.
2.5 adb shell dumpsys
強(qiáng)大的dump工具, 可以輸出很多系統(tǒng)信息. 例如window, activity, task/back stack信息, wifi信息等.
探索Activity之launchMode和探索Activity之啟動(dòng)Intent flag和Affinity就是用adb shell dumpsys activity來(lái)輸出task信息的.
常用dumpsys:
| activity | 輸出app組件相關(guān)信息 | 還可以用細(xì)分參數(shù)獲得單項(xiàng)內(nèi)容, 下同. 例如adb shell dumpsys activity activities來(lái)獲取activity task/back stack信息. | activites, service, providers, intents, broadcasts, processes |
| alarm | 輸出當(dāng)前系統(tǒng)的alarm信息 | / | / |
| cpuinfo | 輸出當(dāng)前的CPU使用情況 | / | / |
| diskstats | 輸出當(dāng)前的磁盤(pán)使用狀態(tài) | / | / |
| batterystats | 電池使用信息 | / | / |
| package | package相關(guān)信息, 相當(dāng)于pm功能的集合 | 輸出諸如libs, features, packages等信息 | / |
| meminfo | 輸出每個(gè)App的內(nèi)存使用和系統(tǒng)內(nèi)存狀態(tài) | 可以指定包名, 例如adb shell dumpsys meminfo com.anly.githubapp | / |
| window | 輸出當(dāng)前窗口相關(guān)信息 | / | policy, animator, tokens, windows |
作者:anly_jun
鏈接:https://www.jianshu.com/p/5980c8c282ef
來(lái)源:簡(jiǎn)書(shū)
著作權(quán)歸作者所有。商業(yè)轉(zhuǎn)載請(qǐng)聯(lián)系作者獲得授權(quán),非商業(yè)轉(zhuǎn)載請(qǐng)注明出處。
轉(zhuǎn)載于:https://www.cnblogs.com/givemelove/p/8492391.html
總結(jié)
以上是生活随笔為你收集整理的Android adb你真的会用吗?的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: 计算平均数
- 下一篇: JavaScript-2(数组与字符串的