本文主要分享adb 设备管理、本地/远程设备文件拷贝、shell中am的常用操作,如有错误,欢迎指正。
更多Android技术分享可以关注我的Android技术圈子,也可以加入QQ群号:690347536,学习交流Android开发技能。
一、将命令发送至特定设备
如果有多个设备在运行,adb命令必须指定目标设备,用-s 指定目标设备:
比如:
adb -s emulator-5555 install helloWorld.apk
[-e] 有多个设备但只有一个是模拟器
[-d] 有多个设备但只有一个是硬件设备
注意:如果您在多个设备可用时发出命令但未指定目标设备,adb 会生成错误。
二、安装apk\卸载apk
安装apk常用命令:
adb install pathOfAPK
[-r] 不用卸载直接覆盖安装
[-t] 安装未签名apk
[-l] 锁定应用程序
[-d] 允许降级覆盖安装
[-p] 部分应用安装(仅分包应用可安装)
[-g] 为应用程序授予所有运行时的权限
卸载apk常用命令:
adb uninstall packageName
[-k] 保留缓存数据
三、将文件复制到设备/从设备复制文件
从设备中复制某个文件或目录(及其子目录)
adb pull remote local
将某个文件或目录(及其子目录)复制到设备
adb push local remote
将 local
和 remote
替换为开发机器(本地)和设备(远程)上的目标文件/目录的路径
四、停止/启动 adb 服务
adb kill-server
adb start-server
五、执行shell命令
- 执行shell:
adb [-d |-e | -s serial_number] shell [shell_command]
- 退出shell
exit
- 启动Activity
am start [options]
例子:
am start -a android.intent.action.View 隐式调用具有浏览器功能的应用
am start -n com.android.camera2/com.android.camera.CameraActivity 打开相机
[options]支持的参数如下:
命令 | 说明 |
---|---|
-D | 启用调试功能 |
-W | 等待启动完成 |
--start-profiler file | 启动性能剖析器并将结果发送至 file |
-P file | 类似于 --start-profiler ,但当应用进入空闲状态时剖析停止 |
-R count | 重复启动 Activity count 次。在每次重复前,将完成顶层 Activity |
-S | 在启动 Activity 前,强行停止目标应用 |
--opengl-trace | 启用 OpenGL 函数的跟踪 |
--user user_id | 指定要作为哪个用户运行;如果未指定,则作为当前用户运行 |
- 启动service
am startservice [options]
5.启动broadcast
am broadcast [options]
intent 常用参数的规范
-a action
指定 intent 操作,如 android.intent.action.VIEW
。只能声明一次。
-d data_uri
指定 intent 数据 URI,如 content://contacts/people/1
。只能声明一次。
-t mime_type
指定 intent MIME 类型,如 image/png
。只能声明一次。
-c category
指定 intent 类别,如 android.intent.category.APP_CONTACTS
。
-n component
指定带有软件包名称前缀的组件名称以创建显式 intent,如 com.example.app/.ExampleActivity
。
-f flags
向 setFlags()
支持的 intent 添加标记。
--esn extra_key
添加一个空 extra。URI intent 不支持此选项。
-e | --es extra_key extra_string_value
以键值对的形式添加字符串数据。
--ez extra_key extra_boolean_value
以键值对的形式添加布尔值数据。
--ei extra_key extra_int_value
以键值对的形式添加整数型数据。
--el extra_key extra_long_value
以键值对的形式添加长整型数据。
--ef extra_key extra_float_value
以键值对的形式添加浮点型数据。
--eu extra_key extra_uri_value
以键值对的形式添加 URI 数据。
--ecn extra_key extra_component_name_value
添加组件名称,该名称作为 ComponentName
对象进行转换和传递。
--eia extra_key extra_int_value[,extra_int_value...]
添加整数数组。
--ela extra_key extra_long_value[,extra_long_value...]
添加长整数数组。
--efa extra_key extra_float_value[,extra_float_value...]
添加浮点数数组。
--grant-read-uri-permission
添加 FLAG_GRANT_READ_URI_PERMISSION
标记。
--grant-write-uri-permission
添加 FLAG_GRANT_WRITE_URI_PERMISSION
标记。
--debug-log-resolution
添加 FLAG_DEBUG_LOG_RESOLUTION
标记。
--exclude-stopped-packages
添加 FLAG_EXCLUDE_STOPPED_PACKAGES
标记。
--include-stopped-packages
添加 FLAG_INCLUDE_STOPPED_PACKAGES
标记。
--activity-brought-to-front
添加 FLAG_ACTIVITY_BROUGHT_TO_FRONT
标记。
--activity-clear-top
添加 FLAG_ACTIVITY_CLEAR_TOP
标记。
--activity-clear-when-task-reset
添加 FLAG_ACTIVITY_CLEAR_WHEN_TASK_RESET
标记。
--activity-exclude-from-recents
添加 FLAG_ACTIVITY_EXCLUDE_FROM_RECENTS
标记。
--activity-launched-from-history
添加 FLAG_ACTIVITY_LAUNCHED_FROM_HISTORY
标记。
--activity-multiple-task
添加 FLAG_ACTIVITY_MULTIPLE_TASK
标记。
--activity-no-animation
添加 FLAG_ACTIVITY_NO_ANIMATION
标记。
--activity-no-history
添加 FLAG_ACTIVITY_NO_HISTORY
标记。
--activity-no-user-action
添加 FLAG_ACTIVITY_NO_USER_ACTION
标记。
--activity-previous-is-top
添加 FLAG_ACTIVITY_PREVIOUS_IS_TOP
标记。
--activity-reorder-to-front
添加 FLAG_ACTIVITY_REORDER_TO_FRONT
标记。
--activity-reset-task-if-needed
添加 FLAG_ACTIVITY_RESET_TASK_IF_NEEDED
标记。
--activity-single-top
添加 FLAG_ACTIVITY_SINGLE_TOP
标记。
--activity-clear-task
添加 FLAG_ACTIVITY_CLEAR_TASK
标记。
--activity-task-on-home
添加 FLAG_ACTIVITY_TASK_ON_HOME
标记。
--receiver-registered-only
添加 FLAG_RECEIVER_REGISTERED_ONLY
标记。
--receiver-replace-pending
添加 FLAG_RECEIVER_REPLACE_PENDING
标记。
-
--selector
需要使用-d
和-t
选项设置 intent 数据和类型。
- 停止进程
am force-stop package 强行停止与package相关的所有进程
am kill [options] package 终止与 `package`(应用的软件包名称)关联的所有进程
此命令仅终止可安全终止且不会影响用户体验的进程
am kill-all 终止所有后台进程
更多Android技术分享可以关注我的Android技术圈子,也可以加入QQ群号:690347536,学习交流Android开发技能。