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

Xamarin.UITest仅在Android真机上运行失败该如何解决?

问题排查解决步骤
  • 一加设备专属权限与环境检查
    一加的氢/氧OS对调试权限有额外限制,必须完成以下配置:
    1. 开发者选项中开启「USB调试(安全设置)」:允许通过USB调试修改权限或模拟点击
    2. 开发者选项中开启「允许安装未知应用(来自USB)」
    3. 关闭系统的「应用安装验证」功能,避免UITest自动安装测试服务时被拦截
    4. 给目标应用开放「后台弹出界面」「本地网络访问」权限
    5. 运行测试前关闭设备上的VPN、代理、网络加速类应用,避免拦截本地回环通信
  • 解决签名冲突问题
    从日志可见UITest会默认用Xamarin官方keystore重新签名你的已签名APK,一加系统会拦截签名不一致的应用内部通信,你需要在配置中指定自己的签名文件,修改AppInitializer代码如下:
    public static IApp StartApp(Platform platform)
    {
        try
        {
            if (platform == Platform.Android)
                return ConfigureApp.Android
                    .ApkFile(@"C:\Users\Steve\source\repos\MyTestApp\MyTestApp.Android\bin\Dev\com.mytestapp.dev-Signed.apk")
                    // 新增:替换为你的签名文件对应信息
                    .Keystore(
                        path: @"你的keystore文件本地路径",
                        password: "keystore密码",
                        alias: "签名别名",
                        aliasPassword: "别名密码"
                    )
                    .StartApp();
            else
                return ConfigureApp.iOS.StartApp();
        }
        catch(Exception ex)
        {
            throw(ex);
        }
    }
    
  • 添加明文网络访问权限
    Android 9(API 28)及以上系统默认禁止明文HTTP请求,而Xamarin.UITest和应用内部测试服务的通信依赖本地HTTP请求,你需要在AndroidManifest.xml的<application>节点添加属性:
    <application ... android:usesCleartextTraffic="true">
    
    如果你已经配置了自定义网络安全策略,需要确保规则允许127.0.0.1的明文请求。
  • 前置清理操作
    运行测试前先完全卸载设备上的3类相关应用,避免缓存冲突:
    1. 你自己的测试APK com.mytestapp.dev
    2. Xamarin.UITest自动安装的对应测试服务应用(包名一般为com.mytestapp.dev.test)
    3. 残留的Xamarin通用测试代理应用
  • AppCenter测试适配
    上传到AppCenter测试时,不需要额外修改代码,只需在提交测试时选择「不要重新签名APK」选项,避免二次签名导致的权限/签名问题。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.25 12:54:03