1

该设备具有 AP 级别 26 的 sdk,并且 CTS 测试也是级别 26。但是在运行命令 > 运行 cts-java 时遇到错误:

java.lang.RuntimeException:com.android.tradefed.targetprep.TargetSetupError:无法在 00002474 上安装 CtsLibcoreTestCases.apk。原因:'INSTALL_FAILED_OLDER_SDK:在 installPackageLI 期间解析失败:/data/app/vmdl1133462583.tmp/base.apk(在 Binary XML 文件第 #0 行):需要更新的 sdk 版本 #27(当前版本是 #26)'

到目前为止完成的调查:查找 apk 版本:

$ aapt dump badging ~/CTS/android-cts/testcases/CtsLibcoreTestCases.apk package: name='android.libcore.cts' versionCode='26' versionName='8.0.0' platformBuildVersionName='8.0.0' sdkVersion:' 26' targetSdkVersion:'26'

查找设备 sdk 版本:$ adb shell getprop ro.build.version.sdk 26

没有冲突,但仍然出现错误。我的预感是设备或 cts 临时目录存储了以前的 apk 数据。我不知道如何删除它。请建议

4

1 回答 1

0

你解决了这个问题吗?我遇到了同样的情况,发现了以下未记录的行为,见下文

背景

当我基于之前测试设备时,Android 8.1 (SDK #27)我在一个文件夹下组织了相应的 CTS 和 VTS 测试,例如TRADFED,然后放在同一个父文件夹 CTS 下用于测试Android 8.0 (SDK #26)设备,并且遇到了与 SDK 版本不匹配的相同问题。我的结构看起来像这样:

--TRADFED
  |-- android-cts
  |-- android-cts-media-1.4
  |-- android-cts-verifier
  `-- android-vts_81

调查

事实证明,CTS 正在从其父级 ( TRAFED) 扫描整个目录结构以查找测试 APK,而 VTS在子文件夹Cts*.apk下包含相同的内容,testcases并且它试图从 VTS 而不是其自己的 CTS 位置安装这些目录结构。

综上所述

看起来 CTS 非常自私和咄咄逼人,它会扫描整个父文件夹以查找任何合适的Cts*.apk应用程序,无论它完全位于 CTS 位置之外。

于 2018-11-30T03:27:42.917 回答