Android ADB命令集合
来源:互联网 发布:八爪鱼采集淘宝评论 编辑:程序博客网 时间:2024/06/05 17:22
时不时会用到adb与设备进行各种交互,为了不在使用的时候”东奔西跑”,这这里总结一下常用的命令,以备不时之需。
adb命令
安装APK
首次安装
$ adb install xxx.apk
如果使用此命令执行覆盖安装,会出现如下错误提示
Failed to install xxx.apk: Failure [INSTALL_FAILED_ALREADY_EXISTS:
Attempt to re-install app.xxx without first uninstalling.]
所以,覆盖安装使用如下命令执行
$ adb install -r xxx.apk
卸载APK
指令如下
$ adb uninstall ${xxx_pkg_name}
有些文章在卸载时也写的是APK的文件名,这明显是不对的。
卸载但是保留data
和cache
目录,之前的命令是
$ adb uninstall -k ${xxx_pkg_name}
但是执行之后,会出现如下提示
The -k option uninstalls the application while retaining the data/cache.
At the moment, there is no way to remove the remaining data.
You will have to reinstall the application with the same signature, and fully uninstall it.
If you truly wish to continue, execute ‘$ adb shell pm uninstall -k’
.
即,提示你运行如下命令
$ adb shell pm uninstall -k ${xxx_pkg_name}
这里的保留
data
和cache
并不是/data/data/xxx_pkg_name/
目录下的内容,推测可能指的是在外部存储的目录。有一点需要注意,如果你使用了
-k
进行卸载之后,再覆盖安装,那么需要和原来的签名一致的包,否则会安装失败。
查看所有已连接的设备
包括各种真实Android设备和模拟器
$ adb devices
进入shell模式
进入命令很简单
$ adb shell
但是要注意一点,shell模式不支持多个设备,如果你此时已连接多个设备,它会报错
error: more than one device/emulator
获取设备序列号
这个序列号
指的是显示在$ adb devices
列表里的序列号,并不是android_id
$ adb get-serialno
此命令同样不支持多个设备
开启/关闭adb服务
开启
$ adb start-server
关闭
$ adb kill-server
一般开启命令没有必要手动执行,因为如果你执行其它$ adb命令时服务没有开启,会自动先开启服务的。
设备上的daemon是
/sbin/$ adbd
$ adb的通信也是C/S模式,具体可以参考下面的文章:
[Android]adb和adbd浅析
Android中的adbd
截屏
其实需要3步
- 截图并保存在设备外部存储上(sdcard)
- 将图片导出到电脑上
- 删除设备外部存储上的图片
命令如下
$ adb shell /system/bin/screencap -p /sdcard/screenshot.png$ adb pull /sdcard/screenshot.png ~/screenshot.png $ adb shell rm /sdcard/screenshot.png
如果你在Linux下操作,可以使用组合命令
$ adb shell screencap -p | sed 's/\r$//' > screen.png
具体可参考Android截图命令screencap
重启/关机
重启
$ adb reboot
重启进入recovery
模式
$ adb reboot recovery
Recovery模式,可以简单地理解为类似于Windows的安全模式,最小的基本系统(这里的系统指的是linux系统,不是framework之上的android系统)。
在这个模式下,可以进行wipe, 卡刷, 安装zip包(比如supersu等工具)等等操作。
重启进入bootloader
模式
$ adb reboot bootloader
关机
$ adb shell reboot -p
2个命令有些像,但是不要混淆。前者是通过
$ adb
来执行重启,而后者是调用设备上的reboot
程序来执行命令。
操作SQLite3数据库
其实是使用设备中的sqlite3
命令执行操作
$ adb shell sqlite3 xxx.db
具体可参考在$ adb shell中直接使用sqlite3命令操作数据库
获取root权限
有些文章中只是简单的列出$ adb root
命令,但是使用该命令后并没有发现有什么变化。
可能是我使用不当?
按照某些文章所说,使shell获取root权限有2种方法
- 设备已root的前提下执行
su
进行提权 - 修改某些系统文件,然后进行一系列的操作
第2种过于麻烦,所以这里不加讨论,有兴趣的可以参考
- $ adb Shell root 权限
- 通用(任何android机型)Root教程(完整版!附砖机自救方法)
- Android 如何永久性开启$ adb 的root权限
至于root,那是另外一个话题,这里不加讨论。
第一种方法很简单,如下
$ adb shell su
设备上会弹出授权对话框询问是否同意,确定即可。
将电脑上的文件复制到设备
$ adb push ${file_on_computer} ${path_on_device}
将设备上的文件复制到电脑
与上面的相反
$ adb pull ${file_on_device} ${path_on_computer}
其实这个命令我们在前边的截图里边已经使用过了。
查看log信息
命令很简单
$ adb logcat
但是还是不要使用这个命令看log了,没有任何附加功能(或者可以通过参数控制,但是操作比较麻烦),实际使用当中,还是老老实实地使用ddms来看log吧。
启动Activity
这里使用了设备上的命令am
,以启动Activity为例
$ adb shell am start -n {$pkg/$activity_class_name}
但是如果,你要启动的Activity不是Launcher Activity,那么要使用root权限才能启动,否则会报错。
除此之外,am
还可以
- 发送广播
- 以Intent方式启动Activity
- 设置其它的多个参数
具体可以参考
- Android AM命令行启动程序的方法
- 浅谈android的am命令
或者可以使用monkey启动主activity
$ adb shell monkey -p your.app.package.name -c android.intent.category.LAUNCHER 1
获取当前屏幕上运行的Activity的信息
命令:
$ adb shell dumpsys window windows | grep 'mCurrentFocus'
向设备发送事件
这里使用的是设备上的命令input
,以发送电源按键为例,命令如下
$ adb shellinput keyevent 26
input
命令非常强大,可以进行很多设备的模拟输入,包括有
- mouse
- keyboard
- joystick
- touchnavigation
- touchpad
- trackball
- stylus
- dpad
- touchscreen
- gamepad
其它使用可参考
- Android input命令
- Android 中 如何利用am input 命令做自动压力测试
- [Android]getevent,sendevent,input命令的使用
端口转发
命令是$ adb forward
,使用 TO BE ADDED
具体可参考$ adb forward交互流程
调整分辨率与DPI
两者使用的都是wm
命令。
调整分辨率
$ adb shell wm size 1920x1080
将1920x1080
替换为你的目标分辨率。
调整DPI
$ adb shell wm dpi 480
将480
替换为你的目标DPI。
如果要还原设置,可以分别执行
$ adb shell wm size reset$ adb shell wm dpi reset
adb程序源代码分析
TO BE ADDED
参考
- 通过adb uninstall package 卸载软件
- [Android]adb和adbd浅析
- Android中的adbd
- Android截图命令screencap
- 在adb shell中直接使用sqlite3命令操作数据库
- Android AM命令行启动程序的方法
- 浅谈android的am命令
- adb forward交互流程
- 一些比较实用的 Android adb 命令分享
- Android input命令
- Android 中 如何利用am input 命令做自动压力测试
- [Android]getevent,sendevent,input命令的使用
- HOW TO
Change Your Android’s Screen Resolution Without Root Access
- Android ADB命令集合
- Android ADB linux命令集合
- Android ADB linux命令集合
- Android adb调试命令集合
- adb命令集合
- ADB命令集合
- adb 命令集合
- adb 获取root权限----adb命令集合
- Android adb shell 命令
- Android adb shell 命令
- Android ADB 命令摘要
- Android adb shell 命令
- Android adb shell 命令
- Android ADB 命令
- Android adb shell 命令
- android adb有关命令
- android adb am命令
- Android adb命令用法
- C/C++之多级指针和结构体
- 24. Swap Nodes in Pairs
- 属性动画
- 常用的点赞效果的代码实现
- shell中&&和||的使用方法
- Android ADB命令集合
- 用ctags在终端下查看代码
- Linux设备驱动--LCD平台设备与驱动(smdk2440)
- 合并果子
- CNN卷积神经网络--反向传播(4,代码理解)
- Solr文档学习--Using the Solr Administration User Interface
- 块状链表及其实现
- ios中用到的数学函数
- 设计模式之观察者模式