打牌拯救世界 2026-02-26 14:50 采纳率: 0%
浏览 7

appium安装uiautomator2相关的apk时由于安装弹窗导致的问题

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

img


目前解决办法是手动把两个apk挨个装到手机上再启动appium。
有没有更好的解决办法?

  • 写回答

2条回答 默认 最新

  • 檀越@新空间 2026-02-26 14:51
    关注

    下午好🌅🌅🌅
    本答案参考通义千问

    你遇到的问题是由于在使用 Appium + UiAutomator2 时,系统会自动安装两个 APK 文件(appium-uiautomator2-server-debug-androidTest.apkappium-uiautomator2-server-v7.5.2.apk),但这两个 APK 的安装弹窗同时出现,导致第一个 APK 安装失败或超时。这种现象在某些 Android 系统上比较常见,尤其是较新的系统版本。


    问题原因分析

    1. 多个 APK 同时安装:Appium 在启动时会尝试安装两个 APK,而 Android 系统对多个 APK 安装的处理逻辑可能不一致。
    2. 弹窗冲突:当两个 APK 的安装弹窗同时出现时,系统可能只显示一个,另一个被覆盖或忽略。
    3. 安装顺序问题:第一个 APK(如 appium-uiautomator2-server-debug-androidTest.apk)需要先安装,否则第二个 APK 无法正常运行。

    解决方案总结

    1. 手动安装 APK

    这是目前最直接有效的办法,虽然略显繁琐,但能确保安装成功。

    • 手动安装 appium-uiautomator2-server-debug-androidTest.apk
    • 再手动安装 appium-uiautomator2-server-v7.5.2.apk

    注意:确保两个 APK 都已正确安装后,再启动 Appium。


    2. 修改 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):启用 UiAutomator2
    • setUiautomator2ServerInstallTimeout(60000):设置安装超时为 60 秒
    • setNoReset(true):防止每次启动都重置应用

    3. 使用 ADB 命令提前安装 APK

    你可以在启动 Appium 之前,使用 ADB 命令提前安装这两个 APK,避免 Appium 自动安装时引发弹窗冲突。

    ADB 安装命令示例:

    adb install appium-uiautomator2-server-debug-androidTest.apk
    adb install appium-uiautomator2-server-v7.5.2.apk
    

    注意:如果设备已经安装了这些 APK,可以使用 adb install -r 强制安装。


    4. 使用 adb 自动安装并跳过弹窗

    可以通过设置 ADB 的安装参数,跳过用户确认弹窗。

    使用 ADB 命令:

    adb install -g appium-uiautomator2-server-debug-androidTest.apk
    adb install -g appium-uiautomator2-server-v7.5.2.apk
    

    参数说明

    • -g:授予所有权限(可选)

    5. 使用脚本自动化安装流程

    如果你有多个设备或频繁部署,可以编写一个脚本(如 Shell 或 Python 脚本)来自动安装这两个 APK。

    示例 Shell 脚本:

    #!/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 自动安装时的弹窗冲突。


    代码示例(Java + Appium + UiAutomator2)

    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();
        }
    }
    

    总结

    • 根本问题是弹窗冲突,可以通过 ADB 提前安装或配置 Appium 来解决。
    • 推荐方案:ADB 提前安装 + 配置 Appium 的安装超时时间。
    • 长期维护建议:使用脚本自动化安装流程,提高效率和稳定性。

    如有更多关于 Appium 配置或 Android 安装机制的问题,欢迎继续提问!

    评论

报告相同问题?

问题事件

  • 创建了问题 2月26日