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

Android P环境下运行CTS失败,求助排查AssertionError问题

Android P CTS执行AssertionError排查方案

你遇到的这个错误是CTS在测试准备阶段触发的断言失败,核心原因是Instrumentation测试初始化时返回了未明确的Binder调用异常。下面是几个实用的排查步骤,你可以逐一尝试:

1. 先确认基础环境和命令正确性

  • 首先检查你的CTS启动命令:你输入的./android-cts/tools/cts-tradefed cts-tf > run cts存在语法问题,正确的启动命令应该是:
    ./android-cts/tools/cts-tradefed run cts
    
    先修正命令重新执行,排除命令输入错误导致的异常。
  • 验证设备状态:确保设备已经开启开发者模式、USB调试,并且解锁了Bootloader和OEM解锁;同时重启设备和CTS主机,清除临时的资源占用冲突。
  • 确认CTS包完整性:你使用的是android-cts-9.0_r10,版本匹配Android P,但如果包下载过程中损坏也会出问题,建议重新校验MD5或者重新下载完整包。

2. 深入分析日志文件

日志已经自动保存了三个关键文件到/home/sam/Downloads/android-cts-9.0_r10-linux_x86-arm/android-cts/logs/2020.02.19_15.21.35/inv_1420379781159145465/目录:

  • 优先解压查看device_logcat_test_*.txt.gz:搜索Binder.execTransact相关上下文,大概率能找到更具体的错误细节——比如SELinux权限拒绝(avc: denied)、系统服务崩溃、权限不足等,这些都是Android P上Binder调用失败的常见原因。
  • 同时查看host_log_*.txt.gz,确认CTS主机端是否有资源调用失败的提示。

3. 手动测试Instrumentation初始化

错误发生在ApkInstrumentationPreparer.instrument阶段,说明CTS无法正常启动测试的Instrumentation。你可以手动尝试运行单个测试的Instrumentation来复现问题:

adb shell am instrument -w [CTS测试包名]/android.support.test.runner.AndroidJUnitRunner

替换命令里的[CTS测试包名]为日志中对应的测试包(比如从InstrumentationTest.java关联的包),执行后能获取更直接的报错信息,定位具体是哪个测试或服务出了问题。

4. 排查定制ROM的系统修改

如果你的设备是定制ROM,很可能是系统层面的修改导致Binder调用异常:

  • 检查是否禁用了某些系统核心服务,或者修改了权限策略(比如SELinux规则);
  • 对比原生Android P的系统行为,确认是否有定制化限制影响了CTS的Instrumentation调用。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.06 18:02:45