ADB

  • 查看连接到计算机的Android设备或模拟器

adb devices

说明: 正常显示状态应该是IP:Port State. State=device说明设备已经连接到计算机, State=offline说明设备没有连接到计算机或无响应, 这就需要尝试重启计算机/重启Android设备/重启adb/网络断开等方法.

  • 安装某应用

adb install "C:\Users\ronghuihui\Desktop\VisApp.apk"

  • 重新安装某应用

adb install -r "C:\Users\ronghuihui\Desktop\VisApp.apk"

  • 完全卸载某应用

adb uninstall com.hik.visapp

  • 部分卸载某应用, 卸载时保留该应用的配置和缓存文件

adb uninstall -k com.hik.visapp

  • 移除apk文件

adb shell rm "system/app/VisApp.apk"

说明:

  1. 如果无法确定采用何种命令安装, 可以先uninstall卸载, 如果失败, 用rm命令移除应用;
  2. 如果使用rm卸载, 可能会忘记同时清除和应用相关的包, 缓存文件, 影响下次成功安装. 建议采用install和uninstall进行安装卸载.
  • 启动某应用

adb shell am start -n com.hik.visapp/com.hikvisapp.ui.DesktopActivity

  • 建立主机和Android设备之间的无线adb连接
  1. USB直连主机和设备, 配置Android设备TCP端口:  adb tcpip 5555
  2. 同一Wifi: $ adb kill-server && adb connect 10.15.3.22 && adb remount
  3. 或者

adb kill-server

adb connect 10.15.3.193:5555

adb remount

说明: 运行 adb devices 命令, 确认是否连接成功, 成功会显示Android设备IP.

  • 同时无线adb多个设备时如何区分

adb -s devicename cmd

e.g. adb -s 10.15.3.73 logcat

e.g. adb -s Default0string cmd

  • 从电脑上传文件到设备

adb push <local path> <remote path>

e.g. adb push "C:\Users\ronghuihui\Desktop\VisApp.apk" "system/app"

说明:

  1. 直接向单板上传文件时, 需要开启目标路径文件系统的写权限, 否则会上传失败. 这和我在Mac OS X上的体验是一致的. UNIX内核的操作系统, 在Bash环境下操作文件系统时, 需要chmod +x等指令开启读写权限;
  2. 注意"\"和"/", 是在两种不同操作系统下的间隔符.
  • 从Android设备下载文件到电脑

adb pull <remote path> <local path>

e.g. adb pull system/app/VisApp.apk C:\Users\ronghuihui\Desktop

e.g. adb pull system/app C:\Users\ronghuihui\Desktop\  #把app全down下来了, 整个桌面都是android小人敲可爱嘻嘻

  • 查看bug报告

adb bugreport

说明: bug report内容太多, 缓存不够, 可以将report重定向到指定文件, 再"硬读", 或利用某些对应的开源软件处理report获得图形化统计结果.

  • 查看设备的系统信息

adb shell getprop

  • Monkey基本使用

adb shell monkey -p com.hik.visapp -v 500 (500个触发事件)

说明: 模拟屏幕的随机触摸, 主要实现"随便点来点去应用都不会崩溃的压力测试"

  • 查看Activity堆栈

adb shell dumpsys activity

  • 查看当前resume的是哪个Activity

adb shell "dumpsys activity | grep mFocusedActivity"

说明: 是对dumpsys activity输出的过滤

  • 查看日志缓冲区

adb shell logcat

adb logcat

  • 通过优先级过滤日志

adb logcat *:W

  • 输出特定TAG的日志

adb logcat DesktopActivity:* *:S

adb logcat -s MonitorAdActivity

  • 过滤掉DesktopActivity, 保留MonitorAdActivity

adb logcat DesktopActivity:I MonitorAdActivity:D *:S


ADB Shell

ADB另一个功能就是运行设备shell.

我的理解是, 操作系统总是有通过串口/SPI的日志输出. 系统运行时以写文件的形式向串口/SPI等中写入Log, 再从串口/SPI中读取这些Log, 显示到串口调试窗或者命令行界面.

ADB在Android系统中应该是一个Socket进程, 通过无线/有线的Socket连接, 传输数据. Android设备应该是Server, 个人主机是Client, 每次通过adb connect ip请求建立Socket连接. 连接成功后, adb就和Android设备的文件系统建立了Sync的关联. 通过C/S关系控制和管理Android内核, 系统和应用.

成熟的操作系统, 会对这样一个读写的文件系统进行完善, 可以读取, 显示指定的Log, 可以输出重定向, 可以追加保存.

  • 进入设备或模拟器的shell环境

adb shell

  • 只执行一条shell命令

adb shell [command]

  • 打印内核调试信息

adb shell dmesg

adb shell ps


busybox

  • 获取目标板IP

busybox ifconfig

  • 确认主机和Android设备连接在同一网络

$ ping 10.15.3.193

学习笔记_ADB常用指令的更多相关文章

  1. Docker学习笔记_Dockerfile常用指令

    Dockerfile常用指令

  2. angular学习笔记(三十)-指令(10)-require和controller

    本篇介绍指令的最后两个属性,require和controller 当一个指令需要和父元素指令进行通信的时候,它们就会用到这两个属性,什么意思还是要看栗子: html: <outer‐direct ...

  3. angular学习笔记(三十)-指令(7)-compile和link(2)

    继续上一篇:angular学习笔记(三十)-指令(7)-compile和link(1) 上一篇讲了compile函数的基本概念,接下来详细讲解compile和link的执行顺序. 看一段三个指令嵌套的 ...

  4. angular学习笔记(三十)-指令(7)-compile和link(1)

    这篇主要讲解指令中的compile,以及它和link的微妙的关系. link函数在之前已经讲过了,而compile函数,它和link函数是不能共存的,如果定义了compile属性又定义link属性,那 ...

  5. angular学习笔记(三十)-指令(6)-transclude()方法(又称linker()方法)-模拟ng-repeat指令

    在angular学习笔记(三十)-指令(4)-transclude文章的末尾提到了,如果在指令中需要反复使用被嵌套的那一坨,需要使用transclude()方法. 在angular学习笔记(三十)-指 ...

  6. angular学习笔记(三十)-指令(5)-link

    这篇主要介绍angular指令中的link属性: link:function(scope,iEle,iAttrs,ctrl,linker){ .... } link属性值为一个函数,这个函数有五个参数 ...

  7. angular学习笔记(三十)-指令(2)-restrice,replace,template

    本篇主要讲解指令中的 restrict属性, replace属性, template属性 这三个属性 一. restrict: 字符串.定义指令在视图中的使用方式,一共有四种使用方式: 1. 元素: ...

  8. python3.4学习笔记(十) 常用操作符,条件分支和循环实例

    python3.4学习笔记(十) 常用操作符,条件分支和循环实例 #Pyhon常用操作符 c = d = 10 d /= 8 #3.x真正的除法 print(d) #1.25 c //= 8 #用两个 ...

  9. python3.4学习笔记(六) 常用快捷键使用技巧,持续更新

    python3.4学习笔记(六) 常用快捷键使用技巧,持续更新 安装IDLE后鼠标右键点击*.py 文件,可以看到Edit with IDLE 选择这个可以直接打开编辑器.IDLE默认不能显示行号,使 ...

随机推荐

  1. @Html.CheckBoxFor为何输出两种控件

    在MVC中当使用@Html.CheckBoxFor时表单上会产生两种控件checkbox和hidden,比如: @Html.CheckBoxFor(model => model.IsTop) 对 ...

  2. Leetcode: 06/01

    今天完成了三道题目,总结一下: 1: Length of last word(细节实现题) 此题有一些细节需要注意(比如 “a_ _” 最后一个单词是a, 而不是遇到空格就直接算成没有),别的基本就是 ...

  3. IceMx.Mvc 我的js MVC 框架六、完善植物大战僵尸(向日葵登场)

    有图有真相,废话不多说上图 看到园友的支持很受鼓舞,更觉得应该做下去,虽然自己是个菜鸟,但也应该共享自己的心得,只要有人获益那就是值得的. 我的下载需要csdn论坛的1个积分,之所以不完全免费出去是因 ...

  4. IceMx.Mvc 我的js MVC 框架五、完善植物大战僵尸(雏形版增加动画)

    有图有真相 说明 实在找不到僵尸的素材,从网上扒了一个山寨的僵尸,只有4张的一个连续图片,所以动作有点僵硬,植物的图片是自己处理的,非专业所以……咳咳!. 背景是自己抠下来2块儿拼接的,看在这么辛苦的 ...

  5. CentOS下Mysql安装教程

    CentOS下Mysql安装教程 本人学习Linux时使用的是CentOs5.5版本,在该环境中,Mysql的安装方法有很多种,下面我只讲我这次成功了的方法,作为一个记录,供大家参考,同时给自己做一个 ...

  6. 通过qsort(void * lineptr[], int left, int rifht, int (*comp)(void *, void *))解读指针函数和void指针

    原函数是<The C programint  language >5.11文本行排序的程序,如下: void qsort(void *v[], int left, int right, i ...

  7. HDOJ 1755 - A Number Puzzle 排列数字凑同余,状态压缩DP

    dp [ x ] [ y ] [ z ] 表示二进制y所表示的组合对应的之和mod x余数为z的最小数... 如可用的数字为 1 2 3 4...那么 dp [ 7 ] [ 15 ] [ 2 ] = ...

  8. Cloudera Development Kit(CDK) 简介

    Cloudera Development Kit(CDK) 简介 guibin.beijing@gmail.com 2013.07.02 CDK简介 CDK(Cloudera Development ...

  9. 高反差保留滤镜学习OpenCV:滤镜系列(11)——高反差保留

    这几周笔者几篇文章介绍了改高反差保留滤镜的文章. 关联文章的地址 高反差保留就是高通滤波 r=(pix[x,y]-avg(R))/128 pix[x,y]*r+128*(1-r) #include & ...

  10. 结构-行为-样式 - Angularjs 环境下Ztree结合JqueryUI实现拖拽

    新的项目中有一个需求是要求客户标签可以自定义,于是就想到了客户体验,让客户自己拖拽标签进行组合查询.但是理想很丰满,现实很骨感.一开始就遇到了问题,各个插件之间的结合问题,折腾一翻之后终于实现了这个功 ...