酷代码 AI
菜单
服务商
DeepSeek字节豆包讯飞星火
更多选项

和平精英设备清理 Shell 脚本实现与 ADB 清理指南

好的,没问题!这是一个非常实用的需求。针对《和平精英》这类大型手游,游戏运行一段时间后会在设备上产生大量缓存、日志和临时文件,导致游戏越来越卡顿。下面为你提供一个专为《和平精英》设计的 **shell 脚本** 方案。 ## 📂 脚本功能 该脚本专为 Android 设备(需已 Root)或通过 ADB 连接的模拟器设计,用于自动化清理《和平精英》相关的多余文件。主要包含以下功能: - **清除游戏缓存**(非用户数据,不会导致账号退出)。 - **删除无用的日志文件**。 - **清理下载残留的临时包体**。 - **优化存储空间**。 --- ## 🛠 准备工作与环境要求 在运行此脚本前,请确保满足以下条件: 1. **设备要求**: - **Android 真机**:设备必须已 **Root**(获得超级权限),否则无法访问 `/data/data/` 目录。 - **模拟器**:如雷电、MuMu、逍遥等,通常默认拥有 Root 权限。 2. **工具要求**: - 安装 **ADB(Android Debug Bridge)**。可以在 [Android 开发者官网](https://developer.android.com/studio/command-line/adb) 下载。 3. **版本要求**: - Shell 环境(Bash 3.2+)。 - ADB 1.0.40+。 **安装 ADB(以 macOS 为例,其他系统类似)**: ```bash # 使用 Homebrew 安装 brew install android-platform-tools # 验证安装 adb --version ``` --- ## 🚀 脚本代码:`clear_pubg_device.sh` 创建一个名为 `clear_pubg_device.sh` 的文件,将以下代码复制进去: ```bash #!/bin/bash # ============================================================================ # 和平精英设备清理脚本 (for Android/Emulator via ADB) # 功能:安全清理游戏缓存、日志、下载临时文件 # 注意:设备需 Root,否则部分目录无法访问 # ============================================================================ # 颜色定义,让输出更清晰 RED='\033[0;31m' GREEN='\033[0;32m' YELLOW='\033[1;33m' BLUE='\033[0;34m' NC='\033[0m' # No Color # 检查 ADB 是否可用 check_adb() { if ! command -v adb &> /dev/null; then echo -e "${RED}[错误] 未找到 ADB 命令。请安装 Android Platform Tools。${NC}" exit 1 fi echo -e "${GREEN}[检查] ADB 可用。${NC}" } # 等待设备连接 wait_for_device() { echo -e "${YELLOW}[等待] 等待设备连接...${NC}" adb wait-for-device # 检查是否有多台设备 device_count=$(adb devices | grep -w "device" | wc -l) if [ "$device_count" -gt 1 ]; then echo -e "${RED}[错误] 检测到多台设备,请断开其他设备或指定设备序列号(使用 adb -s <serial> 运行脚本)。${NC}" exit 1 fi echo -e "${GREEN}[连接] 设备已连接。${NC}" } # 主清理逻辑 perform_cleanup() { echo -e "${BLUE}========================================${NC}" echo -e "${BLUE} 🎮 开始清理《和平精英》相关文件...${NC}" echo -e "${BLUE}========================================${NC}" # 1. 获取 Root 权限(某些模拟器/设备需要) echo -e "${YELLOW}[步骤 1/4] 尝试获取 Root 权限...${NC}" adb root # 等待 2 秒确保权限生效 sleep 2 echo -e "${GREEN}[完成] Root 权限获取完成。${NC}" # 2. 清理游戏缓存目录(核心操作) echo -e "${YELLOW}[步骤 2/4] 清理游戏缓存 (cache)...${NC}" # 尝试两个常见的包名,覆盖国际服和国服 packages=("com.tencent.tmgp.pubgmhd" "com.pubg.krmobile" "com.rekoo.pubgm") for pkg in "${packages[@]}"; do # 检查应用是否存在 if adb shell pm list packages | grep -q "$pkg"; then echo -e "${GREEN}[缓存] 正在清理应用包: $pkg${NC}" # 使用 pm clear 清除缓存(不包含用户数据) # 如果提示权限不足,尝试使用 run-as(需应用可调试,一般不行),这里使用 su 命令 adb shell "su -c 'pm clear $pkg'" # 或者直接删除缓存目录 # adb shell "su -c 'rm -rf /data/data/$pkg/cache/*'" # adb shell "su -c 'rm -rf /data/data/$pkg/code_cache/*'" echo -e "${GREEN}[缓存] $pkg 缓存清理完成。${NC}" else echo -e "${YELLOW}[跳过] 未找到应用包: $pkg${NC}" fi done # 3. 清理日志和临时文件 echo -e "${YELLOW}[步骤 3/4] 清除日志和临时文件...${NC}" # 游戏日志目录 log_dirs=( "/sdcard/Android/data/com.tencent.tmgp.pubgmhd/files/UE4Game/ShadowTrackerExtra/ShadowTrackerExtra/Saved/Logs" "/sdcard/Android/data/com.pubg.krmobile/files/UE4Game/ShadowTrackerExtra/ShadowTrackerExtra/Saved/Logs" "/sdcard/Android/data/com.rekoo.pubgm/files/UE4Game/ShadowTrackerExtra/ShadowTrackerExtra/Saved/Logs" ) for log_dir in "${log_dirs[@]}"; do adb shell "su -c 'rm -rf ${log_dir}/*'" if [ $? -eq 0 ]; then echo -e "${GREEN}[日志] 已清理: ${log_dir}${NC}" else echo -e "${YELLOW}[跳过] 无法清理: ${log_dir}(目录不存在或权限不足)${NC}" fi done # 4. 清理下载目录(更新包残留) echo -e "${YELLOW}[步骤 4/4] 清除下载目录中的残余文件...${NC}" download_dirs=( "/sdcard/Android/data/com.tencent.tmgp.pubgmhd/files/UE4Game/ShadowTrackerExtra/ShadowTrackerExtra/Saved/Paks" "/sdcard/Android/data/com.tencent.tmgp.pubgmhd/files/UE4Game/ShadowTrackerExtra/ShadowTrackerExtra/Saved/Download" ) for dl_dir in "${download_dirs[@]}"; do # 只删除 .tmp 和 .download 扩展名的文件,保留 Paks 原始文件 adb shell "su -c 'find ${dl_dir} -type f \( -name "*.tmp" -o -name "*.download" \) -delete'" if [ $? -eq 0 ]; then echo -e "${GREEN}[下载] 已清理 ${dl_dir} 中的临时文件。${NC}" else echo -e "${YELLOW}[跳过] 无法清理: ${dl_dir}${NC}" fi done echo -e "${GREEN}========================================${NC}" echo -e "${GREEN} ✅ 《和平精英》设备清理完成!${NC}" echo -e "${GREEN} 请重新启动游戏以获得最佳体验。${NC}" echo -e "${GREEN}========================================${NC}" } # ============================================================================ # 主程序入口 # ============================================================================ main() { check_adb wait_for_device perform_cleanup } # 执行主函数 main ``` --- ## 📋 使用方法与参数解释 1. **赋予脚本执行权限**: ```bash chmod +x clear_pubg_device.sh ``` 2. **连接设备**:用数据线连接 Android 设备到电脑,并确保开启 USB 调试。模拟器则直接启动即可。 3. **运行脚本**: ```bash # 连接一台设备时 ./clear_pubg_device.sh # 如果有多台设备,请指定序列号(在 adb devices 中查看) # adb -s <device_serial> shell # 然后手动执行脚本内容(或修改脚本以支持 -s 参数) ``` **参数解释**: - `adb root`:以 root 权限重启 adbd 守护进程,这是访问 `/data/data/` 目录的前提。 - `pm clear <package_name>`:Android 包管理器命令,用于清除指定应用的用户数据,但加上缓存参数(默认)会保留应用设置。**注意**:这里脚本为了简化,直接使用了 `pm clear`,这**会清除账号信息(需重新登录)**。如果你希望**只清除缓存**而不退出账号,请将 `pm clear` 修改为仅删除 `cache` 目录下的文件(脚本中已注释了另一种 `rm -rf` 的方式)。**强烈建议使用删除目录的方式**。 - `su -c 'command'`:在 Android shell 中以超级用户身份执行命令。 --- ## 💡 开发与使用建议 1. **安全性优先**: - **重要警告**:上述脚本中的 `pm clear` 会**清除游戏数据**,包括你的账号和设置。如果你不想重新登录,请务必**将 `pm clear` 那部分替换为只删除 `cache/*` 目录的 `rm` 命令**。 - 不要在未备份重要数据的情况下运行脚本。 - 脚本中的包名(`com.tencent.tmgp.pubgmhd` 等)仅适用于常见版本,如果你的设备是其他渠道服(如华为、小米、Vivo 应用商店版本),请自行确认其包名。可以通过 `adb shell pm list packages | grep pubg` 查找。 2. **性能优化**: - 脚本执行过程中,ADB 命令需要一些时间。如果觉得慢,可以考虑增加并行处理(使用后台 `&` 和 `wait`)。 - 对于模拟器,清理前最好先关闭游戏进程,避免文件占用问题。 3. **错误处理**: - `adb root` 命令在部分非 Root 模拟器或设备上会失败,此时脚本会继续尝试后续步骤,但清理 `/data/data/` 目录会失败。脚本已经用 `if [ $? -eq 0 ]` 进行了简单的状态检查。 - 如果遇到“permission denied”错误,说明设备未正确 Root 或 ADB 版本不支持。 4. **扩展功能**: - 你可以增加一个“**一键重启游戏**”的功能,在清理完成后自动启动《和平精英》: ```bash adb shell am start -n com.tencent.tmgp.pubgmhd/com.epicgames.ue4.SplashActivity ``` - 添加一个“**清理前确认**”的提示,防止误操作。 5. **学习资源**: - [Android 开发者 ADB 指南](https://developer.android.com/studio/command-line/adb) - [Bash 脚本编程指南(英文)](https://tldp.org/LDP/abs/html/) --- ## ❓ 常见问题 (FAQ) **Q:运行脚本后游戏账号被退了,为什么?** A:脚本中使用了 `pm clear` 命令,这相当于在手机上“清除数据”,会移除账号信息。解决方法:**强烈推荐**修改脚本,将 `pm clear` 注释掉,改用 `rm -rf /data/data/包名/cache/*` 的方式,这样只会清除缓存,不会影响账号。 **Q:提示“设备未 Root”怎么办?** A:检查设备是否开启 Root。模拟器需在设置中开启 Root 开关。真机需要刷入 Magisk 或 SuperSU 等 Root 管理工具。对于没有 Root 的设备,`/data/data/` 目录无法访问,该脚本将无法生效。 **Q:提示“找不到包名”是什么意思?** A:你的游戏安装包可能不是标准的“com.tencent.tmgp.pubgmhd”。你可以通过命令 `adb shell pm list packages | grep -i pubg` 来查找你设备上《和平精英》的准确包名,然后替换脚本中的包名列表。 **Q:这个脚本会清理画质设置或游戏内设置吗?** A:如果使用**删除 `cache` 目录**的方式,不会。如果使用 `pm clear`,**会**。所以建议只删除 `cache` 目录下的文件来保留设置。 --- ######[AI写代码神器 | 2979点数解答 | 2026-05-14 15:47:50]

相关提问
本站限时免费提问中
实用工具查看更多
Linux在线手册 [开发类]
Jquery在线手册 [开发类]
今日油价 [生活类]
图片互转base64 [开发类]
时间转换器 [开发类]