【免费下载链接】coin11-tb
使用uiautomator2自动化完成淘宝双11的金币任务,618金币任务,淘金币任务,芭芭农场任务,闲鱼任务,支付宝打卡任务。
本文面向想要扩展 coin11-tb 的开发者,完整讲解如何基于 uiautomator2 为项目新增一个 APP 自动化任务。coin11-tb 是一个基于 uiautomator2 的安卓自动化任务项目,可自动完成淘宝双11金币任务、618金币任务、淘金币任务、芭芭农场任务、闲鱼任务与支付宝打卡任务。下文从项目结构、环境准备、核心函数、五步开发流程到多任务调度注册,带你一步步走完新增任务的完整开发流程。
📱 先认识项目结构
coin11-tb 采用"一个任务一个脚本"的扁平结构,所有任务共享同一个工具库,新增任务时你只需要复制模式、替换选择器:
| 文件 | 作用 |
|---|---|
| utils.py | 共享工具库:设备连接、启动 APP、任务循环、弹窗/验证码处理、图像模板匹配 |
| requirements.txt | Python 依赖清单(uiautomator2、opencv、easyocr 等) |
| 淘金币任务.py、闲鱼扔骰子.py、支付宝打卡.py 等 | 每个文件对应一个独立的 APP 任务脚本 |
| 淘宝多任务执行.py | 多任务统一调度入口,按顺序逐个执行任务脚本 |
| img/ | 图像模板匹配用的按钮截图(如"领取今日红包"、"开始抽奖") |
| chromedriver.py | 用于操作 WebView 页面的 Selenium 辅助类 |
💡 核心思路:
utils.py提供通用能力,任务脚本只写"这个 APP 独有的点击路径",新任务开发成本极低。
⚙️ 环境准备:一键安装步骤
新增任务前先确保环境可用:
- 安装并配置adb,手机开启 USB 调试并连接电脑,执行
adb devices能看到设备; - 安装 Python 依赖:
pip install -r requirements.txt- 初始化 uiautomator2(首次需要):
python -m uiautomator2 init- 用现成脚本验证环境是否就绪,例如:
python 淘金币任务.py能正常跑通任意一个已有任务,说明开发环境已准备好,可以开始新增任务了。
🔧 核心工具库:utils.py 常用函数速查
新增任务时,90% 的能力都来自 utils.py,常用函数如下:
| 函数 | 作用 | 参考位置 |
|---|---|---|
select_device() | 多设备时交互选择目标设备 | utils.py |
start_app(d, package, init=True) | 启动指定 APP(含多用户、activity 兜底、启动校验) | utils.py |
get_current_app(d) | 获取当前前台 APP 的包名与 Activity | utils.py |
check_app(d, package) | 发现跳出了目标 APP 时自动切回 | utils.py |
task_loop(d, back_func) | 通用任务浏览循环:随机滑动、点商品、模拟真人浏览 | utils.py |
check_popup(d)/check_verify(d) | 关闭弹窗 / 处理验证码拦截 | utils.py |
start_watcher(d) | 全局 watcher,自动点击常见关闭/确认按钮 | utils.py |
find_button()/find_button_multiscale() | 图像模板匹配定位按钮(支持多尺度) | utils.py |
easy_ocr() | EasyOCR 识别截图文字 | utils.py |
print_error() | 打印完整异常栈,便于排查 | utils.py |
各 APP 的包名常量(如TB_APP、ALIPAY_APP、FISH_APP)定义在 utils.py,APP 启动入口配置在APP_START_CONFIG中(utils.py)。
🚀 新增任务五步开发流程
第一步:确定目标 APP 并登记包名
先用 adb 查看目标 APP 的包名:
adb shell pm list packages | grep 关键词- 如果
utils.py中已有该常量(如闲鱼是FISH_APP),直接复用; - 如果是全新 APP,在 utils.py 增加常量,必要时在
APP_START_CONFIG中登记其启动 Activity(utils.py),这样start_app()才能可靠拉起它。
第二步:创建任务脚本骨架
新建新APP任务.py,标准骨架如下(以 淘金币任务.py 为模板):
import time import uiautomator2 as u2 from utils import start_app, get_current_app, task_loop, select_device, print_error APP_NAME = "com.example.app" # 新APP包名 selected_device = select_device() d = u2.connect(selected_device) start_app(d, APP_NAME, init=True) def back_to_task(): while True: package, _ = get_current_app(d) if package == APP_NAME: break d.press("back") time.sleep(1) while True: try: btn = d(className="android.widget.Button", text="去完成") if btn.exists: btn.click() time.sleep(3) task_loop(d, back_to_task, origin_app=APP_NAME) else: break except Exception: print_error()这个骨架覆盖了:连接设备 → 启动 APP → 主循环点击任务 → 异常兜底 的完整闭环。
第三步:编写页面返回函数back_to_task
任务点击后通常会跳到 H5、其他 APP 或商品页,必须能稳定"回到任务列表"。成熟写法参考 闲鱼扔骰子.py 与 淘金币任务.py,套路是:
- 用
get_current_app(d)判断当前是否还在目标 APP;不在就start_app()切回; - 判断是否已回到任务列表页(找到标志性元素就
break); - 否则尝试点关闭按钮 / 小程序关闭,最后兜底
d.press("back")。
⚠️ 返回函数是整个任务脚本稳定性的关键,写它之前建议先手动走一遍真实点击路径,记录所有可能停留的页面。
第四步:编写主循环的任务点击逻辑
主循环用while True持续扫描任务按钮,核心技巧:
- 元素定位优先级:
resourceId>text/textMatches>xpath> 图像匹配,稳定性依次递减; - 任务去重与重试:用
have_clicked字典记录每个任务名已点次数,超过 2 次则跳过(参考 闲鱼扔骰子.py); - 退出条件:连续 2 次找不到可点按钮(
error_count >= 2)即结束循环(参考 淘金币任务.py); - 点击后交给
task_loop()完成"浏览商品页 + 返回",避免每个任务重复写浏览逻辑。
简单的签到类脚本可以直接参考 淘宝现金签到.py,逻辑直观、适合新手模仿。
第五步:处理弹窗、验证码与模板图
1)Watcher 全局拦截弹窗:脚本开头启动 watcher,遇到固定文案的按钮自动点击,可复用现成的 start_watcher(d),或像 支付宝打卡.py 那样自定义d.watcher.when(...).click()规则。
2)验证码拦截:主循环里定期调用check_verify(d)(utils.py)自动滑动验证码。
3)图像模板匹配:当按钮是图片、文字无法识别时(H5 活动页很常见),把按钮截图裁剪后放进img/目录,用find_button()或find_button_multiscale()定位。项目里的模板图示例如下:
调用方式(参考 支付宝打卡.py):
pt, _, _ = find_button_multiscale(d.screenshot(format="opencv"), "./img/img_getToday.png") if pt: d.click(pt[0], pt[1])匹配失败时可调低threshold(默认 0.78)或更换更清晰的模板图;[识别图片测试.py](https://link.gitcode.com/i/1de177770054b4a6f978532887200505)可用于离线调试 OCR 与定位效果。
📋 最后一步:注册到多任务调度
任务脚本能独立运行后,把它加入 淘宝多任务执行.py 的scripts_to_run列表,即可随其他任务一起被顺序调度:
scripts_to_run = [ "淘宝成就中心签到.py", "闲鱼扔骰子.py", # "新APP任务.py", # ← 新增任务加在这里 ]调度逻辑见 run_scripts(),会等上一个脚本执行完再启动下一个。
✅ 最佳实践清单
- 异常必须兜底:主循环整体包在
try/except里,异常时调用print_error()打印完整栈,然后continue,不要让脚本整体崩掉; - 拟人化:滑动与等待尽量用随机值(可参考 random_swipe()),避免机械固定坐标;
- 优先结构化选择器:
resourceId/xpath优于写死坐标;App 版本更新导致界面变化时,优先改选择器而不是硬编码像素; - 图片命名规范:模板图统一放
img/目录,用"业务_动作"命名(如fish_prize.png、alipay_get.png),方便检索与替换; - 多设备支持:入口统一用
select_device(),保证多台手机同时调试时互不干扰; - WebView 页面:若目标页面是内嵌浏览器,可借助 chromedriver.py 用 Selenium 定位 DOM 元素。
❓ 常见问题排查
| 现象 | 排查方法 |
|---|---|
adb devices看不到设备 | 重新插拔数据线、确认 USB 调试已授权 |
| uiautomator2 连接失败 | 执行python -m uiautomator2 init重新初始化手机端 agent |
| 按钮找不到 | App 升级导致界面变化,用 uiautodev 重新抓取控件属性或更新img/模板图 |
| 卡在验证码 | 确认主循环调用了check_verify(d),并检查 watcher 是否启动 |
按以上流程,新增一个 APP 任务通常只需要:登记包名 → 复制骨架 → 打磨back_to_task→ 完善主循环 → 注册调度。建议从最接近现有脚本的任务类型入手(签到类参考 淘宝现金签到.py,任务列表类参考 闲鱼扔骰子.py),即可快速上手并为 coin11-tb 贡献新的自动化任务。
【免费下载链接】coin11-tb
使用uiautomator2自动化完成淘宝双11的金币任务,618金币任务,淘金币任务,芭芭农场任务,闲鱼任务,支付宝打卡任务。
相关推荐
coin11-tb批量执行器:subprocess串行调度多APP任务的完整设计与优化指南
coin11 tb批量执行器:subprocess串行调度多APP任务的完整设计与优化指南 在 coin11 tb https://link.gitcode.c
coin11-tb新手上路:如何连接Android手机自动完成淘宝双11金币任务
coin11 tb新手上路:如何连接Android手机自动完成淘宝双11金币任务 coin11 tb https://link.gitcode.com/i/1b
coin11-tb芭芭农场自动浇肥料:back_to_task任务循环完整拆解
coin11 tb芭芭农场自动浇肥料:back_to_task任务循环完整拆解 coin11 tb 是一个基于 uiautomator2 的安卓自动化项目,其中
创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考