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

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

相关推荐
阿巴斯甜16 小时前
Android 报错:Zip file '/Users/lyy/develop/repoAndroidLapp/l-app-android-ble/app/bu
android
Kapaseker17 小时前
实战 Compose 中的 IntrinsicSize
android·kotlin
xq952718 小时前
Andorid Google 登录接入文档
android
黄林晴19 小时前
告别 Modifier 地狱,Compose 样式系统要变天了
android·android jetpack
冬奇Lab1 天前
Android触摸事件分发、手势识别与输入优化实战
android·源码阅读
城东米粉儿1 天前
Android MediaPlayer 笔记
android
Jony_1 天前
Android 启动优化方案
android
阿巴斯甜1 天前
Android studio 报错:Cause: error=86, Bad CPU type in executable
android
张小潇1 天前
AOSP15 Input专题InputReader源码分析
android
_小马快跑_2 天前
Kotlin | 协程调度器选择:何时用CoroutineScope配置,何时用launch指定?
android