Android adb 命令學習記錄
文章目錄
通過 wifi 連接手機
有些時候,我們手頭上沒有數據線,這個時候想調試一個應用就不是很方便了。其實這個時候我們可以通過 wifi 來連接手機並調試。通過 wifi 連接手機並調試需要手機和電腦處於同一個局域網,要是公司沒有 wifi 可以考慮自己買個無線路由。
當手機和電腦處於同一個局域網的時候可以用下面的命令來連接手機。
adb connect device-ip
device-ip
是你手機局域網的 ip 地址。
但是有時候我們發現還是連不上,這可能是你的手機沒有打開 TCP/IP
連接方式,在 root 的情況下,可以嘗試輸入一下的命令。
setprop service.adb.tcp.port 5555
stop adbd
start adbd
強大的 dumpsys 命令
dumpsys
命令是一個很強大且有效的命令,可以做很多的事情,我們詳細說下
打印某個應用的內存信息
想查看某個應用內存信息的時候,可以嘗試 adb 連接手機後,輸入一下的命令:
adb shell dumpsys meminfo
package_name
package_name
是你的應用包名。輸入命令後大概會輸出一下的信息。
Applications Memory Usage (kB):
Uptime: 1119644 Realtime: 1119644
** MEMINFO in pid 2577 [package_name] **
Pss Private Private Swapped Heap Heap Heap
Total Dirty Clean Dirty Size Alloc Free
------ ------ ------ ------ ------ ------ ------
Native Heap 57222 57180 0 0 59736 46696 13039
Dalvik Heap 73199 73152 0 0 78501 64370 14131
Dalvik Other 1944 1944 0 0
Stack 964 964 0 0
Ashmem 18968 14920 0 0
Other dev 9 0 8 0
.so mmap 11524 1920 6296 0
.apk mmap 679 0 348 0
.ttf mmap 11 0 0 0
.dex mmap 9485 20 9336 0
.oat mmap 3678 0 1080 0
.art mmap 1765 1464 4 0
Other mmap 833 60 320 0
Unknown 22557 22556 0 0
TOTAL 202838 174180 17392 0 138237 111066 27170
App Summary
Pss(KB)
------
Java Heap: 74620
Native Heap: 57180
Code: 19000
Stack: 964
Graphics: 0
Private Other: 39808
System: 11266
TOTAL: 202838 TOTAL SWAP (KB): 0
Objects
Views: 1023 ViewRootImpl: 1
AppContexts: 4 Activities: 3
Assets: 6 AssetManagers: 6
Local Binders: 48 Proxy Binders: 54
Parcel memory: 12 Parcel count: 50
Death Recipients: 3 OpenSSL Sockets: 0
SQL
MEMORY_USED: 0
PAGECACHE_OVERFLOW: 0 MALLOC_SIZE: 62
App Summary
列出的是 app
的概要信息。
Objects
列出的是一些實例的個數,比如這個例子裏面 View 有 1023 個。
通過這些信息可以初步判斷 app
的運行狀況。
打印 Activity 的信息
adb shell dumpsys activity top
上面的這個命令會打印最上面的 activity
的詳情。
am 命令
打印當前堆棧
am dumpheap /mnt/sdcard/xxxx.hprof
發送一個廣播
adb shell am broadcast -a "action"
tcpip 命令
打開 wifi 調試,如果電腦和設備處於同一個局域網,沒有數據線,可以試試這個命令打開局域網調試
adb tcpip 5555
通過 wifi 連接
adb connect device_ip_address
打印日誌
打印日誌很常見也很重要的需求。
adb logcat
adb logcat -v time 可以打印日誌時間
GPU 呈現模式
打開
adb shell setprop debug.hwui.profile visual_bars
關閉
adb shell setprop debug.hwui.profile false
軟後殺掉進程,重新打開即可。
藍線: 表示繪製界面的時間,如果超過綠色橫線,那麼表示有掉幀
紅線: 表示渲染引擎計算界面花的時間,高度表示界面比較複雜
橙線: 表示 cpu 通知 gpu 完成繪製的時間,高度越高,表示 gpu 越忙。
具體意義可以參考 Android開發者選項——GPU呈現模式分析
過渡繪製
打開
adb shell setprop debug.hwui.overdraw show
關閉
adb shell setprop debug.hwui.overdraw false
無色: 沒有過度繪製。
藍色: 有一層過度繪製。
綠色: 有兩層過度繪製。
淺紅: 有三層過度繪製。
深紅: 有四層過度繪製。
性能分析
vmstat 命令
這個命令可以用來監控系統的整體情況
vmstat
輸出結果字段說明
procs
r: 表示正在運行的進程數量
b: 表示等待 IO 的進程數量
memory
free 空閒的物理內存
mapped