运行adb shell命令时#adb shell与#adb -e shell的区别是什么
adb shell与adb -e shell的区别及使用说明 核心差异
你看到两个命令效果一致,核心原因是你当前电脑只连接了唯一一台安卓设备/模拟器,adb自动匹配了目标设备。二者本质差异如下:
adb shell:未指定目标设备的通用shell命令,adb的执行逻辑为:- 仅连接1台设备(真机/模拟器均可)时,自动对该设备执行命令
- 同时连接2台及以上设备时,直接抛出错误,要求用户明确指定目标设备
adb -e shell:明确指定目标为模拟器的专属命令,-e是--emulator的缩写,执行逻辑为:- 只要当前运行且仅运行1台安卓模拟器,无论是否同时连接了其他真机,都会直接对该模拟器执行shell命令
- 当前无运行的模拟器、或同时运行了2台及以上模拟器时,直接抛出错误
特殊使用场景
- 多设备同时调试场景:同时连接了真机+运行了模拟器时,直接执行
adb shell会报错,此时无需查询设备序列号,直接输入adb -e shell即可快速进入模拟器的shell环境 - 自动化脚本场景:脚本明确需要操作模拟器时,添加
-e参数可以避免命令误执行到连接的真机上,提升脚本稳定性
相关注意事项
- 与
-e参数对应的还有-d参数,adb -d shell是明确指定目标为当前唯一连接的真机的命令,适合多设备场景下快速进入真机shell - 如果同时运行了多台模拟器,
-e参数会失效,此时需要先执行adb devices查询对应模拟器的序列号,再通过adb -s 设备序列号 shell的方式指定目标设备
内容的提问来源于stack exchange,提问作者imkf
相关产品推荐
相关产品推荐

