有些时候,我们手头上没有数据线,这个时候想调试一个应用就不是很方便了。其实这个时候我们可以通过 wifi 来连接手机并调试。通过 wifi 连接手机并调试需要手机和电脑处于同一个局域网,要是公司没有 wifi 可以考虑自己买个无线路由。
当手机和电脑处于同一个局域网的时候可以用下面的命令来连接手机。
adb connect device-ip
device-ip
是你手机局域网的 ip 地址。
但是有时候我们发现还是连不上,这可能是你的手机没有打开 TCP/IP
连接方式,在 root 的情况下,可以尝试输入一下的命令。
setprop service.adb.tcp.port 5555
stop adbd
start adbd
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
的运行状况。
adb shell dumpsys activity top
上面的这个命令会打印最上面的 activity
的详情。
打印当前堆栈
am dumpheap /mnt/sdcard/xxxx.hprof
发送一个广播
adb shell am broadcast -a "action"
打开 wifi 调试,如果电脑和设备处于同一个局域网,没有数据线,可以试试这个命令打开局域网调试
adb tcpip 5555
通过 wifi 连接
adb connect device_ip_address
打印日志很常见也很重要的需求。
adb logcat
adb logcat -v time 可以打印日志时间
adb shell 命令相关功能
打开
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
输出结果字段说明
procs
r: 表示正在运行的进程数量
b: 表示等待 IO 的进程数量
memory
free 空闲的物理内存
mapped