
ADB Shell 与 Bash 脚本自动化5个实用脚本实现批量APK安装与日志抓取在Android开发和设备管理过程中重复性任务往往消耗大量时间。本文将介绍如何通过ADB Shell与Bash脚本的结合实现高效自动化操作。这些脚本不仅可以直接应用于日常工作还能根据需求灵活调整。1. 基础环境准备在开始编写自动化脚本前需要确保开发环境配置正确。这包括安装ADB工具和配置设备连接。1.1 安装ADB工具ADBAndroid Debug Bridge是Android SDK的一部分可以通过以下方式获取# 在Linux/macOS上安装 sudo apt-get install android-tools-adb # Debian/Ubuntu brew install android-platform-tools # macOS with HomebrewWindows用户可以从 Android开发者网站 下载独立的Platform Tools包。1.2 设备连接验证安装完成后通过USB连接Android设备并启用开发者选项中的USB调试模式。运行以下命令验证连接adb devices正常连接时会显示设备序列号和状态。如果设备未列出可能需要检查USB驱动或重新插拔设备。提示无线调试模式下可通过adb connect IP:port建立连接无需物理线缆。2. 批量APK安装脚本手动安装多个APK文件既耗时又容易出错。以下脚本可以自动遍历目录中的所有APK文件并依次安装。2.1 基础安装脚本#!/bin/bash # 批量安装当前目录下所有APK文件 for apk in *.apk; do echo 正在安装: $apk adb install -r $apk if [ $? -eq 0 ]; then echo $apk 安装成功 else echo $apk 安装失败 fi done2.2 多设备支持版本当需要同时管理多台设备时可以使用以下增强版脚本#!/bin/bash # 多设备批量安装脚本 DEVICES$(adb devices | tail -n 2 | cut -sf 1) for device in $DEVICES; do echo 正在处理设备: $device for apk in *.apk; do adb -s $device install -r $apk \ echo $apk 在 $device 安装成功 || \ echo $apk 在 $device 安装失败 done done参数说明-r允许覆盖安装现有应用-s指定目标设备序列号3. 智能日志抓取与分析日志分析是调试和问题排查的关键环节。以下脚本可以自动抓取日志并按条件过滤。3.1 基础日志抓取#!/bin/bash # 抓取并保存日志到文件 LOG_FILEdevice_log_$(date %Y%m%d_%H%M%S).log adb logcat -d $LOG_FILE echo 日志已保存到: $LOG_FILE3.2 带过滤的高级日志抓取#!/bin/bash # 按关键词过滤日志 KEYWORD$1 LOG_FILEfiltered_log_$(date %Y%m%d).log adb logcat -d | grep -i $KEYWORD $LOG_FILE echo 已过滤包含 $KEYWORD 的日志到: $LOG_FILE常用过滤技巧参数说明-s TAG按标签过滤-v time显示时间戳*:W仅显示警告及以上级别4. 应用包管理系统批量管理设备上的应用包可以显著提高效率。以下是几个实用脚本。4.1 批量卸载脚本#!/bin/bash # 按前缀批量卸载应用 PREFIXcom.example PACKAGES$(adb shell pm list packages | grep $PREFIX | cut -d: -f2) for pkg in $PACKAGES; do adb uninstall $pkg \ echo 已卸载: $pkg || \ echo 卸载失败: $pkg done4.2 应用数据清理#!/bin/bash # 清除指定应用的所有数据 PKG_NAME$1 adb shell pm clear $PKG_NAME5. 综合管理脚本将常用功能整合到一个脚本中可以通过参数调用不同功能。#!/bin/bash # 综合管理脚本 case $1 in install) for apk in ${:2}; do adb install -r $apk done ;; uninstall) adb uninstall $2 ;; log) adb logcat -d log_$(date %s).txt ;; *) echo 用法: $0 [install|uninstall|log] [参数] exit 1 ;; esac6. 高级技巧与优化6.1 无线调试自动化Android 11支持无线ADB调试可以通过脚本自动完成配对#!/bin/bash # 无线ADB连接脚本 IP192.168.1.100 PORT5555 adb pair $IP:$PORT adb connect $IP:$PORT6.2 定期任务设置结合cron可以创建定期执行的自动化任务。例如每天备份特定应用数据0 3 * * * /path/to/backup_script.sh6.3 错误处理增强为脚本添加完善的错误处理#!/bin/bash # 带错误处理的脚本 set -euo pipefail trap echo 脚本被中断; exit 1 INT TERM main() { # 主逻辑 } if [[ ${BASH_SOURCE[0]} ${0} ]]; then main $ fi在实际项目中这些脚本可以节省大量重复操作时间。根据具体需求可以进一步扩展功能或与其他工具集成。