• Android开发——常用ADB命令的使用


    ADB全称Android Debug Bridge, 是android sdk里的一个工具, 用这个工具可以直接操作管理android模拟器或者真实的andriod设备。它的功能如下:

    • 运行设备的shell(命令行)
    • 管理模拟器或设备的端口映射
    • 图片链接和图片上传
    • 计算机和设备之间上传/下载文件
    • 将本地apk软件安装至模拟器或android设备

    其实ADB是一个客户端-服务器端 程序,客户端即PC端, 服务器端是android设备。客户端包含在sdk里。设备上不需要安装,只需要在手机上打开选项settings-applications-development-USBdebugging。

    ADB常用的几个命令都是在PC端执行的:

    1.查看设备

    adb devices

    这个命令是查看当前连接的设备, 连接到计算机的android设备或者模拟器将会列出显示。在模拟器和真机同时在线时,可以通过如下命令进入到指定设备下的Shell。

    adb -s <设备名称> shell

    在proc目录下我们可以看到一些比较熟悉的目录/文件,比如data,system,cpuinfo(获取CPU信息),uid_stat(获取流量信息)等。

    2.设备信息相关

    adb reboot

    这个命令用于重启设备。

    adb get-serialno

    这个命令用于获取设备序列号。

    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

    这个命令用于获取设备密度。

    3.安装/卸载软件

    adb install <apk文件路径>

    这个命令将指定的apk文件安装到设备上。
    如果加 -r 参数,为保留配置和缓存文件重新安装APK。
    如果加 -s 参数,为安装APK到SD卡。

    adb uninstall <包名>

    如果加 -k 参数,为卸载软件但是保留配置和缓存文件。

    4.启动/强制停止应用

    adb shell am start -n <packagename>/.ui.SplashActivity
    adb shell am force-stop <packagename>

    上述两个命令用于启动和强制停止应用,代码中有一点小区别需要注意。

    5.登录设备shell

    adb shell <command命令>

    这个命令将登录设备的shell。
    后面加command命令将是直接运行设备命令,相当于执行远程命令。

    6.包管理

    adb shell pm list packages

    这个命令列出手机装的所有app的包名。
    在命令最后“-s”表示列出系统应用的包名,加“-3”列出第三方应用的包名。

    adb shell pm list packages | grep qq

    当然可以使用 grep 命令来过滤结果。

    adb shell pm path <packageName>

    这个命令用于获取指定包名的存储路径。

    7.清除应用数据与缓存

    adb shell pm clear <packagename>

    有些时候我们测试需要清除数据与缓存。

    8.和PC端互传文件

    adb push <本地路径> <远程路径>
    adb pull <远程路径> <本地路径>

    示例代码如下(完成sd卡下的20160712目录拷贝到PC端的e盘根目录下):

    adb pull /storage/sdcard0/20160712 e://

    push 完成从PC端到Android端,pull 反之。
    这里要注意,如果在PC端cmd直接adb shell再执行adb pull会发生“device not found”错误,必须退出shell命令才可以完成文件传输。因此,在代码里实现文件通过ADB传输到电脑,是不可能的,代码里如果按照如下命令执行adb pull会在返回的错误输出流中读取到“device not found”错误信息,同时可以看到waitFor()返回值为1,虽然官方表示返回值为1是权限问题,但在这里明显不是权限问题,希望遇到同样问题的小伙伴止住继续探索权限的步伐。要想在代码里实现文件传输,最好还是使用Socket等技术。

    process = Runtime.getRuntime().exec("su");
    os = new DataOutputStream(process.getOutputStream());
    os.write(command.getBytes());
    os.flush();

    9.删除系统自带软件(需Root)

    adb shell
    cd system/app
    rm <目标APP>.*

    接着重启手机即可。

    10. Wifi调试真机

    adb tcpip 5555
    adb connect <192.168.XXX.XXX>

    有时候我们需要利用手机的OTG模式,需要手机连接U盘,那么我们就不能再使用USB线进行调试了。
    用Wifi调试的过程如下,先连接USB线,输入adb tcpip命令,拔出USB线,再电脑端继续输入adb connect命令,后面的IP写局域网分配给真机的地址。显示成功后,就可以使用手机连接U盘,并且和连接USB线的调试有一样的效果啦。

    11. ADB Forward

    adb forward tcp:6100 tcp:7100 
    // PC上所有6100端口通信数据将被重定向到手机端7100端口server上

    很实用的功能,可以在手机和PC端之间直接使用Socket进行通信。

    12. ADB IDEA
    这里推荐一个 AS 插件 ADB IDEA ,装了这款插件可以直接在 AS 中快速操作一些 ADB 命令,非常方便。快捷键直接唤起:

    //Mac OSX: Ctrl+Shift+A
    //Windows/Linux: Ctrl+Alt+Shift+A

    这里写图片描述

  • 相关阅读:
    导出大智慧L2要密码的公式
    SQL Server 索引结构及其使用
    职业式证券交易全貌向职业交易员进军者鉴[转]
    sqlite多字段拼接方法
    推荐两个UI、PSD文件搜索网站
    利用事件冒泡和阻止事件冒泡的例子
    js通过八个点 拖动改变div大小
    匿名函数运用js脚本一对圆括号
    js对象转换为json格式的jquery辅助类
    简单清晰的缓冲运动框架
  • 原文地址:https://www.cnblogs.com/qitian1/p/6461620.html
Copyright © 2020-2023  润新知