设备SDK API等级26运行同版本CTS测试时APK安装失败求助
咱们先拆解下你遇到的核心矛盾:设备是API26,CTS测试版本也选的26,但执行run cts-java时,安装CtsLibcoreTestCases.apk却提示需要SDK27,这明显不符合预期,下面给你分析可能的原因和排查方案:
问题根源分析
错误信息里的Requires newer sdk version #27说明,这个CtsLibcoreTestCases.apk的最低SDK版本(minSdkVersion)或者目标SDK版本(targetSdkVersion)被设置成了27——哪怕你整体CTS包是26版本的,单个测试APK的配置也可能出现错误。
具体排查与解决步骤
验证APK的SDK版本配置
用Android的aapt工具查看这个APK的manifest信息,运行命令:aapt dump badging /path/to/CtsLibcoreTestCases.apk在输出里找类似
sdkVersion:'26'和targetSdkVersion:'27'的字段,确认是不是真的要求SDK27。如果确实是,那说明这个APK不属于API26的CTS包。重新确认CTS包的正确性
可能你下载的CTS包有问题,比如误下载了API27的CTS包,或者包在传输/解压过程中损坏、被替换了。建议重新获取对应Android 8.0(API26)的官方CTS完整包,解压后再尝试运行测试。确认设备的实际SDK版本
有时候设备系统可能被修改过,标称是API26但实际不是,用adb命令确认:adb shell getprop ro.build.version.sdk确保输出是
26,如果不是,需要刷回正确的API26系统镜像。清理设备残留测试包
设备上可能残留了旧的CTS测试APK,导致安装冲突,先卸载残留:adb uninstall com.android.cts.libcore然后重新执行
run cts-java命令。
内容的提问来源于stack exchange,提问作者Investigate

