java中启动appium时,使用了uiautomator2,所以会自动安装相关的两个apk:
appium-uiautomator2-server-debug-androidTest.apk和appium-uiautomator2-server-v7.5.2.apk
但是安装过程中手机会弹出安装的弹框,然后由于这两个是一起出来的,导致第一个弹窗被第二个顶掉,第一个就一直等待安装,最后超时。

目前解决办法是手动把两个apk挨个装到手机上再启动appium。
有没有更好的解决办法?
java中启动appium时,使用了uiautomator2,所以会自动安装相关的两个apk:
appium-uiautomator2-server-debug-androidTest.apk和appium-uiautomator2-server-v7.5.2.apk
但是安装过程中手机会弹出安装的弹框,然后由于这两个是一起出来的,导致第一个弹窗被第二个顶掉,第一个就一直等待安装,最后超时。

下午好🌅🌅🌅
本答案参考通义千问
你遇到的问题是由于在使用 Appium + UiAutomator2 时,系统会自动安装两个 APK 文件(appium-uiautomator2-server-debug-androidTest.apk 和 appium-uiautomator2-server-v7.5.2.apk),但这两个 APK 的安装弹窗同时出现,导致第一个 APK 安装失败或超时。这种现象在某些 Android 系统上比较常见,尤其是较新的系统版本。
appium-uiautomator2-server-debug-androidTest.apk)需要先安装,否则第二个 APK 无法正常运行。这是目前最直接有效的办法,虽然略显繁琐,但能确保安装成功。
appium-uiautomator2-server-debug-androidTest.apkappium-uiautomator2-server-v7.5.2.apk注意:确保两个 APK 都已正确安装后,再启动 Appium。
你可以通过配置 Appium 的 uiautomator2 设置来避免自动安装 APK。
// Java 示例代码
AndroidDriver<MobileElement> driver = new AndroidDriver<>(new URL("http://localhost:4723/wd/hub"), new AndroidOptions()
.setDeviceName("Your_Device_Name")
.setPlatformName("Android")
.setAppPackage("your.app.package")
.setAppActivity("your.app.activity")
.setUseUiAutomator2(true)
.setAutoGrantPermissions(true)
.setNoReset(true) // 可选,避免重置应用数据
.setUiautomator2ServerLaunchTimeout(60000) // 增加启动超时时间
.setUiautomator2ServerInstallTimeout(60000) // 增加安装超时时间
);
重点配置项说明:
setUseUiAutomator2(true):启用 UiAutomator2setUiautomator2ServerInstallTimeout(60000):设置安装超时为 60 秒setNoReset(true):防止每次启动都重置应用你可以在启动 Appium 之前,使用 ADB 命令提前安装这两个 APK,避免 Appium 自动安装时引发弹窗冲突。
adb install appium-uiautomator2-server-debug-androidTest.apk
adb install appium-uiautomator2-server-v7.5.2.apk
注意:如果设备已经安装了这些 APK,可以使用
adb install -r强制安装。
adb 自动安装并跳过弹窗可以通过设置 ADB 的安装参数,跳过用户确认弹窗。
adb install -g appium-uiautomator2-server-debug-androidTest.apk
adb install -g appium-uiautomator2-server-v7.5.2.apk
参数说明:
-g:授予所有权限(可选)如果你有多个设备或频繁部署,可以编写一个脚本(如 Shell 或 Python 脚本)来自动安装这两个 APK。
#!/bin/bash
APK1="appium-uiautomator2-server-debug-androidTest.apk"
APK2="appium-uiautomator2-server-v7.5.2.apk"
adb install -g $APK1
adb install -g $APK2
| 方案 | 优点 | 缺点 | |------|------|------| | 手动安装 | 简单、可靠 | 繁琐 | | 修改 Appium 配置 | 无需额外操作 | 需要了解配置项 | | ADB 提前安装 | 可靠、灵活 | 需要熟悉 ADB 命令 | | 脚本自动化安装 | 适合批量部署 | 初期配置复杂 |
推荐优先采用 ADB 提前安装 + 修改 Appium 配置的方式,这样可以确保 APK 正确安装,同时避免 Appium 自动安装时的弹窗冲突。
import io.appium.java_client.android.AndroidDriver;
import io.appium.java_client.android.options.UiAutomator2Options;
public class AppiumTest {
public static void main(String[] args) throws Exception {
UiAutomator2Options options = new UiAutomator2Options();
options.setDeviceName("Your_Device_Name");
options.setPlatformName("Android");
options.setAppPackage("your.app.package");
options.setAppActivity("your.app.activity");
options.setUseUiAutomator2(true);
options.setNoReset(true);
options.setUiautomator2ServerInstallTimeout(60000); // 设置安装超时时间
options.setUiautomator2ServerLaunchTimeout(60000); // 设置启动超时时间
AndroidDriver<?> driver = new AndroidDriver<>(new URL("http://localhost:4723/wd/hub"), options);
// 你的测试代码
driver.quit();
}
}
如有更多关于 Appium 配置或 Android 安装机制的问题,欢迎继续提问!