*#*#4636#*#* 进入手机后台信息统计页面
ADB的基本使用
adb启动失败
-
端口被占用
adb默认端口5037 ,有时因为装了某个程序导致此端口一直占用,adb不能正常使用,无限等待。
查看占用端口的服务:
C:\Users\sanbo>netstat -aon|findstr "5037" //查看占用5037端口的占用者
TCP 127.0.0.1:5037 0.0.0.0:0 LISTENING 4352解决方法:
1> 任务管理器中找到占用端口的服务,停止运行
2> 修改注册表,把adb端口更改
打开注册表 运行 regedit
REG ADD "HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Session Manager\Environment" /v ANDROID_ADB_SERVER_PORT /t REG_SZ /d 7305
3> 修改环境变量
在环境变量中添加ANDROID_ADB_SERVER_PORT的选项,其值可自定义,如7035保存,即可
PS:方法2>、3> 本质没有区别,都是修改环境变量,不过是途径不一样而已。
端口修改后需重启电脑方可有效!
-
多个adb之间的冲突(Android SDK中的adb与genymotion自带的adb)
AndroidStudio与Genymotion能连接上,但用cmd操作adb命令时出现如下报错提示:
error: could not install smartsocket listener: cannot bind to 127.0.0.1:5037: 通常每个套接字地址(协议/网络地址/端口)只允许使用一次。 (10048)
这时只需要将genymotion的设置更改一下,将adb的路径设置到SDK中adb路径即可。
adb 命令
-
获取序列号:
adb get-serialno
88MFBMA2S5FU
-
查看连接计算机的设备
adb devices
-l 详细输出当前连接的设备信息
List of devices attached 88MFBMA2S5FU device
如果存在多个设备连接,可以使用 adb -s DEVICE_ID来指定特定的设备。
adb -s <DEVICE_ID> install <**.apk>
-
安装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
-
-
启动应用:
adb shell am start -n <package_name>/.<activity_class_name> //比如:adb shell am start -n com.baidu.search/.MainActivity
-
卸载APK:
adb uninstall <package> //比如:adb uninstall com.baidu.search
-
卸载app但保留数据和缓存文件:
adb uninstall -k <package> //比如:adb uninstall -k com.baidu.search
-
-
重启设备:
adb reboot
-
重启到bootloader,即刷机模式:
adb reboot bootloader
-
重启到recovery,即恢复模式:
adb reboot recovery
-
-
查看log:
adb logcat
-
清除log缓存:
adb logcat -c
-
按指定优先级输出log
adb logcat *:W //输出Warn优先级以上的log
-
指定tag输出log
adb logcat | grep "^..tag"
adb -s UWKNSK9S99999999 logcat *:W | grep "^..Watchdog\|^..ADB" adb -s UWKNSK9S99999999 logcat *:W | egrep "^..Watchdog|^..ADB"
若是需要过滤多个tag,使用grep需要添加 \ 做转义;使用egrep,则不需要转义
-
-
终止adb服务进程:
adb kill-server
-
重启adb服务进程:
adb start-server
-
获取设备信息:
-
获取设备MAC地址
adb shell cat /sys/class/net/wlan0/address
-
获取CPU序列号
adb shell cat /proc/cpuinfo
-
获取设备名称:
adb shell cat /system/build.prop
-
-
查看设备cpu和内存占用情况:
adb shell top
User 0%, System 1%, IOW 48%, IRQ 0% User 6 + Nice 0 + Sys 10 + Idle 295 + IOW 294 + IRQ 0 + SIRQ 0 = 605 PID PR CPU% S #THR VSS RSS PCY UID Name 16829 1 0% R 1 1352K 508K shell top 73 0 0% D 1 0K 0K root kswapd0 16393 0 0% S 51 672440K 61632K fg u0_a106 com.qsq.paydayloan 1060 0 0% S 102 669120K 38652K fg system system_server 213 3 0% S 14 80760K 3572K fg system /system/bin/surfaceflinger 127 0 0% S 1 0K 0K root w1_bus_master1 452 0 0% D 1 0K 0K root kworker/0:4 3 0 0% S 1 0K 0K root ksoftirqd/0 319 1 0% S 50 53180K 356K root /system/bin/thermal-engine 1193 0 0% S 3 7444K 1220K wifi /system/bin/wpa_supplicant
第一组数据的含义: User 处于用户态的运行时间,不包含优先值为负进程 Nice 优先值为负的进程所占用的CPU时间 Sys 处于核心态的运行时间 Idle 除IO等待时间以外的其它等待时间 IOW IO等待时间 IRQ 硬中断时间 SIRQ 软中断时间 第二组数据的含义: PID 进程id PR 优先级 CPU% 当前瞬时CPU占用率 S 进程状态:D=不可中断的睡眠状态, R=运行, S=睡眠, T=跟踪/停止, Z=僵尸进程 #THR 程序当前所用的线程数 VSS Virtual Set Size 虚拟耗用内存(包含共享库占用的内存) RSS Resident Set Size 实际使用物理内存(包含共享库占用的内存) PCY 调度策略优先级,SP_BACKGROUND/SP_FOREGROUND UID 进程所有者的用户id Name 进程的名称
-
查看占用内存前6的app:
adb shell top -m 6
-
刷新一次内存信息,然后返回:
adb shell top -n 1
-
刷新间隔时间:
adb shell top -d 5 //默认5秒
-
Show threads instead of processes. 显示线程信息而不是进程
-t
-
Column to sort by (cpu,vss,rss,thr). 按哪列排序
-s
-
Display this help screen. 显示帮助文档
-h
-
-
杀死一个进程:
adb shell kill [pid]
-
查看进程列表:
adb shell ps
-
查看指定进程状态:
adb shell ps -x [PID]
-
-
查看后台services信息:
adb shell service list
-
查看当前设备的内存(Memory)信息:
adb shell cat /proc/meminfo
MemTotal: 1973972 kB //所有可用RAM大小 MemFree: 62828 kB //LowFree与HighFree的总和,被系统留着未使用的内存。 Buffers: 77548 kB //用来给文件做缓冲大小。 Cached: 934716 kB //被高速缓冲存储器(cache memory)用的内存的大小(等于diskcache minus SwapCache)。 SwapCached: 0 kB //被高速缓冲存储器(cache memory)用的交换空间的大小。已经被交换出来的内存,仍然被存放在swapfile中,用来在需要的时候很快的被替换而不需要再次打开I/O端口。 Active: 900896 kB //在活跃使用中的缓冲或高速缓冲存储器页面文件的大小,除非非常必要,否则不会被移作他用。 Inactive: 752928 kB //在不经常使用中的缓冲或高速缓冲存储器页面文件的大小,可能被用于其他途径。 Active(anon): 476540 kB Inactive(anon): 167008 kB Active(file): 424356 kB Inactive(file): 585920 kB Unevictable: 1592 kB Mlocked: 24 kB SwapTotal: 524284 kB //交换空间的总大小。 SwapFree: 524284 kB //未被使用交换空间的大小。 Dirty: 0 kB //等待被写回到磁盘的内存大小。 Writeback: 0 kB //正在被写回到磁盘的内存大小。 AnonPages: 643168 kB //未映射页的内存大小。 Mapped: 355596 kB //设备和文件等映射的大小。 Shmem: 420 kB Slab: 88932 //内核数据结构缓存的大小,可以减少申请和释放内存带来的消耗。 SReclaimable: 38476 kB //可收回Slab的大小。 SUnreclaim: 50456 kB //不可收回Slab的大小(SUnreclaim+SReclaimable=Slab)。 KernelStack: 27088 kB PageTables: 33360 kB //管理内存分页页面的索引表的大小。 NFS_Unstable: 0 kB //不稳定页表的大小。 Bounce: 0 kB WritebackTmp: 0 kB CommitLimit: 1511268 kB Committed_AS: 91405828 kB VmallocTotal: 251658176 kB VmallocUsed: 124208 kB VmallocChunk: 251490032 kB
-
查看IO内存分区:
adb shell cat /proc/iomem
11007000-11007fff : 11007000.I2C0 11008000-11008fff : 11008000.I2C1 11009000-11009fff : 11009000.I2C2 1100a000-1100afff : 1100a000.SPI1 1100f000-1100ffff : 1100f000.I2C3 13040000-13043fff : 13040000.MALI 40000000-42ffffff : System RAM 40080000-40e08fff : Kernel code 40e6c000-4123e31f : Kernel data 43030000-b9ffffff : System RAM bd810000-beffffff : System RAM bf200000-bf32ffff : System RAM
-
将system分区重新挂载为可读写分区:
adb remount
-
从本地复制文件到设备:
adb push <local> <remote>
-
从设备复制文件到本地:
adb pull <remote> <local>
进入adb shell 下 如下命令输出外部存储目录
echo $EXTERNAL_STORAGE
-
查看wifi密码:
adb shell cat /data/misc/wifi/*.conf
-
删除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>
-
列出目录下的文件和文件夹,等同于dos中的dir命令:
adb shell ls
-
进入文件夹,等同于dos中的cd 命令:
adb shell cd <folder>
-
重命名文件:
adb shell rename path/oldfilename path/newfilename
-
-
查看bug报告:
adb bugreport
-
查看ADB帮助:
adb help
-
跑monkey:
adb shell monkey -v -p your.package.name 500
ADB shell
以下命令都是进入adb shell模式下操作的:
-
查看任务栈中Activity列表
dumpsys activity activities
其中Running activities:描述了当前栈中的Activity信息
dumpsys activity activities | sed -En -e '/Running activities/,/Run # 0/p'
使用此命令可以只输出Running Activitiess