使用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'
- 用aapt工具:
升级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
- 确保adb能正常连接设备,执行
内容的提问来源于stack exchange,提问作者Anks

