
自动点击器在自动化测试、批量操作等场景中具有重要作用。本文将详细介绍如何通过Shell脚本在安卓设备上实现功能完善的自动点击器,无需Root权限即可实现基础的点击自动化。
安卓自动点击的核心是通过 ADB(Android Debug Bridge) 的input命令模拟屏幕触摸事件。基本原理是发送以下指令:
adb shell input tap X Y其中X和Y分别代表屏幕上的横纵坐标值。这种方式简单高效,适用于大多数安卓设备。
Windows/Mac电脑端:
# Mac通过Homebrew安装
brew install android-platform-tools
# 验证安装
adb version手机端(免电脑方案):
在Termux中安装ADB:
pkg update
pkg install android-tools# 查看连接状态
adb devices
# 无线连接(可选)
adb tcpip 5555
adb connect 手机IP地址:5555创建click.sh文件:
#!/bin/bash
# 自动点击指定坐标
# 配置点击坐标
X=500
Y=1000
# 执行点击
adb shell input tap $X$Y
echo"已在坐标($X, $Y)执行点击"赋予执行权限并运行:
chmod +x click.sh
./click.sh实现多次连续点击功能:
#!/bin/bash
# 循环自动点击器
# 配置参数
X=300
Y=800
COUNT=10 # 点击次数
INTERVAL=1 # 间隔时间(秒)
echo"开始执行$COUNT次自动点击..."
for i in $(seq 1 $COUNT)
do
echo"第 $i 次点击"
adb shell input tap $X$Y
sleep$INTERVAL
done
echo"任务完成!"添加时间戳和错误处理:
#!/bin/bash
# 增强型自动点击器
# 配置区域
TARGET_X=450
TARGET_Y=1200
TOTAL_TIMES=50
SLEEP_TIME=2
# 记录开始时间
start_time=$(date'+%Y-%m-%d %H:%M:%S')
echo"===== 自动点击任务开始于 $start_time ====="
# 主循环
for ((i=1; i<=TOTAL_TIMES; i++))
do
current_time=$(date'+%H:%M:%S')
echo"[$current_time] 执行第 $i/$TOTAL_TIMES 次点击"
if adb shell input tap $TARGET_X$TARGET_Y; then
echo" ✓ 点击成功"
else
echo" ✗ 点击失败,请检查设备连接"
exit 1
fi
# 最后一次点击后不等待
if [ $i -lt $TOTAL_TIMES ]; then
sleep$SLEEP_TIME
fi
done
end_time=$(date'+%Y-%m-%d %H:%M:%S')
echo"===== 任务完成于 $end_time ====="
echo"总计完成 $TOTAL_TIMES 次点击"# 获取当前界面布局信息
adb shell uiautomator dump /sdcard/ui.xml
adb pull /sdcard/ui.xml
# 在生成的xml文件中查找控件坐标# 监听触摸事件(需要root)
adb shell getevent -l在手机上安装Termux后,可直接运行Shell脚本:
#!/data/data/com.termux/files/usr/bin/sh
# Termux专用自动点击器
# 权限检测
if [ ! -x "$(command -v input)" ]; then
echo"请在Termux中安装termux-api"
exit 1
fi
# 使用termux-touch模拟点击
# 安装termux-api后可直接调用
termux-touch -x 500 -y 800
# 或者使用input命令(无需termux-api)
input tap 500 800对于无Root设备,可通过Termux调用系统无障碍服务:
#!/bin/bash
# 结合无障碍服务的点击方案
# 需要先安装Auto.js或类似工具
# 然后发送Intent启动点击
am start -n com.stardust.scriptdroid/.external.open.RunIntentActivity \
-d file:///sdcard/scripts/click.js#!/bin/bash
# 根据屏幕内容判断点击
# 截图并识别颜色
adb shell screencap -p /sdcard/screen.png
adb pull /sdcard/screen.png
# 使用ImageMagick获取某点颜色值
COLOR=$(convert screen.png -crop 1x1+500+500 txt:- | grep -o '#......')
# 判断颜色并执行点击
if [ "$COLOR" = "#FF0000" ]; then
echo"检测到目标颜色,执行点击"
adb shell input tap 500 500
else
echo"条件不满足,跳过点击"
fi#!/bin/bash
# 抖音视频轮播点击示例
# 定义两个视频的坐标
VIDEO1_X=14
VIDEO1_Y=1402
VIDEO2_X=375
VIDEO2_Y=1402
whiletrue; do
echo"点击视频1"
adb shell input tap $VIDEO1_X$VIDEO1_Y
sleep 3
# 返回
adb shell input keyevent KEYCODE_BACK
sleep 1
echo"点击视频2"
adb shell input tap $VIDEO2_X$VIDEO2_Y
sleep 3
adb shell input keyevent KEYCODE_BACK
sleep 1
echo"循环次数: $((++i))"
done创建config.ini配置文件:
# 点击配置
COORDINATES=300,500;600,800
INTERVAL=2
COUNT=20读取配置的脚本:
#!/bin/bash
# 配置文件版点击器
source config.ini
# 将分号分隔的坐标转换为数组
IFS=';'read -ra COORDS <<< "$COORDINATES"
for ((i=1; i<=COUNT; i++)); do
for coord in"${COORDS[@]}"; do
IFS=','read -r x y <<< "$coord"
echo"点击坐标($x, $y)"
adb shell input tap $x$y
sleep$INTERVAL
done
donesleep避免点击过快导致应用无响应# 自动获取屏幕分辨率
WIDTH=$(adb shell wm size | grep -o '[0-9]*x[0-9]*' | cut -d'x' -f1)
HEIGHT=$(adb shell wm size | grep -o '[0-9]*x[0-9]*' | cut -d'x' -f2)
# 根据分辨率计算相对坐标
X=$((WIDTH * 30 / 100)) # 屏幕宽度30%位置
Y=$((HEIGHT * 70 / 100)) # 屏幕高度70%位置通过Shell脚本实现安卓自动点击器是一种轻量级、高效的自动化方案。核心优势包括:
对于更复杂的场景,建议结合Python的adbutils库或开发专用无障碍服务应用来实现。
通过本教程,您已经掌握了从基础到进阶的Shell自动点击器实现方法。合理使用这些技术可以大幅提升重复性操作的效率。






点分享

点收藏

点点赞

点在看