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

Android Espresso测试遇NoClassDefFoundError:CallbackToFutureAdapter$Resolver缺失

Espresso测试中java.lang.NoClassDefFoundError问题解决办法

问题重现

运行Android Espresso UI测试时触发以下异常:

java.lang.NoClassDefFoundError: Failed resolution of: Landroidx/concurrent/futures/CallbackToFutureAdapter$Resolver;
at androidx.test.core.app.DeviceCapture$forceRedrawGlobalWindowViews$1.run(DeviceCapture.kt:168)

已确认Espresso库为最新版本,且已添加ProGuard规则:"-keep class androidx.concurrent.futures.CallbackToFutureAdapter$Completer { *;}"

解决步骤

  • 补全ProGuard规则:当前规则仅保留了Completer内部类,而异常提示缺失的是Resolver类,需补充对应规则。可选择两种方式:

    1. 单独保留两个内部类:
    -keep class androidx.concurrent.futures.CallbackToFutureAdapter$Completer { *; }
    -keep class androidx.concurrent.futures.CallbackToFutureAdapter$Resolver { *; }
    
    1. 一次性保留CallbackToFutureAdapter所有内部类:
    -keep class androidx.concurrent.futures.CallbackToFutureAdapter { *; }
    -keep class androidx.concurrent.futures.CallbackToFutureAdapter$* { *; }
    
  • 确认依赖完整性:检查模块级build.gradle文件,确保引入了androidx.concurrent:concurrent-futures测试依赖,示例:

    androidTestImplementation "androidx.concurrent:concurrent-futures:1.1.0"
    

    版本可根据官方最新稳定版调整,确保包含CallbackToFutureAdapter$Resolver类。

  • 清理重建项目:执行Build > Clean Project,再执行Build > Rebuild Project,清除编译缓存后重新运行测试。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.28 19:22:32