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

Android开发——常用ADB命令的使用的更多相关文章

  1. Android的常用adb命令

    第一部分:1. ubuntu下配置环境anroid变量:在终端执行 sudo gedit /etc/profile 打开文本编辑器,在最后追加#setandroid environment2. 运行E ...

  2. Android开发中adb命令的常用方法

    Android的SDK中提供了很多有用的工具,在开发过程中如果能熟练使用这些工具,会让我们的开发事半功倍.adb是SDK提供的一个常用的命令行工具,全称为Android Debug Bridge,用于 ...

  3. Android开发笔记---adb命令

    adb命令的使用: adb shell命令:pm list packages -f:显示包名称及相应的APK文件

  4. Android 开发常用版本控制命令

    1. git 回退到指定版本 // 使用git log命令查看所有的历史版本,获取某个历史版本的id,假设查到历史版本的id是139dcfaa558e3276b30b6b2e5cbbb9c00bbdc ...

  5. Android 常用 adb 命令

    查看原文:http://blog.csdn.net/u010818425/article/details/52266593 (一)基础操作 安装app adb install -r xxx.apk / ...

  6. Android 常用 adb 命令总结

    Android 常用 adb 命令总结 针对移动端 Android 的测试, adb 命令是很重要的一个点,必须将常用的 adb 命令熟记于心, 将会为 Android 测试带来很大的方便,其中很多命 ...

  7. [原创]Android 常用adb命令总结

    [原创]Android 常用adb命令总结 1 adb介绍 1.1 adb官方网站及下载 官方网站下载安装:http://adbshell.com/downloads 1.2 adb安装是否成功检查? ...

  8. 分享一个常用Adb命令

    分享一个常用Adb命令 首先 首先感谢@xuxu的常用adb命令,收益良多,但是已经不能满足于我,所以补充了下. 再者 好久没发帖了,最近论坛老司机们都在讨论/总结,我就用这个干货回报吧. 最后 基于 ...

  9. Android之常用Git命令

    Android之常用Git命令 代码修改后提交步骤:git status:查看代码修改状态git diff:查看代码修改细节,也能看代码空格git add . :添加新加入的代码git commit ...

随机推荐

  1. c++ 优先级大全

    重置优先级

  2. Codeforces Round #544 (Div. 3) A.Middle of the Contest

    链接:https://codeforces.com/contest/1133/problem/A 题意: 给两个时间点,求中间时间点. 思路: 数学 代码: #include <bits/std ...

  3. bzoj1024 [SCOI2009]生日快乐【dfs】

    传送门:http://www.lydsy.com/JudgeOnline/problem.php?id=1024 普通的深搜. #include <cstdio> #include < ...

  4. Lucky Array Codeforces - 121E && Bear and Bad Powers of 42 Codeforces - 679E

    http://codeforces.com/contest/121/problem/E 话说这题貌似暴力可A啊... 正解是想出来了,结果重构代码,调了不知道多久才A 错误记录: 1.线段树搞混num ...

  5. Folding UVA - 1630

    题目 ans[i][j]表示由原串第i个字符到第j个字符组成的子串的最短折叠长度如果从i到j本身可以折叠,长度就是本身长度或折叠后的长度的最小值***此处参考:http://blog.csdn.net ...

  6. 暴力 BestCoder Round #41 1001 ZCC loves straight flush

    题目传送门 /* m数组记录出现的花色和数值,按照数值每5个搜索,看看有几个已满足,剩下 5 - cnt需要替换 ╰· */ #include <cstdio> #include < ...

  7. Java项目的命名规则

    Java类的命名规范如下: 1. 项目名全部小写 2. 包名全部小写 3. 类名首字母大写,如果类名由多个单词组成,每个单词的首字母都要大写. 如:public class MyFirstClass{ ...

  8. D. Black Hills golden jewels 二分答案 + 二分判定

    http://codeforces.com/gym/101064/problem/D 题目是给定一个数组,如果两两组合,有C(n, 2)种结果,(找出第一个大于等于第k大的结果) 思路, 二分答案va ...

  9. 贴图、纹理、材质的区别是什么? 还有shader

    贴图.纹理.材质的区别是什么? 还有shader 整个 CG 领域中这三个概念都是差不多的,在一般的实践中,大致上的层级关系是:材质 Material包含贴图 Map,贴图包含纹理 Texture.纹 ...

  10. GeoTools坐标转换(投影转换和仿射变换)

    GeoTools是在java下的gis开源软件,以下介绍坐标转换的两种方法:投影转换和仿射变换 投影转换 这里以xian80经纬度坐标转xian80,3度分带 111中央经线平面坐标为例 转换函数如下 ...