Android开发&无线调试和强大的adb命令、adb shell命令

1,243 阅读5分钟

一、前言

这段时间一直在忙啊忙,公司要做机顶盒,没有人做过,无奈之下只能边研究边做,经过一个多月的时间,测试版本终于出来了。

二、简介

今天给大家介绍下使用adb命令无线调试调试安卓应用,那有些人肯定会问,无线调试有啥用啊,连着线调试挺好的。那如果线坏了那,你会说在换一个,那如果电脑usb插口坏了那,当然可以换个电脑,哈哈 ,换电脑的都是真土豪。。。。。。还有有一些android的设备只能使用公对公的usb插口,而公司没有那种数据线,这个时候,我们高大上的无线调试就派上用场了。。。。。。。

三、开启无线调试

android设备是否默认开启了端口号5555,如果开启了默认端口号:直接在androidStudio ------》Terminal中使用命令adb connect android设备ip 这时候就会显示 connected to ip:5555 ,就可以建立连接,例如(adb connect 192.168.0.123)

现在我们就连接上了安卓设备,第一个设备是tv模拟器,第二个就是我连接是设备,android机顶盒,如下图

如果想要断开连接,只需要使用adb disconnect ip地址就可以了

当然,并不是所有设备都会开启端口号的,如果没有开启adb,也有两种方法:

第一种:

  1. 使用数据线通过USB接口将手机与电脑连接,执行如下命令:
    adb tcpip 5555(5555是端口号,可以随意地指定)
    执行完这句话之后,我们就可以断开数据线了
  2. 找到手机的IP地址,然后执行命令:
    adb connect 192.168.0.123

第二种:没有数据线,没办法连接数据线开启adb,

在手机上下载一个android模拟器, 然后切到root权限, 执行命令打开adb服务:

setprop service.adb.tcp.port 5555

stop adbd

start adbd

然后adb就可以连接手机了

四、adb命令

上面说了android无线调试,用到了adb命令,不过只说了两个,好像还远远不够,今天就说下常用的adb命令

简介

adb全称为Android Debug Bridge,他是一个命令行工具,一般存放于sdk目录下的platform-tool文件夹里。利用adb可以实现PC和android设备的交互。合理使用adb可以大大提高效率。

常见adb 命令

  • adbconnect 192.168.0.124 链接设备

  • adbdisconnect 192.168.0.124 断开设备

  • adbkill-service 关闭adb服务

  • adb start-service 打开adb服务

  • adb devices 查看设备

  • adb install 安装软件(adb install《apk全路径文件名》这个命令将指定的apk文件安装到设备上)

  • adb uninstall 卸载软件(adb uninstall 《软件名》 adb uninstall -k《软件名》 加-k参数,)

  • adb install -r [apk 安装包所在路径(如:d:\a.apk)] 将对应路径的apk安装包强制(覆盖)安装到机顶盒

  • adb reboot 重启

  • adb get-serialno 获取序列号

  • adb devices 获取设备列表及设备状态

  • adb get-state 获取设备的状态(设备正常连接device 设备无响应offline 没有连接unknown)

  • adb logcat 打印android的系统日志

  • adb bugreport 打印dumpsys,dumpstate,logcat的输出,用于分析错误

  • adb pull 将android设备上的文件或文件夹复制到本地

    • 例如复制Sdcard下的pull.txt文件到D盘:adb pull sdcard/pull.txt d:\
    • 如果需要重命名为rename.txt:adb pull sdcard/pull.txt d:\rename.txt

注意权限,复制系统权限的目录下的文件,需要root,并且一般的Android机root之后并不能使用命令去复制,而需要在手机上使用类似于RE的文件浏览器,先对系统的文件系统进行挂载为可读写后,才能在手机上复制移动系统文件

  • adb push推送本地文件至Android设备
    如推送D盘下的push.txt至Sdcard:adbpush d:\push.txt sdcard/ sdcard后面的斜杠不能少,否则会出现下面的错误:
[xuxu:~]$ adb push push.txt sdcard failed to copy 'push.txt' to 'sdcard': Is a directory

权限问题同拉命令

  • adb forward,将宿主机上的某个端口重定向到设备的某个端口adb forward tcp:1314 tcp :8888

执行该命令后所有发往宿主机1314端口的消息,数据都会转发到Android设备的8888端口上,因此可以通过远程的方式控制Android设备。

五、adb shell命令

  • adb shell 进入系统目录(通过 exit 退出)
  • adb shell pm list packages 列出系统应用的所有包名
  • adb shell pm listpackages –s列出除了系统应用的第三方应用包名
  • adb shell pm listpackages -3使用 grep来过滤
  • adb shell pm listpackages | grep qq 清除应用数据与缓存
  • adb shell pm clear有些时候我们测试需要清除数据与缓存,则需要用到如下命令:adb shell am start -n com.stormzhang.demo/.ui.SplashActivity 如果我们想要通过 adb 来启动应用
  • adb shell am force-stop 强制停止应用
  • Adb shall cat /proc/cpuinfo 获取CPU序列号
  • Adb shell top查看设备cpu和内存占用情况
  • Adb shell top –m 6查看占用内存前6的app
  • Adb shell top –n 1刷新一次内存信息,然后返回
  • Adb shell procrank查看各进程内存使用情况
  • Adb shell kill [pid]杀死一个进程
  • Adb shell ps 查看进程列表
  • Adb shell ps –x【pid】 查看指定进程状态
  • Adb shell service list查看后台services信息
  • adb shell cat /sys/class/net/wlan0/address 获取 MAC 地址
  • adb shell getprop ro.product.model 查看设备型号
  • adb shell getprop ro.build.version.release 查看 Android 系统版本
  • adb shell wm size 查看屏幕分辨率
  • adb shell wm density 查看屏幕密度
  • adb shell am start -n [包名]/[包名+类名] 启动指定类名的Activity
  • adb shell input text **** 在已经获取焦点的EditText中输入内容
  • adb shell ps 查看当前终端中的进程信息