☰
如何在coin11-tb中新增一个APP任务:完整开发流程与最佳实践
2026/11/4 2:14:07 网站建设 项目流程

【免费下载链接】coin11-tb

使用uiautomator2自动化完成淘宝双11的金币任务,618金币任务,淘金币任务,芭芭农场任务,闲鱼任务,支付宝打卡任务。

项目地址:https://gitcode.com/gh_mirrors/co/coin11-tb
点击查看免费下载

本文面向想要扩展 coin11-tb 的开发者,完整讲解如何基于 uiautomator2 为项目新增一个 APP 自动化任务。coin11-tb 是一个基于 uiautomator2 的安卓自动化任务项目,可自动完成淘宝双11金币任务、618金币任务、淘金币任务、芭芭农场任务、闲鱼任务与支付宝打卡任务。下文从项目结构、环境准备、核心函数、五步开发流程到多任务调度注册,带你一步步走完新增任务的完整开发流程。

📱 先认识项目结构

coin11-tb 采用"一个任务一个脚本"的扁平结构,所有任务共享同一个工具库,新增任务时你只需要复制模式、替换选择器:

文件作用
utils.py共享工具库:设备连接、启动 APP、任务循环、弹窗/验证码处理、图像模板匹配
requirements.txtPython 依赖清单(uiautomator2、opencv、easyocr 等)
淘金币任务.py、闲鱼扔骰子.py、支付宝打卡.py 等每个文件对应一个独立的 APP 任务脚本
淘宝多任务执行.py多任务统一调度入口,按顺序逐个执行任务脚本
img/图像模板匹配用的按钮截图(如"领取今日红包"、"开始抽奖")
chromedriver.py用于操作 WebView 页面的 Selenium 辅助类

💡 核心思路:utils.py提供通用能力,任务脚本只写"这个 APP 独有的点击路径",新任务开发成本极低。

⚙️ 环境准备:一键安装步骤

新增任务前先确保环境可用:

  1. 安装并配置adb,手机开启 USB 调试并连接电脑,执行adb devices能看到设备;
  2. 安装 Python 依赖:
pip install -r requirements.txt
  1. 初始化 uiautomator2(首次需要):
python -m uiautomator2 init
  1. 用现成脚本验证环境是否就绪,例如:
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 的包名与 Activityutils.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,套路是:

  1. 用get_current_app(d)判断当前是否还在目标 APP;不在就start_app()切回;
  2. 判断是否已回到任务列表页(找到标志性元素就break);
  3. 否则尝试点关闭按钮 / 小程序关闭,最后兜底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金币任务,淘金币任务,芭芭农场任务,闲鱼任务,支付宝打卡任务。

项目地址:https://gitcode.com/gh_mirrors/co/coin11-tb
点击查看免费下载
上一篇:PiD快速上手指南:10分钟从零部署像素扩散解码器,生成你的第一张2K图像
下一篇:Kumone AutoMix系列三:TransitionPlanner决策规则与beatMatched→crossfade→gapless三级退化链完整指南

创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考

需要专业的网站建设服务?

联系我们获取免费的网站建设咨询和方案报价,让我们帮助您实现业务目标

立即咨询