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

使用Appium 1.8.1在Android 13执行自动化测试时遇Could not get focusPackageAndActivity错误求助

问题原因

Appium 1.8.1是2018年发布的旧版本,完全未适配2022年推出的Android 13系统。核心问题在于Android 13修改了dumpsys命令的输出格式,而Appium 1.8.1内置的解析逻辑无法识别新格式,导致无法自动获取应用的包名和启动Activity,进而触发Could not get focusPackageAndActivity错误。

解决方案

针对必须使用Appium 1.8.1的限制,可按以下方案尝试解决:

  • 手动指定appPackage和appActivity参数
    放弃依赖Appium自动检测,在Desired Capabilities中明确设置应用的包名和启动Activity,这是最直接有效的办法。
    示例代码(Java):

    DesiredCapabilities caps = new DesiredCapabilities();
    caps.setCapability("platformName", "Android");
    caps.setCapability("deviceName", "Android Device");
    caps.setCapability("appPackage", "com.myapp.test.phaseone");
    caps.setCapability("appActivity", "com.myapp.test.phaseone.MainActivity"); // 替换为你的应用实际启动Activity
    caps.setCapability("automationName", "UiAutomator2");
    

    可通过以下命令获取正确的启动Activity:

    • 用aapt工具:aapt dump badging 你的应用.apk | grep launchable-activity
    • 用adb命令:adb shell dumpsys package com.myapp.test.phaseone | grep -E 'launchable-activity'
  • 升级UiAutomator2驱动版本
    Appium 1.8.1默认的UiAutomator2驱动版本不支持Android 13,手动更新到兼容的版本。
    执行命令安装指定版本的驱动:

    appium driver install uiautomator2 --version 2.25.0
    

    也可以在Desired Capabilities中直接指定驱动版本:

    caps.setCapability("uiautomator2ServerVersion", "2.25.0");
    

    注:选择驱动版本时,需确保它既能兼容Appium 1.8.1,又支持Android 13,可参考UiAutomator2驱动的版本历史确认。

  • 调整Appium源码的dumpsys解析逻辑(进阶)
    如果有源码修改能力,可以修改Appium Android驱动中解析dumpsys输出的代码。找到appium-android-driver库下的lib/helpers.js文件,修改getFocusedPackageAndActivity方法中的正则表达式,使其匹配Android 13的dumpsys输出格式。修改后重新编译驱动替换原有文件即可。

  • 检查设备基础设置

    • 确保adb能正常连接设备,执行adb devices确认设备处于在线状态。
    • 关闭设备的省电模式、应用启动限制等功能,防止系统阻止应用启动。
    • 确认应用已正确安装到设备:adb install 你的应用.apk

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.29 08:33:04