Android基准测试因ProfileInstaller库问题失败求助
解决方案
针对第一个错误:The baseline profile install broadcast was not received
这个问题的核心是主应用APK未正确集成ProfileInstaller库,按以下步骤排查修复:
- 确认依赖添加位置:必须把
androidx.profileinstaller:profileinstaller:1.3.1依赖添加到主应用模块(而非benchmark测试模块)的build.gradle中,示例配置:// 主模块build.gradle dependencies { implementation 'androidx.profileinstaller:profileinstaller:1.3.1' // 其他依赖项... } - 添加混淆规则:如果开启了R8/ProGuard,需在
proguard-rules.pro中保留ProfileInstaller相关类,避免被混淆移除:-keep class androidx.profileinstaller.ProfileInstaller { *; } -keep class androidx.profileinstaller.ProfileInstallReceiver { *; } - 验证APK打包结果:构建主应用的release变体后,用Android Studio的APK Analyzer检查APK内是否包含
androidx.profileinstaller包下的类,确认库已被正确打包。
针对第二个错误:The DROP_SHADER_CACHE broadcast was not received
即便使用了1.3.1版本,仍可能存在以下问题,逐一排查:
- 统一依赖版本:确保benchmark模块和主应用模块使用的ProfileInstaller版本完全一致,避免版本冲突。可通过执行
./gradlew app:dependencies查看依赖树,排除旧版本的间接引入。 - 移除手动广播注册:1.3.0+版本的ProfileInstaller会自动在Manifest中注册
ProfileInstallReceiver,如果你的AndroidManifest.xml中手动注册了该Receiver,需删除手动注册项,避免冲突。 - 优化测试代码:在测试的
setupBlock中增加短暂延迟,确保系统广播接收状态稳定,示例修改:setupBlock = { pressHome() Thread.sleep(1000) // 增加1秒延迟,等待系统状态稳定 } - 检查设备系统版本:确保测试设备运行Android 11(API 30)及以上,旧系统对广播的处理逻辑存在限制,可能导致接收超时。
额外验证步骤
- 运行基准测试前,先手动安装主应用的release变体,确认应用能正常启动。
- 关闭设备的省电模式、后台应用限制等功能,确保ProfileInstaller的广播能正常被接收。
内容的提问来源于stack exchange,提问作者OnDWay
相关产品推荐
相关产品推荐

