adb 是什么?

adb工具即Android Debug Bridge(安卓调试桥) tools。它就是一个命令行窗口,用于电脑端与模拟器或者真实设备交互。

常用操作:

  • 把文件发送到android设备,或从android拖拽文件到本地
  • 在android设备上安装/卸载应用
  • 把APP的日志导出到本地
  • 截屏

    思考:上面说的这几点能否有其他方式替代,有什么区别?

adb怎么使用?

  1. 下载adb压缩包,解压后,添加环境变量,然后就可以在dos环境下使用了。
  2. usb连接电脑和手机,包括 Android 设备处于正常开机状态,USB 连接线和各种接口完好。
  3. Android 设备的开发者选项和 USB 调试模式已开启
  4. 设备驱动状态正常。这一点貌似在 Linux 和 Mac OS X 下不用操心,在 Windows 下有可能遇到需要安装驱动的情况,确认这一点可以右键「计算机」-「属性」,到「设备管理器」里查看相关设备上是否有黄色感叹号或问号,如果没有就说明驱动状态已经好了。否则可以下载一个手机助手类程序来安装驱动先。
  5. 通过 USB 线连接好电脑和设备后确认状态。

常见问题:

adb devices 没有设备:可借助驱动精灵检查手机驱动,驱动安装好之后重启电脑。

adb devices unauthorized :解决办法:将手机设置->辅助功能->开发者模式->撤销usb调试授权,重新打开开发者模式

常用命令

pc链接的所有android 设备

adb devices

查看adb版本

adb version

装包

如果在电脑D盘下面有个a.apk文件,只需要一行命令就安装到手机上:
adb install d:/a.apk 如果已经安装了这个程序,可以通过以下命令覆盖安装:
adb install -r d:/a.apk 保留数据和缓存文件,重新安装 apk
adb install -r a.apk 安装包在android设备中
adb shell pm install apk在移动端的路径

卸载包

adb uninstall 包名

卸载软件但是保留配置和缓存文件:
adb uninstall -k 包名

如果机器上有多个模拟器或真机,需要使用-s命令行参数指定具体的模拟器或真机。例如,下面的命令分别在模拟器和真机上安装、重新安装和卸载应用程序。

在emulator-5554模拟器上安装ebook.apk
adb -s emulator-5554 install ebook.apk 在真机上安装ebook.apk
adb -s HT9BYL904399 install ebook.apk 在emulator-5554模拟器上重新安装ebook.apk
adb -s emulator-5554 install -r ebook.apk 在真机上重新安装ebook.apk
adb -s HT9BYL904399 install -r ebook.apk 在emulator-5554模拟器上卸载ebook.apk(不保留数据和缓冲目录)
adb -s emulator-5554 uninstall net.blogjava.mobile.ebook 在真机上卸载ebook.apk(保留数据和缓冲目录)
adb -s HT9BYL904399 uninstall -k net.blogjava.mobile.ebook

包管理,如何知道一个app包名呢

包名(Package name)在Android系统中是判断一个App的唯一标识,不同的App可以有同样的名字,但是它的包名不可以相同。

例如我可以自己编译生成一个App也叫“微信”,但是我App的包名不能为com.tencent.mm(微信的包名为这个),如果我指定的包名如果也和微信一致了,那么我的手机上只允许安装这两个App中的其中一个。说到这很多人就会有疑问,如果有人恶意做了一个和微信内容一模一样的App,名字和包名都和微信一样,那怎么分辨呢?Android中为了防止这样,还做了一个叫签名的东西,微信的签名一般我们是没有的,所以就可以通过签名来标识出这款App到底是谁的了。

1、看源代码

当有源代码的时候,可以到工程目录下的 “AndroidManifest.xml”文件下查看package这一项。

2、adb命令查看

列出手机装的所有 app 的包名:
adb shell pm list packages 列出系统应用的所有包名:
adb shell pm list packages -s 列出除了系统应用的第三方应用包名:
adb shell pm list packages -3 推测一个包中可能带有的关键字:
adb shell dumpsys activity | findstr mFocusedActivity 清除应用数据与缓存
adb shell pm clear 应用包名

文件相关

1、接收电脑文件
语法:adb push local remote
案例:adb push d:/a.txt /sdcard/
把电脑 D 盘下的 a.txt 文件推送到手机 sdcard 目录下 2、上传文件到电脑
语法:adb pull remote local
案例:adb pull /sdcard/a.txt d:/
上传位于/sdcard/目录下的 a.txt 文件到电脑的 D 盘根目录下

截屏、录屏

可以在安卓设备上装个QQ之类的软件,进行截屏

adb shell screencap /sdcard/a.png
adb shell /system/bin/screencap -p /sdcard/a.png 2、使用adb进行屏幕录像 adb shell screenrecord /sdcard/a.mp4
通过ctrl+c停止录制,你可以在sdcard目录下查看。妈妈再也不担心我到处找录制视频的软件了。

shell

进入shell
adb shell 退出shell
exit

手机信息收集

获取序列号
adb get-serialno 获取 MAC 地址
adb shell cat /sys/class/net/wlan0/address 查看设备型号
adb shell getprop ro.product.model 查看 Android 系统版本
adb shell getprop ro.build.version.release 查看屏幕分辨率
adb shell wm size 查看屏幕密度
adb shell wm density 查看permissions
adb shell pm list permissions 查看系统的危险权限dangerous permissions
adb shell pm list permissions -d -g

adb服务器杀死和启动

adb kill-server
adb start-server
比如希望移动adb文件夹,或者adb命令得不到想要的内容时

与进程相关:

列出当前进程
adb shell ps | findstr 包名 杀死某个包的进程
adb shell am force-stop 包名

与性能相关的一些内容

获取内存:
adb shell dumpsys meminfo 包名 获取cpu:
adb shell dumpsys cpuinfo | findstr 包名 adb shell top -n 1 | findstr 包名 获取流畅度相关:
adb shell dumpsys gfxinfo 包名

app的启动停止

如果想在模拟器或真机上运行已安装的应用程序,除了直接在模拟器或真机上操作外,还可以使用如下的命令直接运行程序。

在emulator-5554模拟器上运行ebook.apk
adb -s emulator-5554 shell am start -n net.blogjava.mobile.ebook/net.blogjava.mobile.ebook.Main 在真机上运行ebook.apk
adb -s HT9BYL904399 shell am start -n net.blogjava.mobile.ebook/net.blogjava.mobile.ebook.Main 其中Main是ebook.apk的主Activity。相当于Windows应用程序的主窗体或Web应用程序的主页面。am是shell命令。

与Activity操作等相关

查看当前显示的activity
adb shell dumpsys activity | findstr "mFocusedActivity"
结果:
mFocusedActivity: ActivityRecord{93a4f9 u0 com.youdao.note/.activity2.MainActivity t36}
注意:我们只需要这一部分:com.youdao.note/.activity2.MainActivity
即包名+activity 找到当前手机内的top Activity:
adb shell dumpsys activity top | findstr ACTIVITY 启动某一个Activity:
adb shell am start activity路径
adb shell am start com.youdao.note/.activity2.MainActivity
———————这个Activity路径可通过上面获取top activity的方式获取

查看8080端口是哪个应用占用(查看本地,用于排查问题)

netstat -ano|findstr "8080"

adb命令集锦的更多相关文章

  1. 常用 ADB 命令[ZZ]

    https://blog.csdn.net/yang_zhang_1992/article/details/71404186 1. 显示当前运行的全部模拟器: adb devices 2. 对某一模拟 ...

  2. Android adb命令,linux中各种命令

    常用的ADB命令 1. 显示系统中全部Android平台: android list targets 2. 显示系统中全部AVD(模拟器): android list avd 3. 创建AVD(模拟器 ...

  3. Android之什么是Activity和常用的ADB命令以及Android项目结构的认识

    总结一下之前学习Android的一些内容 一:  Android常用的ADB命令(adb android调试桥)      1.adb devices   查看模拟器设备并重新连接. 2.adb ki ...

  4. 分享一个常用Adb命令

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

  5. Android ADB命令大全

    通过ADB命令查看wifi密码.MAC地址.设备信息.操作文件.查看文件.日志信息.卸载.启动和安装APK等   ADB很强大,记住一些ADB命令有助于提高工作效率. 获取序列号: adb get-s ...

  6. Android的常用adb命令

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

  7. ADB命令详解

    一.adb介绍 ADB的全称为Android Debug Bridge,字面意思就是安卓调试桥接,简单点说,它是Android系统提供的一套工具,通过它,我们可以在电脑上建立一个连接到手机的通道,然后 ...

  8. adb 命令

    adb命令 su 获取权限 ls 显示目录下的文件 cd / 跳转路径 pm 直接执行设备命令 exit 退出 adb devices 查看设备 adb shell 登录设备shell adb 用桥接 ...

  9. 在Mac上配置adb命令

    在Mac上配置adb命令 在Mac OS中使用adb命令时,应进行变量配置,步骤如下: 一.终端中输入 cd ~ 二.输入touch .bash_profile 回车 touch:如果没有,则创建文件 ...

随机推荐

  1. Yii2 表单(form)

    表单 1.表单的创建 在 yii 中主要通过 yii\widgets\ActiveForm 类来创建表单 ActiveForm::begin() 不仅创建了一个表单实例,同时也标志着表单的开始. 放在 ...

  2. python gui 之 tkinter库

    http://blog.csdn.net/jcodeer?viewmode=contents http://tieba.baidu.com/p/3082739560 http://blog.sina. ...

  3. Selenium 3 + BrowserMobProxy 2.1.4 模拟浏览器访问 (含趟坑)

    背景 Selenium 是一个Web自动化测试的组件,可基于WebDriver去控制弹出浏览器去做一系列Web点击或行为测试(当然也可以去做一些邪恶的事..),减少重复人工网页测试的开销.Browse ...

  4. 了解CSS/CSS3原生变量var (转)

    一.变量是个好东西 在任何语言中,变量的有一点作用都是一样的,那就是可以降低维护成本,附带还有更高性能,文件更高压缩率的好处. 随着CSS预编译工具Sass/Less/Stylus的关注和逐渐流行,C ...

  5. es6冲刺02

    1.Symbol es6新增的数据类型 1)概念 提供一个独一无二的值 let a=Symbol() let b=Symbol() 或 let c=Symbol.for('c') let d=Symb ...

  6. 【转】SQL Server 事务隔离级别详解

    SQL 事务隔离级别 概述 隔离级别用于决定如果控制并发用户如何读写数据的操作,同时对性能也有一定的影响作用. 步骤 事务隔离级别通过影响读操作来间接地影响写操作:可以在回话级别上设置事务隔离级别也可 ...

  7. [Web 前端] mobx教程(五)-Mobx常见问题及解决方案(1)Mobx使用严格模式

    copy from : https://blog.csdn.net/smk108/article/details/83185745 mobx在严格模式下,不允许在 action 外更改任何状态.但是不 ...

  8. SQLite在.NET中自适应32位/64位系统

    如果一个.NET应用要自适应32位/64位系统,只需要在项目的“目标平台”设置为“Any CPU”.但是如果应用中使用了SQLite,情况就不同了. SQLite的.NET开发包来自是System.D ...

  9. 读取mysql数据库的数据,转为json格式

    # coding=utf-8 ''' Created on 2016-10-26 @author: Jennifer Project:读取mysql数据库的数据,转为json格式 ''' import ...

  10. Jacoco统计web接口/功能测试的代码覆盖率【转】

    原文:https://www.jianshu.com/p/d2fd02d4164b 一.代码覆盖率 通常我们在做单元测试的时候会接触到代码覆盖率的概念,通过在单元测试的过程中收集代码覆盖率去判断测试用 ...