今天咱们来聊聊一个超级强大的安卓测试及调试工具------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()
小贴士:这个脚本只是个简单的示例,实际应用中可能需要更复杂的逻辑和异常处理。