You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

安卓Pydroid3使用uiautomator2报错:找不到adb.exe

安卓设备自动化任务报错:找不到ADB EXE

我在华硕Zenfone Selfie 4的Pydroid3中运行自动化代码时出现错误,提示找不到ADB EXE——安卓系统里存在ADB EXE吗?

我的代码如下:

#MODULES IMPORT
import os
import cv2
import numpy as np
from uiautomator2 import Device
from uiautomator2 import connect

#CLASS AND FUNCTIONS DEFINE
class AndroidAuto:
    def _init_ (self, Serial = "Serial"):
        self.Serial = Serial

    def Android_Screenshot(self, dir = ".screenshots"):
        dir = dir

        if not os.path.exists(dir):
            os.makedirs(dir)

        device = Device(self.Serial)
        device.screenshot(f"{dir}/.screenshot_opencv.png")
        return (f"{dir}/.screenshot_opencv.png")

    def Android_Touch(self, x = 0, y = 0):
        device = Device(self.Serial)
        device.click(x, y)

    def Android_Get_Position(self, target = None):
        Device.toast("Starting ")
        while True:
            template = AndroidAuto().Android_Screenshot()

            w, h = target.shape[:-1]

            res = cv2.matchTemplate(template, target, cv2.TM_CCOEFF_NORMED)
            threshold = 0.8
            loc = np.where(res >= threshold)

            if len(loc[0]) > 0:
                x, y = loc[::-1]
                return x, y
            else:
                x, y = None, None
                Device.toast("Trying again!")
                continue

    def Android_Find_Click(self, target = "", x = 0, y = 0):
        while True:
            match = AndroidAuto().Android_Get_Position(target)

            if match != None:
                AndroidAuto().Android_Touch(x, y = match)
                break
            else:
                continue

AA = AndroidAuto()

print(AA.Android_Screenshot())

运行后返回错误:

RuntimeError: No adb exe could be found. install adb on your system

问题解析与解决办法

  • 安卓系统里没有ADB EXE:ADB的.exe是Windows平台的可执行文件,安卓基于Linux内核,对应的ADB组件是无后缀的adb二进制程序,但Pydroid3的沙箱环境默认没有预装这个组件。
  • uiautomator2的依赖限制:uiautomator2库不管是在电脑还是安卓本地运行,都需要ADB来和系统底层交互,但Pydroid3没有集成ADB,所以触发了这个错误。
  • 可行的解决路径:
    1. 转电脑端运行:uiautomator2的设计初衷就是配合电脑端ADB使用,开启安卓设备的USB调试,在电脑上安装ADB工具和Python环境,通过ADB连接设备后运行代码,这是最稳定的方案。
    2. 安卓本地换工具:如果一定要在安卓本地实现自动化,换用不需要ADB的方案,比如借助系统辅助功能的Auto.js(需要授予辅助权限),或者使用安卓原生的AccessibilityService API开发。
    3. 修正代码自身问题:你的代码还有几个语法逻辑错误,比如构造函数__init__写成了_init_(少一个下划线),Android_Get_Position里直接把截图路径传给cv2.matchTemplate,应该先用cv2.imread()读取图片为数组;Android_Find_Click里的参数传递逻辑也有问题,这些都需要调整,但核心问题还是ADB缺失导致的。

内容的提问来源于stack exchange,提问作者Gabriel Garcia

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.28 22:35:03