Android adb 常用命令
发布日期:2021-06-07 09:28:24 浏览次数:9 分类:技术文章

本文共 5143 字,大约阅读时间需要 17 分钟。

Android开发环境安装好之后,需要将adb路径添加到环境变量(PATH)中,这样,就可以在命令行下直接使用adb命令了。

需要注意的是,有的命令需要先进入手机的linux系统,然后才可以使用,即adb shell, …,这里称这种命令为shell命令。另外有的命令可以直接用adb 使用,这里称之为非shell命令。通常两者可以通用的,下面会分别列出这两种命令。

常用非Shell命令

连接相关

adb version 查看adb版本adb devices 查看连接设备adb connect 
连接android设备(需要在同一网段下)adb kill-server 杀死adb 服务adb start-server 启动adb服务adb reboot 重启手机

多个Android设备

adb devices 查看连接设备adb -s 
shell 进入指定的设备shell

adb_more_devices

串口下输入命令,保证可以adb connect成功stop adbdsetprop service.adb.tcp.port 5555start adbd

应用相关

adb shell pm list packages    显示所有应用信息adb shell pm list packages -s    显示系统应用信息adb shell pm list packages -3   显示第三方应用信息adb shell pm list permissions -d -g    显示权限信息adb shell pm clear 
清除数据adb shell pm install
安装应用adb shell pm install -r -r
保留数据和缓存文件,重新安装apkadb shell pm uninstall
卸载应用(与adb uninstall相同)adb install
安装应用adb install -r
保留数据和缓存文件,重新安装apkadb uninstall
卸载应用

获取手机系统信息

adb shell cat /proc/cpuinfo     显示cpu信息adb get-serialno    获取序列号adb shell  cat /sys/class/net/wlan0/address    获取mac地址adb shell getprop ro.product.model    获取设备型号adb shell wm size    查看屏幕分辨率adb shell wm density    查看屏幕密度

log相关

adb logcat -v time    带时间戳的logadb logcat -b 
查看不同类型的log,如main,system,radio,events,crash,all.默认为main logadb logcat -c 清除logadb logcat | grep -i "str" 忽略大小写筛选指定字符串logadb logcat | grep -iE "str1|str2|str3" 筛选多个字符串adb logcat > log.txt 打印log输入到文件

fastboot模式

adb reboot-bootloaderfastboot flash boot boot.imgfastboot flash recovery recovery.imgfastboot flash android system.img

输入文本

adb shell input text "str" 在EditText中输入文本。通常在TV或者盒子上,代替用遥控器输入对应shell命令为:input text "str"注:也可以模拟其他事件,如点击,触摸等等。

文件相关

adb remount    adb push 
从PC向手机端push文件adb pull
从手机端向PC端拉取文件eg.adb remountadb push Hello.apk /system/app/Hello/

截屏与录屏

截屏:adb shell screencap -p 
截取屏幕,并设置图片存储路径adb pull
. 拉取该截图到PCadb shell rm
删除截图文件eg.adb shell screencap -p /sdcard/screen.png录屏:adb shell screenrecord
录屏

dumpsys 查看信息相关

adb shell dumpsys    显示当前android系统信息(四大组件,内容太多,一般使用重定向)adb shell dumpsys > info.txt 显示当前android系统信息(文件重定向)activity:adb shell dumpsys activity    显示当前所有activity信息adb shell dumpsys activity top    查看当前应用的 activity 信息package:adb shell dumpsys package [package_name] 查看应用信息内存:adb shell dumpsys meminfo [package_name/pid] 查看指定进程名或者是进程 id 的内存信息数据库:adb shell dumpsys dbinfo [package_name] 查看指定包名应用的数据库存储信息(包括存储的sql语句)

am 相关

启动Activity:adb shell am start -n 
/
.
eg.adb shell am start -n com.example.hello/com.example.hello.MainActivity启动Service:adb shell am startservice -n
/
.
启动serviceeg.adb shell am startservice -n com.example.test/com.example.test.TestService发送广播:adb shell am broadcast -a
发送广播

查看网络信息

adb shell netcfg    查看设备的 ip 地址adb shell netstat    查看设备的端口号信息

属性信息

adb shell getprop [prop_name]    查看属性信息adb shell setprop 
设置属性值

Monkey测试

adb shell monkey [options] 
adb shell monkey -p
-v
对指定应用,做evnet_number个随机伪事件

查看进程信息

adb shell ps    查看进程信息

常用shell命令

在命令行下先执行adb shell,进入linux系统,然后再执行这些命令。

通常,大部分非shell命令都对应shell命令。这个使用者灵活掌握即可。

eg.

adb shell logcat 对应 logcat

adb shell getprop 对应 getprop

adb shell am start -n 对应 am start -n

其他

显示cpu信息:

这里写图片描述

启动一个Activity

前提,在真机上,该Activity在AndroidManifest.xml中的exported属性必须为true才可以用adb shell 启动,在模拟器上不需要。即android:exported="true"。exported的default值是false的。

启动一个Activity:
adb shell am start -n <package name>/<activity name>
eg.

adb shell am start -n com.example.hello/com.example.hello.MainActivity

或者

adb shell am start -n com.example.hello/.MainActivity

在真机上exported为false的时候,执行命令会出现异常:

adb shell am start -n com.example.hello/.activity.HelloActivityStarting: Intent { cmp=com.example.hello/.activity.HelloActivity }java.lang.SecurityException: Permission Denial: starting Intent { flg=0x10000000 cmp=com.example.hello/.activity.HelloActivity } from null (pid=9098, uid=2000) not exported from uid 10221    at android.os.Parcel.readException(Parcel.java:1546)    at android.os.Parcel.readException(Parcel.java:1499)    at android.app.ActivityManagerProxy.startActivityAsUser(ActivityManagerNative.java:2642)    at com.android.commands.am.Am.runStart(Am.java:766)    at com.android.commands.am.Am.onRun(Am.java:305)    at com.android.internal.os.BaseCommand.run(BaseCommand.java:47)    at com.android.commands.am.Am.main(Am.java:97)    at com.android.internal.os.RuntimeInit.nativeFinishInit(Native Method)    at com.android.internal.os.RuntimeInit.main(RuntimeInit.java:284)

adb 截图命令

截图保存到SD卡里再导出

$ adb shell screencap -p /sdcard/screen.png$ adb pull /sdcard/screen.png$ adb shell rm /sdcard/screen.png

这种方法比较麻烦,需要3步:

  1. 截图保存到sdcard
  2. 将图片导出
  3. 删除sdcard中的图片

截图直接保存到电脑(Windows only)

$ adb shell screencap -p | sed 's/\r$//' > screen.png

执行adb shell 将\n转换\r\n, 因此需要用sed删除多余的\r

使用alias

修改~/.bashrc,添加一句:

alias adb-screencap="adb shell screencap -p | sed 's/\r$//'"

执行source ~/.bashrc后,可以直接使用

adb-screencap > screen.png 截图并保存到电脑上

参考:

转载地址:https://blog.csdn.net/Next_Second/article/details/73648754 如侵犯您的版权,请留言回复原文章的地址,我们会给您删除此文章,给您带来不便请您谅解!

上一篇:通信领域名词整理
下一篇:try-catch-finally 与返回值的修改

发表评论

最新留言

哈哈,博客排版真的漂亮呢~
[***.90.31.176]2024年04月18日 20时10分57秒