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

关于Appium无法运行带有SplashActivity的Xamarin Forms应用的技术咨询

解决Xamarin Forms带SplashActivity的Appium自动化启动问题

我之前在做Xamarin Forms应用的Appium自动化测试时,也碰到过和你一模一样的问题——带SplashActivity的应用死活启动不了,不带的却完全正常。你的报错信息:

my.company.package.crc647d31b46756051f61.SplashActivity' never started
[ADB] Incorrect package and activity. Retrying.

其实本质是Appium和Xamarin的闪屏页启动逻辑不兼容导致的,分享几个我亲测有效的解决方案:

  • 确认Appium Capabilities里的Activity配置准确
    Xamarin会对Activity类名做混淆处理(就是那个crc64开头的奇怪名称),手动写很容易出错。你可以通过ADB命令获取当前运行的Activity全路径:

    adb shell dumpsys window | grep mCurrentFocus
    

    先手动启动应用,等闪屏页加载完成后执行这个命令,拿到正确的Activity名称,替换到appActivity参数里。

  • 设置等待目标Activity而非闪屏页
    闪屏页本身是临时页面,很快会跳转到主Activity。你可以在Capabilities里添加appWaitActivity参数,指定闪屏后要进入的主Activity(比如my.company.package.MainActivity),同时调整appWaitDuration延长等待时间(比如设为30000,也就是30秒),这样Appium会跳过闪屏页的检测,直接等待主Activity加载完成。

  • 检查Xamarin闪屏页的代码逻辑
    有时候是闪屏页的启动代码有问题,导致Appium无法正确检测到页面切换。确保你的SplashActivity在启动主Activity后调用了Finish()方法,比如:

    protected override void OnCreate(Bundle savedInstanceState)
    {
        base.OnCreate(savedInstanceState);
        // 启动主Activity
        StartActivity(typeof(MainActivity));
        // 销毁闪屏页,让Appium能检测到主Activity
        Finish();
    }
    

    如果闪屏页里有异步操作(比如加载资源),要确保这些操作完成后再启动主Activity,避免Appium在闪屏页还没跳转时就判定启动失败。

  • 调整Appium的启动参数
    尝试开启autoGrantPermissions: true让Appium自动处理权限弹窗,同时设置noReset: false重置应用状态,避免之前的缓存影响启动。这两个参数有时候能解决一些隐性的启动阻塞问题。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.04.29 21:02:34