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 输出的日志信息非常丰富,咱们可以根据需要选择不同的日志级别(如 error、warn、info 等)进行查看。

模拟按键和触摸

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()

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

相关推荐
千里马学框架3 天前
一起学 Android 14:ShellTransition 屏幕旋转过程深度剖析
android·智能手机·性能优化·framework·性能·屏幕旋转·rotation
美狐美颜SDK开放平台3 天前
开发直播APP时如何接入视频美颜SDK?开发流程与注意事项
android·人工智能·计算机视觉·音视频·直播美颜sdk
AFinalStone3 天前
Android7 SystemUI源码解析(七)Keyguard锁屏模块深度解析
android·systemui
致远ccc3 天前
Google Play 上架前如何测试 App?多国家 Android 环境测试
android·app测试·googleplay·多国家应用测试
ttyyttemo3 天前
Kotlin 协程中的 Job 结构化并发与取消
android
sun0077003 天前
tbox 4g/5g切换,导致wan ip 改变,导致车机旧网络不可用。需要重启车机才行
android
其实防守也摸鱼3 天前
内网穿透与反向代理:原理、工具与实战指南
android·大数据·运维·安全·网络安全·自动化·渗透
AFinalStone3 天前
Android7 SystemUI 源码解析(四)NavigationBar 导航栏与 SystemBars
android·systemui
JMchen3 天前
属性动画原理与高级动画实现
android·kotlin·canvas
AFinalStone3 天前
Android7 SystemUI 源码解析(二)启动流程深度解析
android·systemui