ADB实战指南:解锁安卓设备的高级操作

今天咱们来聊聊一个超级强大的安卓测试及调试工具------ADB(Android Debug Bridge)。ADB 就像是安卓设备和电脑之间的桥梁,通过命令行,可以轻松地与手机进行各种操作。无论是安装应用、调试程序,还是抓取日志,ADB 都能搞定。

ADB 初印象

首先,咱们得把 ADB 安装好。如果你已经安装了 Android Studio,那 ADB 就已经包含在内了,通常位于 sdk/platform-tools 目录下。如果还没有,那就得单独下载安装了。

安装好后,咱们得确认一下电脑能否识别到安卓设备。打开命令行,输入 adb devices,如果显示你的设备信息,那就说明连接成功了!

bash 复制代码
# 检查设备连接
adb devices

小贴士:如果设备没连接上,记得检查一下 USB 调试开关是否打开(在手机的开发者选项中),还有数据线是否正常。

安装与卸载应用

ADB 的一大功能就是可以方便地安装和卸载应用。

安装应用

咱们可以用 adb install 命令来安装 APK 文件。假设你有一个 example.apk 文件,输入以下命令:

bash 复制代码
# 安装应用
adb install example.apk

如果安装成功,会显示 Success

卸载应用

卸载应用就更简单了,用 adb uninstall 命令加上应用的包名就行。比如要卸载包名为 com.example.myapp 的应用:

bash 复制代码
# 卸载应用
adb uninstall com.example.myapp

小贴士:记得,卸载命令用的是应用的包名,而不是 APK 文件名哦!

查看日志

调试安卓应用时,查看日志可是个必备技能。ADB 提供了 adb logcat 命令,可以实时查看安卓设备的日志输出。

bash 复制代码
# 查看日志
adb logcat

日志信息会不停地滚动输出,咱们可以通过关键词来过滤。比如,只想看和某个应用相关的日志,可以加上应用包名作为过滤条件:

bash 复制代码
# 过滤日志
adb logcat | grep "com.example.myapp"

小贴士:logcat 输出的日志信息非常丰富,咱们可以根据需要选择不同的日志级别(如 errorwarninfo 等)进行查看。

模拟按键和触摸

ADB 还能模拟按键和触摸操作,这在自动化测试中可是个神器。

模拟按键

比如,想模拟按下电源键,可以用 adb shell input keyevent 命令加上按键码。电源键的按键码是 26

bash 复制代码
# 模拟按下电源键
adb shell input keyevent 26

其他按键码可以在官方文档里查到,比如返回键是 4,音量加是 24,音量减是 25

模拟触摸

模拟触摸操作稍微复杂点,得指定坐标。比如,想在屏幕 (500, 1000) 的位置模拟点击一下:

bash 复制代码
# 模拟触摸点击
adb shell input tap 500 1000

还可以模拟滑动操作,比如从 (100, 200) 滑动到 (400, 800):

bash 复制代码
# 模拟滑动操作
adb shell input swipe 100 200 400 800

小贴士:模拟触摸操作的时候,记得先确定一下屏幕的分辨率,这样才能更准确地指定坐标哦!

截图与录屏

ADB 还能方便地截图和录屏,这在测试或演示的时候特别有用。

截图

截图很简单,用 adb shell screencap 命令就行。不过,这个命令默认会把截图保存到设备上,咱们还得把它拉取到电脑上。所以,更常用的方法是直接用 adb exec-out 命令结合 screencap -p,然后重定向输出到一个文件:

bash 复制代码
# 截图
adb exec-out screencap -p > screenshot.png

这样,截图就直接保存在当前目录的 screenshot.png 文件中了。

录屏

录屏稍微复杂点,得用到 adb shell screenrecord 命令。比如,想录制一个 30 秒的视频,分辨率设置为 720p:

bash 复制代码
# 录屏
adb shell screenrecord /sdcard/screen_record.mp4 --time-limit 30 --size 720x1280

录制完成后,同样得把视频文件拉取到电脑上:

bash 复制代码
# 拉取录屏文件
adb pull /sdcard/screen_record.mp4

小贴士:录屏的时候,注意一下设备的存储空间,别录着录着空间满了。

访问文件系统

通过 ADB,咱们还可以方便地访问安卓设备的文件系统,进行文件的上传和下载。

上传文件

adb push 命令可以把电脑上的文件上传到设备上。比如,想把 testfile.txt 上传到设备的 /sdcard/ 目录下:

bash 复制代码
# 上传文件
adb push testfile.txt /sdcard/

下载文件

下载文件用 adb pull 命令。比如,想把设备上的 /sdcard/testfile.txt 下载到当前目录:

bash 复制代码
# 下载文件
adb pull /sdcard/testfile.txt

小贴士:上传和下载文件的时候,注意一下路径和文件名,别搞错了。

实用脚本示例

最后,给大家分享一个实用的脚本示例,用 Python 结合 ADB 实现一个简单的自动化测试。这个脚本会模拟打开某个应用,截图保存,然后关闭应用。

python 复制代码
import os
import time
 
# 定义设备命令
def run_adb_command(command):
    return os.popen(command).read().strip()
 
# 打开应用
def open_app(package_name):
    run_adb_command(f"adb shell monkey -p {package_name} -c android.intent.category.LAUNCHER 1")
 
# 截图
def take_screenshot(filename):
    run_adb_command(f"adb exec-out screencap -p > {filename}")
 
# 关闭应用
def close_app(package_name):
    run_adb_command(f"adb shell am force-stop {package_name}")
 
# 主函数
def main():
    package_name = "com.example.myapp"  # 替换为目标应用的包名
    screenshot_filename = "app_screenshot.png"
 
    print("打开应用...")
    open_app(package_name)
    time.sleep(5)  # 等待应用打开
 
    print("截图保存...")
    take_screenshot(screenshot_filename)
 
    print("关闭应用...")
    close_app(package_name)
 
    print(f"截图已保存为 {screenshot_filename}")
 
if __name__ == "__main__":
    main()

小贴士:这个脚本只是个简单的示例,实际应用中可能需要更复杂的逻辑和异常处理。

相关推荐
程序员瓜叔1 小时前
CentOS 7 上安装 MySQL 8.0.40 (二进制安装)
mysql·adb·centos
红米饭配南瓜汤1 小时前
Android显示系统(02)- OpenGL ES - 概述
android·音视频·图形渲染
m0_726965982 小时前
Android笔记【12】脚手架Scaffold和导航Navigation
android·笔记
xiaoerbuyu12332 小时前
Android直接播放麦克风采集到的声音
android
李艺为3 小时前
RePlugin调试时执行Gradle任务rpInstallAndRunPluginDebug失败原因分析
android·java·gradle·android studio
MorleyOlsen3 小时前
【Android Debug Bridge】adb常用指令(更新中)
android·adb
小安24 小时前
android 简单实现录音功能
android
诸神黄昏EX6 小时前
Android KEY的哪些事儿
android
薯条不要番茄酱7 小时前
【JavaEE初阶】落霞与孤鹜齐飞,秋水共长天一色 - (重点)线程
android·java·java-ee
前端青山7 小时前
mock.js介绍
android·javascript·okhttp