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

Android基准测试报错:目标APK未找到Baseline Profile求助

解决Baseline Profile基准测试时的FileNotFoundException问题

问题重现

尝试使用生成的Baseline Profile运行Macrobenchmark时,即使已将文件复制到所有变体文件夹,仍抛出FileNotFoundException,提示找不到dexopt/baseline.prof,基准测试报错No baseline profile was found in the target apk。

排查与解决步骤

1. 严格检查文件路径与命名

  • 基线配置文件必须放在**src/main/assets/dexopt/**目录下,文件名必须是baseline.prof(Android文件系统区分大小写,注意大小写匹配)
  • 若为变体专属配置,需放在对应变体目录(如src/release/assets/dexopt/),但main目录下的文件应被所有变体继承

2. 确认Gradle配置正确性

  • 在app模块的build.gradle.kts(或build.gradle)中启用基线配置支持:
    android {
        buildFeatures {
            baselineProfile = true
        }
    }
    
    dependencies {
        // 使用最新稳定版的ProfileInstaller
        implementation("androidx.profileinstaller:profileinstaller:1.3.1")
    }
    
  • 检查sourceSets配置,确保assets目录未被排除:
    android {
        sourceSets {
            main {
                assets.srcDirs("src/main/assets")
            }
        }
    }
    

3. 清理缓存并重建项目

  • 执行清理命令:./gradlew clean
  • 重新编译目标变体:./gradlew assemble<Variant>(例如assembleRelease)
  • 用Android Studio的APK Analyzer打开生成的APK,确认assets/dexopt/baseline.prof存在且内容有效(非空、无乱码)

4. 对齐基准测试与目标变体配置

  • 在基准测试模块的build.gradle.kts中,确保测试变体依赖包含基线配置的目标变体:
    android {
        buildTypes {
            benchmark {
                matchingFallbacks = listOf("release") // 匹配包含基线配置的buildType
                isDebuggable = false
            }
        }
    }
    
  • 运行测试时指定正确的变体与测试类:
    ./gradlew benchmark:connectedBenchmarkAndroidTest -Pandroid.testInstrumentationRunnerArguments.class=com.example.mobile.android.beta.benchmark.exampleStartupBenchmark
    

5. 版本兼容性检查

  • 确保androidx.benchmark:benchmark-macro-junit4与androidx.profileinstaller:profileinstaller使用兼容的最新稳定版本,避免版本冲突导致的加载异常

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.02 13:01:12