学习笔记_ADB常用指令
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"
说明:
- 如果无法确定采用何种命令安装, 可以先uninstall卸载, 如果失败, 用rm命令移除应用;
- 如果使用rm卸载, 可能会忘记同时清除和应用相关的包, 缓存文件, 影响下次成功安装. 建议采用install和uninstall进行安装卸载.
- 启动某应用
adb shell am start -n com.hik.visapp/com.hikvisapp.ui.DesktopActivity
- 建立主机和Android设备之间的无线adb连接
- USB直连主机和设备, 配置Android设备TCP端口: adb tcpip 5555
- 同一Wifi: $ adb kill-server && adb connect 10.15.3.22 && adb remount
- 或者
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"
说明:
- 直接向单板上传文件时, 需要开启目标路径文件系统的写权限, 否则会上传失败. 这和我在Mac OS X上的体验是一致的. UNIX内核的操作系统, 在Bash环境下操作文件系统时, 需要chmod +x等指令开启读写权限;
- 注意"\"和"/", 是在两种不同操作系统下的间隔符.
- 从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常用指令的更多相关文章
- Docker学习笔记_Dockerfile常用指令
Dockerfile常用指令
- angular学习笔记(三十)-指令(10)-require和controller
本篇介绍指令的最后两个属性,require和controller 当一个指令需要和父元素指令进行通信的时候,它们就会用到这两个属性,什么意思还是要看栗子: html: <outer‐direct ...
- angular学习笔记(三十)-指令(7)-compile和link(2)
继续上一篇:angular学习笔记(三十)-指令(7)-compile和link(1) 上一篇讲了compile函数的基本概念,接下来详细讲解compile和link的执行顺序. 看一段三个指令嵌套的 ...
- angular学习笔记(三十)-指令(7)-compile和link(1)
这篇主要讲解指令中的compile,以及它和link的微妙的关系. link函数在之前已经讲过了,而compile函数,它和link函数是不能共存的,如果定义了compile属性又定义link属性,那 ...
- angular学习笔记(三十)-指令(6)-transclude()方法(又称linker()方法)-模拟ng-repeat指令
在angular学习笔记(三十)-指令(4)-transclude文章的末尾提到了,如果在指令中需要反复使用被嵌套的那一坨,需要使用transclude()方法. 在angular学习笔记(三十)-指 ...
- angular学习笔记(三十)-指令(5)-link
这篇主要介绍angular指令中的link属性: link:function(scope,iEle,iAttrs,ctrl,linker){ .... } link属性值为一个函数,这个函数有五个参数 ...
- angular学习笔记(三十)-指令(2)-restrice,replace,template
本篇主要讲解指令中的 restrict属性, replace属性, template属性 这三个属性 一. restrict: 字符串.定义指令在视图中的使用方式,一共有四种使用方式: 1. 元素: ...
- python3.4学习笔记(十) 常用操作符,条件分支和循环实例
python3.4学习笔记(十) 常用操作符,条件分支和循环实例 #Pyhon常用操作符 c = d = 10 d /= 8 #3.x真正的除法 print(d) #1.25 c //= 8 #用两个 ...
- python3.4学习笔记(六) 常用快捷键使用技巧,持续更新
python3.4学习笔记(六) 常用快捷键使用技巧,持续更新 安装IDLE后鼠标右键点击*.py 文件,可以看到Edit with IDLE 选择这个可以直接打开编辑器.IDLE默认不能显示行号,使 ...
随机推荐
- ubuntu 下面手动安装jdk
ubuntu 下面手动安装jdk 刚才在ubuntu安装jdk和eclipse,感觉主要安装jdk比较麻烦,记录一下笔记以备后面查看 先在官网上下载jdk的tar包:http://www.oracle ...
- 用django搭建一个简易blog系统(翻译)(一)
Django 入门 原始网址: http://www.creativebloq.com/netmag/get-started-django-7132932 代码:https://github.com/ ...
- 关于 HttpModule配置问题
在经典模式下,配置到System.web节点 在IIS7以上的集成模式下,要配置到<system.webServer>节点 否则会出现类似一下的错误: 具体配置如下: <config ...
- K-Means算法
K-Means算法 K-Means算法的输入N,K和一个size为N的向量组vector.输出K个两两互不相交的向量组.其本质是将给定的向量组划分成K个类别,使得同类别的向量相似度比较大,而不同类别的 ...
- phper談談最近重構代碼的感受(1)
作爲一個工作時間並不算長的phper,卻參與了兩家公司的代碼重構.下面談談我的一些感受. 在mjm公司,當時我負責日常的需求開發和2.0的重構.當初的重構更多的是clean codes和一些代碼規範上 ...
- Arrays类——Arrays.asList()方法使用
java.util类 Arrays java.lang.Object——java.util.Arrays public class Arrays extends Object 此类包含用来操作数组(比 ...
- 嵌入式SQL
一.包含嵌入式SQL 程序的处理过程 由预处理程序对源程序进行扫描,识别出ESQL语句 把它们转换成主语言的函数调用语句,使主语言编译程序能够识别 最后由主语言的编译程序将整个源程序编译成目标码 ...
- 基于AFNetworking 3.0的取消已发出的网络请求
一般情况下主动取消请求的需求不会太多 除非以下几种情况 1.比如电商应用为例 请求频繁,数据量大 2.对性能的要求比较高 3.网络环境比较差 当一个用户打开一个界面 看到的却是漫长的等待框 这时候用户 ...
- 持续集成CI与自动化测试
-------------------------------------------------------------------------------------------------- ...
- java 实现Excel压缩成Zip导出
1 概述 在web项目中常见的一种场景就是将文件导出为Excel,但是当需要导出多个Excel时,使用者将频繁操作,这样就严重降低了项目的友好交互性以及易用性,那么怎么才能优雅的解决这个问题呢?笔者今 ...