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

多模块多变体App宏基准测试启动崩溃及DROP_SHADER_CACHE报错

Android宏基准测试DROP_SHADER_CACHE报错及App启动崩溃解决

问题核心分析

基准测试抛出的DROP_SHADER_CACHE broadcast was not received报错只是表象,根源是目标App在测试过程中启动崩溃,导致ProfileInstaller无法正常工作并发送广播。App崩溃的具体原因:

  • ClassNotFoundException: com.game.soulmate.MyApplication:应用入口类找不到,大概率是构建变体配置错误、包名不匹配或打包过程丢失类文件。
  • 附带的com.facebook.react.ReactApplication缺失:React Native核心依赖未正确引入到测试变体中。

分步解决方案

一、修复App启动崩溃

1. 校验构建变体与Manifest配置

  • 确认基准测试任务connectedGpBenchmarkAndroidTest对应的目标App变体(如gpBenchmark)的AndroidManifest.xml中,application标签的android:name属性准确指向com.game.soulmate.MyApplication,且该类存在于对应变体的源码目录中。
  • 检查多模块项目中,MyApplication所在模块是否被目标变体正确依赖(在模块的build.gradle的dependencies中确认)。

2. 补全React Native依赖

  • 确保测试构建变体(如gpBenchmark)中已引入React Native核心依赖,避免仅在主变体中添加:
    dependencies {
        implementation "com.facebook.react:react-native:${reactNativeVersion}"
        // 其他必要的RN依赖,如react-native-safe-area-context等
    }
    
  • 若启用混淆,在ProGuard/R8规则中保留相关类:
    -keep public class com.game.soulmate.MyApplication
    -keep public class com.facebook.react.ReactApplication
    -keep class com.facebook.react.** { *; }
    

3. 检查Dex配置

  • 若开启多Dex,确保目标变体的build.gradle中设置multiDexEnabled true,且MyApplication继承自MultiDexApplication,或在attachBaseContext方法中调用:
    @Override
    protected void attachBaseContext(Context base) {
        super.attachBaseContext(base);
        MultiDex.install(this);
    }
    
  • 清理并重新构建目标变体:
    ./gradlew clean assembleGpBenchmark
    

二、确认ProfileInstaller配置

App能正常启动后,验证ProfileInstaller的配置:

  • 确保目标App的所有相关变体都添加了依赖,而非仅主变体:
    dependencies {
        implementation "androidx.profileinstaller:profileinstaller:1.3.1"
    }
    
  • 检查基准测试模块的依赖版本与目标App一致,避免版本冲突。

三、重新运行基准测试

执行以下命令重新运行测试,确认报错消失:

./gradlew :macrobenchmark:connectedGpBenchmarkAndroidTest

内容的提问来源于stack exchange,提问作者Code-Warrior

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.30 07:14:57