adb基础
2024-08-04 21:30:17 0 举报
AI智能生成
安卓adb基础总结
作者其他创作
大纲/内容
基本语法
adb [-d|-e|-s <serial-number>] <command>
如果只有一个设备/模拟器连接时,
可以省略掉 [-d|-e|-s <serial-number>] 这一部分,直接使用 adb <command>。
可以省略掉 [-d|-e|-s <serial-number>] 这一部分,直接使用 adb <command>。
在多个设备/模拟器连接的情况下较常用的是 -s <serial-number> 参数,
serial-number是指设备的设备序列号,可以通过 adb devices 命令获取。
serial-number是指设备的设备序列号,可以通过 adb devices 命令获取。
参数说明
-d:指定当前唯一通过 USB 连接的 Android 设备为命令目标
-e:指定当前唯一运行的模拟器为命令目标
-s:<serial-number> 指定相应设备序列号的设备/模拟器为命令目标
参考网页
https://blog.csdn.net/lb245557472/article/details/84068519
环境搭建与连接
安装ADB工具
Windows系统安装
Linux/Mac系统安装
验证ADB版本
连接设备
通过USB连接设备
通过Wi-Fi连接设备
解决连接问题
查看已连接设备
adb devices
基础信息查询
设备信息查询
获取设备型号
adb shell getprop ro.product.model
查看系统版本
adb version
电池状态查询
adb shell dumpsys battery
应用管理
安装应用
adb install [-l] [-r] [-t] [-s] [-d] [-g] <apk-file>
参数说明
-l:将应用安装到保护目录 /mnt/asec
-r:允许覆盖安装
-t:允许安装 AndroidManifest.xml 里 application 指定 android:testOnly=“true” 的应用
-s:将应用安装到 sdcard
-d:允许降级覆盖安装
-g:授予所有运行时权限
-r:允许覆盖安装
-t:允许安装 AndroidManifest.xml 里 application 指定 android:testOnly=“true” 的应用
-s:将应用安装到 sdcard
-d:允许降级覆盖安装
-g:授予所有运行时权限
adb install 实际是分三步完成
push apk 文件到 /data/local/tmp。
调用 pm install 安装。
删除 /data/local/tmp 下的对应 apk 文件。
卸载应用
adb uninstall [-k] <package-name>
参数说明
-k:表示卸载应用但保留数据和缓存目录
查看应用列表命令基础格式
adb shell pm list packages [-f] [-d] [-e] [-s] [-3] [-i] [-u] [--user USER_ID] [FILTER]
参数说明
无:所有应用
-f:显示应用关联的 apk 文件
-d:只显示 disabled 的应用
-e:只显示 enabled 的应用
-s:只显示系统应用
-3:只显示第三方应用
-i:显示应用的 installer
-u:包含已卸载应用
<filter>:包名包含 <filter> 字符串。例如:adb shell pm list packages huawei,查看包含huawei的应用列表
-f:显示应用关联的 apk 文件
-d:只显示 disabled 的应用
-e:只显示 enabled 的应用
-s:只显示系统应用
-3:只显示第三方应用
-i:显示应用的 installer
-u:包含已卸载应用
<filter>:包名包含 <filter> 字符串。例如:adb shell pm list packages huawei,查看包含huawei的应用列表
查看应用安装路径
adb shell pm path <package-name>
查看应用详情
adb shell dumpsys package <package-name>
与应用交互
基础格式
adb shell am <command>
常用command
start [options] <intent>:启动 <intent> 指定的 Activity
startservice [options] <intent>:启动 <intent> 指定的 Service
broadcast [options] <intent>:发送 <intent> 指定的广播
force-stop <package-name>:停止 <package-name> 相关的进程
startservice [options] <intent>:启动 <intent> 指定的 Service
broadcast [options] <intent>:发送 <intent> 指定的广播
force-stop <package-name>:停止 <package-name> 相关的进程
用于决定 intent 对象的选项
-a <action>:指定 action,比如 android.intent.action.VIEW
-c <category>:指定 category,比如 android.intent.category.APP_CONTACTS
-n <component>:指定完整 component 名,用于明确指定启动哪个 Activity
-c <category>:指定 category,比如 android.intent.category.APP_CONTACTS
-n <component>:指定完整 component 名,用于明确指定启动哪个 Activity
option支持可选参数
-D:启用调试
-W:等待启动完成
–start-profiler file:启动分析器并将结果发送到 file
-P file:类似于 --start-profiler,但当应用进入空闲状态时分析停止
-R count:重复 Activity 启动次数
-S:启动 Activity 前强行停止目标应用
–opengl-trace:启用 OpenGL 函数的跟踪
–user user_id:current
-W:等待启动完成
–start-profiler file:启动分析器并将结果发送到 file
-P file:类似于 --start-profiler,但当应用进入空闲状态时分析停止
-R count:重复 Activity 启动次数
-S:启动 Activity 前强行停止目标应用
–opengl-trace:启用 OpenGL 函数的跟踪
–user user_id:current
常用操作
启动应用/ 调起 Activity
adb shell am start [options] <intent>
例子:
adb shell am start -a android.settings.SETTINGS # 打开系统设置页面
adb shell am start -a android.intent.action.DIAL -d tel:10086 # 打开拨号页面
adb shell am start -n com.android.mms/.ui.ConversationList # 打开短信会话列表
adb shell am start -a android.settings.SETTINGS # 打开系统设置页面
adb shell am start -a android.intent.action.DIAL -d tel:10086 # 打开拨号页面
adb shell am start -n com.android.mms/.ui.ConversationList # 打开短信会话列表
调起 Service
adb shell am startservice [options] <intent>
例子:一个典型的用例是如果设备上原本应该显示虚拟按键但是没有显示
adb shell am startservice -n com.android.systemui/.SystemUIService
adb shell am startservice -n com.android.systemui/.SystemUIService
停止 Service
adb shell am stopservice [options] <intent>
强制停止应用
adb shell am force-stop <packagename>
收紧内存
adb shell am send-trim-memory <pid> <level>
参数说明
pid:进程 ID
level:HIDDEN、RUNNING_MODERATE、BACKGROUND、RUNNING_LOW、MODERATE、RUNNING_CRITICAL、COMPLETE
level:HIDDEN、RUNNING_MODERATE、BACKGROUND、RUNNING_LOW、MODERATE、RUNNING_CRITICAL、COMPLETE
发送广播
adb shell am broadcast [options] <intent>
例子:
①向所有组件广播 BOOT_COMPLETED:adb shell am broadcast -a android.intent.action.BOOT_COMPLETED
②只向 com.BootCompletedReceiver 广播 BOOT_COMPLETED:adb shell am broadcast -a android.intent.action.BOOT_COMPLETED -n com.BootCompletedReceiver
①向所有组件广播 BOOT_COMPLETED:adb shell am broadcast -a android.intent.action.BOOT_COMPLETED
②只向 com.BootCompletedReceiver 广播 BOOT_COMPLETED:adb shell am broadcast -a android.intent.action.BOOT_COMPLETED -n com.BootCompletedReceiver
部分系统预定义广播及正常触发时机
android.net.conn.CONNECTIVITY_CHANGE 网络连接发生变化
android.intent.action.SCREEN_ON 屏幕点亮
android.intent.action.SCREEN_OFF 屏幕熄灭
android.intent.action.BATTERY_LOW 电量低,会弹出电量低提示框
android.intent.action.BATTERY_OKAY 电量恢复了
android.intent.action.BOOT_COMPLETED 设备启动完毕
android.intent.action.DEVICE_STORAGE_LOW 存储空间过低
android.intent.action.DEVICE_STORAGE_OK 存储空间恢复
android.intent.action.PACKAGE_ADDED 安装了新的应用
android.net.wifi.STATE_CHANGE WiFi连接状态发生变化
android.net.wifi.WIFI_STATE_CHANGED WiFi状态变为启用/关闭/正在启动/正在关闭/未知
android.intent.action.BATTERY_CHANGED 电池电量发生变化
android.intent.action.INPUT_METHOD_CHANGED 系统输入法发生变化
android.intent.action.ACTION_POWER_CONNECTED 外部电源连接
android.intent.action.ACTION_POWER_DISCONNECTED 外部电源断开连接
android.intent.action.DREAMING_STARTED 系统开始休眠
android.intent.action.DREAMING_STOPPED 系统停止休眠
android.intent.action.WALLPAPER_CHANGED 壁纸发生变化
android.intent.action.HEADSET_PLUG 插入耳机
android.intent.action.MEDIA_UNMOUNTED 卸载外部介质
android.intent.action.MEDIA_MOUNTED 挂载外部介质
android.os.action.POWER_SAVE_MODE_CHANGED 省电模式开启
android.intent.action.SCREEN_ON 屏幕点亮
android.intent.action.SCREEN_OFF 屏幕熄灭
android.intent.action.BATTERY_LOW 电量低,会弹出电量低提示框
android.intent.action.BATTERY_OKAY 电量恢复了
android.intent.action.BOOT_COMPLETED 设备启动完毕
android.intent.action.DEVICE_STORAGE_LOW 存储空间过低
android.intent.action.DEVICE_STORAGE_OK 存储空间恢复
android.intent.action.PACKAGE_ADDED 安装了新的应用
android.net.wifi.STATE_CHANGE WiFi连接状态发生变化
android.net.wifi.WIFI_STATE_CHANGED WiFi状态变为启用/关闭/正在启动/正在关闭/未知
android.intent.action.BATTERY_CHANGED 电池电量发生变化
android.intent.action.INPUT_METHOD_CHANGED 系统输入法发生变化
android.intent.action.ACTION_POWER_CONNECTED 外部电源连接
android.intent.action.ACTION_POWER_DISCONNECTED 外部电源断开连接
android.intent.action.DREAMING_STARTED 系统开始休眠
android.intent.action.DREAMING_STOPPED 系统停止休眠
android.intent.action.WALLPAPER_CHANGED 壁纸发生变化
android.intent.action.HEADSET_PLUG 插入耳机
android.intent.action.MEDIA_UNMOUNTED 卸载外部介质
android.intent.action.MEDIA_MOUNTED 挂载外部介质
android.os.action.POWER_SAVE_MODE_CHANGED 省电模式开启
文件管理
推送文件到设备
使用adb push命令
adb pull <remote> [local]
参数说明
remote:模拟器/设备里的文件路径
local:计算机上的目录,参数可以省略,默认复制到当前目录
local:计算机上的目录,参数可以省略,默认复制到当前目录
例子:将 /sdcard/music.mp4 下载到计算机的当前目录:adb pull /sdcard/music.mp4
从设备拉取文件
使用adb pull命令
adb push <local> <remote>
例子:adb push D:\Download\music.mp4 /sdcard/music/
浏览设备文件系统
使用adb shell命令
切换到目标目录
adb shell cd <directory>
输出当前目录路径
adb shell pwd
列出指定目录的内容
adb shell ls [options] <directory>
可用参数
无:列出目录下的所有文件和目录
-a:列出目录下的所有文件(包括隐藏的)
-i:列出目录下的所有文件和索引编号
-s:列出目录下的所有文件和文件大小
-n:列出目录下的所有文件及其 UID和 GID
-R:列出目录下的所有子目录中的文件
-a:列出目录下的所有文件(包括隐藏的)
-i:列出目录下的所有文件和索引编号
-s:列出目录下的所有文件和文件大小
-n:列出目录下的所有文件及其 UID和 GID
-R:列出目录下的所有子目录中的文件
创建目录
adb shell mkdir [options] <directory-name>
可选参数
无:创建指定目录
-m:创建指定目录并赋予读写权限
-p:创建指定目录及其父目录
-m:创建指定目录并赋予读写权限
-p:创建指定目录及其父目录
删除文件或目录
adb shell rm [options] <files or directory>
可选参数
无:删除文件
-f:强制删除文件,系统不提示
-r:强制删除指定目录中的所有文件和子目录
-d:删除指定目录,即使它是一个非空目录。rm -d 等同于 rmdir 命令,有些版本不包含-d 参数。
-i:交互式删除,删除前提示
-f:强制删除文件,系统不提示
-r:强制删除指定目录中的所有文件和子目录
-d:删除指定目录,即使它是一个非空目录。rm -d 等同于 rmdir 命令,有些版本不包含-d 参数。
-i:交互式删除,删除前提示
复制文件或目录
adb shell cp [options] <source> <dest>
移动或重命名文件
adb shell mv [options] <source> <dest>
创建空文件或改变文件时间戳
adb shell touch [options] <file>
可通过 ls -n <directory> 命令查看文件的时间。
修改文件权限
chmod命令使用
adb shell chmod 755 <file_or_directory>:为文件或目录设置读、写和执行权限。这允许所有者读取、写入和执行,组和其他用户只允许读取和执行。
adb shell chmod 700 <file_or_directory>:为文件或目录设置仅所有者的读、写和执行权限。组和其他用户没有权限。
adb shell chmod 644 <file_or_directory>:为文件设置所有者的读写权限和组及其他用户的只读权限。对于目录,这相当于chmod 755。
adb shell chmod 600 <file_or_directory>:为文件设置仅所有者的读写权限。组和其他用户没有权限。对于目录,这不会改变其权限,因为目录至少需要执行权限才能访问其子项。
adb shell chmod +x <file_or_directory>:为文件或目录添加执行权限。
adb shell chmod -x <file_or_directory>:从文件或目录中删除执行权限。
adb shell chmod u+w <file_or_directory>:为文件或目录的所有者添加写权限。
adb shell chmod u-w <file_or_directory>:从文件或目录的所有者中删除写权限。
调试与日志
日志输出
Android 系统的日志分为两部分
底层的 Linux 内核日志输出到 /proc/kmsg
Android 的日志输出到 /dev/log
查看系统日志
android日志
adb logcat [option] [filter-specs]
将日志格式化输出
adb logcat -v <format>
format说明
brief:<priority>/<tag>(<pid>): <message>
process:<priority>(<pid>) <message>
tag:<priority>/<tag>: <message>
raw:<message>
time:<datetime> <priority>/<tag>(<pid>): <message>
threadtime:<datetime> <pid> <tid> <priority> <tag>: <message>
long:[ <datetime> <pid>:<tid> <priority>/<tag> ] <message>
process:<priority>(<pid>) <message>
tag:<priority>/<tag>: <message>
raw:<message>
time:<datetime> <priority>/<tag>(<pid>): <message>
threadtime:<datetime> <pid> <tid> <priority> <tag>: <message>
long:[ <datetime> <pid>:<tid> <priority>/<tag> ] <message>
例子:
日志格式默认为 brief,指定格式可与下面的过滤同时使用。比如:
adb logcat -v long ActivityManager:I *:S
日志格式默认为 brief,指定格式可与下面的过滤同时使用。比如:
adb logcat -v long ActivityManager:I *:S
查看具体某个应用的日志
adb logcat -v <format> | grep <package name>
例子:adb logcat -v time | grep com.example.myapp
adb logcat * | find “AppName”
清空已存在的日志
adb logcat -c
将日志显示在控制台
adb logcat -d
将日志输出到文件
adb logcat > file-path
例子:adb logcat | findstr AppName >D:\log.txt
加载一个可使用的日志缓冲区供查看
adb logcat -b <Buffer>
缓冲区主要给系统组件使用,一般的应用不需要关心,应用的log都输出到main缓冲区中。
默认log输出(不指定缓冲区的情况下)是输出System和Main缓冲区的log。
默认log输出(不指定缓冲区的情况下)是输出System和Main缓冲区的log。
打印指定日志缓冲区的大小
adb logcat -g
内核日志
adb shell dmesg
通过内核日志我们可以做一些事情,比如衡量内核启动时间,在系统启动完毕后的内核日志里找到 Freeing init memory 那一行前面的时间就是。
过滤日志内容
按级别过滤日志
adb logcat [filter-specs]
级别优先级说明
*:V--过滤只显示 Verbose 及以上级别(优先级最低)
*:D--过滤只显示 Debug 及以上级别
*:I--过滤只显示 Info 及以上级别
*:W--过滤只显示 Warning 及以上级别
*:E--过滤只显示 Error 及以上级别
*:F--过滤只显示 Fatal 及以上级别
*:S--过滤只显示 Silent 及以上级别(优先级最高,什么也不输出)
*:D--过滤只显示 Debug 及以上级别
*:I--过滤只显示 Info 及以上级别
*:W--过滤只显示 Warning 及以上级别
*:E--过滤只显示 Error 及以上级别
*:F--过滤只显示 Fatal 及以上级别
*:S--过滤只显示 Silent 及以上级别(优先级最高,什么也不输出)
例子:
adb logcat *:W 会将 Warning、Error、Fatal 和 Silent 日志输出。
(注: 在 macOS 下需要给 *:W 这样以 * 作为 tag 的参数加双引号,如 adb logcat "*:W",不然会报错 no matches found: *:W。)
adb logcat *:W 会将 Warning、Error、Fatal 和 Silent 日志输出。
(注: 在 macOS 下需要给 *:W 这样以 * 作为 tag 的参数加双引号,如 adb logcat "*:W",不然会报错 no matches found: *:W。)
按tag和级别过滤日志
adb logcat [tag:level] [tag:level] ...
例子:adb logcat ActivityManager:I MyApp:D *:S
表示输出 tag ActivityManager 的 Info 以上级别日志,
输出 tag MyApp 的 Debug 以上级别日志,及其它 tag 的 Silent 级别日志(即屏蔽其它 tag 日志)
表示输出 tag ActivityManager 的 Info 以上级别日志,
输出 tag MyApp 的 Debug 以上级别日志,及其它 tag 的 Silent 级别日志(即屏蔽其它 tag 日志)
截图与录屏
屏幕截图
adb exec-out screencap -p > sc.png
输出结果为sc.png
屏幕录制
adb shell screenrecord /sdcard/filename.mp4
保存位置为:/sdcard/filename.mp4
可以使用 adb shell screenrecord --help 查看 screenrecord 命令的帮助信息
性能分析
使用dumpsys命令
adb dumpsys activity:显示有关当前活动、最近启动的活动和与活动相关的信息。
adb dumpsys batterystats:显示电池统计信息,包括充电状态、放电状态、电池使用时间等。
adb dumpsys cpuinfo:显示CPU使用率信息,包括每个应用程序和系统的CPU使用率。
adb dumpsys meminfo:显示内存使用情况,包括应用程序的内存占用、垃圾回收统计等。
adb dumpsys network_stats:显示网络统计信息,包括数据使用情况、网络接口状态等。
adb dumpsys wifi:显示Wi-Fi相关信息,包括连接状态、信号强度、已知的Wi-Fi网络等。
adb dumpsys window:显示窗口管理信息,包括当前屏幕上显示的窗口、焦点窗口等。
adb dumpsys package:显示有关指定应用程序包的信息,包括安装状态、版本号、权限等。
adb dumpsys batterystats:显示电池统计信息,包括充电状态、放电状态、电池使用时间等。
adb dumpsys cpuinfo:显示CPU使用率信息,包括每个应用程序和系统的CPU使用率。
adb dumpsys meminfo:显示内存使用情况,包括应用程序的内存占用、垃圾回收统计等。
adb dumpsys network_stats:显示网络统计信息,包括数据使用情况、网络接口状态等。
adb dumpsys wifi:显示Wi-Fi相关信息,包括连接状态、信号强度、已知的Wi-Fi网络等。
adb dumpsys window:显示窗口管理信息,包括当前屏幕上显示的窗口、焦点窗口等。
adb dumpsys package:显示有关指定应用程序包的信息,包括安装状态、版本号、权限等。
使用traceview工具
traceview 是Android SDK中的一个性能分析工具
步骤
①启动Traceview:使用以下命令启动
adb shell am start -n <your_activity_name> --es tracefile <output_file_path>
将 <your_activity_name> 替换为分析的活动的完整名称(包括包名),将 <output_file_path> 替换为存储跟踪数据的文件路径。
例如:
adb shell am start -n com.example.myapp/.MainActivity --es tracefile /data/anr/myapp_trace.txt
这将启动名为 com.example.myapp.MainActivity 的活动,并开始收集性能数据,将其存储在 /data/anr/myapp_trace.txt 文件中。
adb shell am start -n <your_activity_name> --es tracefile <output_file_path>
将 <your_activity_name> 替换为分析的活动的完整名称(包括包名),将 <output_file_path> 替换为存储跟踪数据的文件路径。
例如:
adb shell am start -n com.example.myapp/.MainActivity --es tracefile /data/anr/myapp_trace.txt
这将启动名为 com.example.myapp.MainActivity 的活动,并开始收集性能数据,将其存储在 /data/anr/myapp_trace.txt 文件中。
②停止Traceview并获取数据:要停止数据收集并将跟踪数据传输到计算机上,请使用以下命令
adb pull /data/anr/<output_file_path> <local_output_file_path>
adb shell am force-stop <your_package_name>
将 <output_file_path> 替换为上一步中使用的输出文件路径,将 <local_output_file_path> 替换为希望将文件复制到的本地计算机上的路径,将 <your_package_name> 替换为应用程序包名。
例如:
adb pull /data/anr/myapp_trace.txt ~/Downloads/myapp_trace.txt
adb shell am force-stop com.example.myapp
③打开Traceview并分析数据:可以在Android SDK的 tools 目录中找到 traceview.bat(Windows)或 traceview(Linux/macOS)脚本,并运行它。将跟踪数据文件作为参数传递:
./traceview ~/Downloads/myapp_trace.txt
这将启动Traceview工具,并显示性能数据的图形化视图。可以使用此工具分析应用程序的性能瓶颈,找到CPU和内存使用的异常情况,并优化代码以提高性能。
高级操作
模拟用户操作
模拟按键/输入
adb shell input keyevent <keycode>
参数说明:keycode支持输入数字或者单词代号
https://blog.csdn.net/h_bpdwn/article/details/91425599
常见例子
电源键:adb shell input keyevent 26/POWER
菜单键:adb shell input keyevent 82/MENU
home键:adb shell input keyevent 3/HOME
返回键:adb shell input keyevent 4/BACK
音量控制------
增加音量:adb shell input keyevent 24/VOLUME_UP
降低音量:adb shell input keyevent 25/VOLUME_DOWN
静音:adb shell input keyevent 164/VOLUME_MUTE
媒体控制------
播放:adb shell input keyevent 85/MEDIA_PLAY
暂停:adb shell input keyevent 127/MEDIA_PAUSE
停止播放:adb shell input keyevent 86/MEDIA_STOP
播放上一首:adb shell input keyevent 88/MEDIA_PREVIOUS
播放下一首:adb shell input keyevent 87/MEDIA_NEXT
菜单键:adb shell input keyevent 82/MENU
home键:adb shell input keyevent 3/HOME
返回键:adb shell input keyevent 4/BACK
音量控制------
增加音量:adb shell input keyevent 24/VOLUME_UP
降低音量:adb shell input keyevent 25/VOLUME_DOWN
静音:adb shell input keyevent 164/VOLUME_MUTE
媒体控制------
播放:adb shell input keyevent 85/MEDIA_PLAY
暂停:adb shell input keyevent 127/MEDIA_PAUSE
停止播放:adb shell input keyevent 86/MEDIA_STOP
播放上一首:adb shell input keyevent 88/MEDIA_PREVIOUS
播放下一首:adb shell input keyevent 87/MEDIA_NEXT
输入文本
adb shell input text hello
在焦点处于某文本框时,可以通过 input 命令来输入文本。
点击屏幕
点亮屏幕
adb shell input keyevent 224
熄灭屏幕
adb shell input keyevent 223
滑动屏幕
adb shell input swipe 300 1000 300 500
参数说明:参数 300 1000 300 500 分别表示起始点x坐标 起始点y坐标 结束点x坐标 结束点y坐标。
系统命令执行
重启设备
adb shell am broadcast -a android.intent.action.REBOOT
关机设备
adb shell am broadcast -a android.intent.action.SHUTDOWN
进入recovery模式
adb shell am broadcast -a android.intent.action.MASTER_CLEAR
端口转发
设置端口转发
adb reverse命令
查看端口转发状态
adb forward --list
查看进程状态
adb shell ps
查看处理器实时状态
adb shell top [-m max_procs] [-n iterations] [-d delay] [-s sort_column] [-t] [-h]
查看进程 UID
通过 ps 命令找到对应进程的 pid 之后 adb shell cat /proc/<pid>/status | grep Uid
例子:
adb shell
gemini:/ $ ps | grep org.mazhuang.guanggoo
u0_a394 28635 770 1795812 78736 SyS_epoll_ 0000000000 S org.mazhuang.guanggoo
gemini:/ $ cat /proc/28635/status | grep Uid
Uid: 10394 10394 10394 10394
adb shell
gemini:/ $ ps | grep org.mazhuang.guanggoo
u0_a394 28635 770 1795812 78736 SyS_epoll_ 0000000000 S org.mazhuang.guanggoo
gemini:/ $ cat /proc/28635/status | grep Uid
Uid: 10394 10394 10394 10394
使用 Monkey 进行压力测试
简单用法:adb shell monkey -p <packagename> -v 500
表示向 <packagename> 指定的应用程序发送 500 个伪随机事件。
表示向 <packagename> 指定的应用程序发送 500 个伪随机事件。
ADB无线调试
启用无线调试
连接无线ADB
安全与维护
备份与恢复
数据备份
adb backup -f <backup_file> <your_package_name>
例子:adb backup -f ~/myapp_backup.ab com.example.myapp
数据恢复
adb restore <backup_file>
例子:adb restore ~/myapp_backup.ab
清理缓存
清理应用缓存
adb shell pm clear <your_package_name>
清理系统缓存
adb shell am broadcast -a android.intent.action.CLEAR_APP_CACHE
权限管理
查看应用权限
显示设备上所有权限的分组列表:adb shell pm list permissions -g
每个分组后面跟着一个权限标签,指示该分组包含哪些权限。
每个分组后面跟着一个权限标签,指示该分组包含哪些权限。
查看特定应用权限:adb shell dumpsys package <your_package_name> | grep -i permission
修改应用权限
授予权限
adb shell pm grant <your_package_name> <permission>
撤销权限
adb shell pm revoke <your_package_name> <permission>
0 条评论
下一页