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

运行Android Espresso UI测试时ListFuture非法访问DirectExecutor报错如何解决

问题根源

这个错误是androidx.test.core库和androidx.concurrent:concurrent-futures库版本不兼容导致的:1.4.0及以上版本的androidx.test.core依赖的DirectExecutor类是包可见的,只要项目中被其他依赖引入了不匹配版本的concurrent-futures,就会触发类访问权限报错。

解决方案

按优先级尝试以下操作即可解决:

  • 统一对齐所有测试依赖的版本,将所有androidx.test相关的依赖升级到最新稳定版,确保版本号匹配:
    可参考的稳定版本组合:
    androidx.test:core:1.5.0
    androidx.test.espresso:espresso-core:3.5.1
    androidx.test.ext:junit:1.1.5
    androidx.test:runner:1.5.2
    
  • 在app模块的build.gradle中添加强制依赖约束,锁定concurrent-futures的兼容版本,避免其他依赖拉取不兼容的版本:
    如果是Groovy语法:
    configurations.all {
        resolutionStrategy {
            force "androidx.concurrent:concurrent-futures:1.1.0"
        }
    }
    
    如果是Kotlin DSL语法:
    configurations.all {
        resolutionStrategy {
            force("androidx.concurrent:concurrent-futures:1.1.0")
        }
    }
    
  • 如果以上配置完仍然报错,可以直接禁用测试框架的屏幕捕获功能绕开问题,两种实现方式:
    1. 在测试类上加注解@DisableDeviceCapture
    2. 运行测试前执行adb命令adb shell setprop debug.android_testing.disable_screen_capture true
  • 完成配置后执行./gradlew clean清理构建缓存,再重新运行测试即可。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.23 21:15:00