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

Android Macrobenchmark模块无法识别com.android.test插件求助

集成MacroBenchmark库时Gradle同步报错:com.android.test插件与targetProjectPath属性冲突

问题背景

在项目中集成MacroBenchmark库,使用AGP 7.3.1、Kotlin 1.7.10,基准测试模块位于项目子目录下。已在根目录build.gradle中添加同版本的com.android.test插件,但Gradle同步时出现报错。

报错详情

应用com.android.test插件时的报错

An exception occurred applying plugin request [id: 'com.android.test']
> Failed to apply plugin class 'com.android.build.gradle.api.AndroidBasePlugin'.
   > Extension of type 'TestedExtension' does not exist. Currently registered extension types: [ExtraPropertiesExtension, SonarQubeExtension, Property<ModuleType>, ReportingExtension, DetektExtension, LibrariesForLibs, VersionCatalogsExtension, BasePluginExtension, DefaultArtifactPublicationSet, SourceSetContainer, JavaToolchainService, JavaPluginExtension, NamedDomainObjectContainer<BaseVariantOutput>, TestExtension, TestAndroidComponentsExtension]

移除com.android.test插件后的报错

移除插件后,android块中的targetProjectPath属性无法识别:

android {
    ...

    targetProjectPath = ":app"
    ...
}

对应的报错信息:

> Could not set unknown property 'targetProjectPath' for extension 'android' of type com.android.build.gradle.LibraryExtension.

移除targetProjectPath后的问题

项目可以正常构建,但无法运行任何基准测试。已测试Android Studio 2022.2.1 Canary 9和2021.3.1 Patch 1两个版本。

相关配置代码

根目录build.gradle

buildscript {
    apply from: "./buildSystem/android-config.gradle"

    dependencies {
        classpath "org.jetbrains.kotlin:kotlin-serialization:${libs.versions.kotlin.get()}"
        classpath 'com.google.firebase:perf-plugin:1.4.1'
    }
}

plugins {
    id 'com.android.test' version '7.3.1' apply false
    alias(libs.plugins.android.application) apply false
    alias(libs.plugins.android.library) apply false
    alias(libs.plugins.kotlin) apply false
    alias(libs.plugins.hilt) apply false
    alias(libs.plugins.crashlytics) apply false
    alias(libs.plugins.google.services) apply false
    alias(libs.plugins.quadrant) apply false
    alias(libs.plugins.sonarqube)

    alias(libs.plugins.test.gradle.retry) apply false

    // Core-lib plugins
    alias(libs.plugins.corelib.detekt)
    alias(libs.plugins.corelib.googlePlayReleaseNotes)
    alias(libs.plugins.corelib.moduleDependenciesCheck)
    alias(libs.plugins.corelib.coverage)
}

基准测试模块build.gradle

plugins {
    id 'com.android.test'
    id 'org.jetbrains.kotlin.android'
}

android {
    namespace 'com.example.benchmark'
    compileSdk 33

    compileOptions {
        sourceCompatibility = JavaVersion.VERSION_1_8
        targetCompatibility = JavaVersion.VERSION_1_8
    }

    kotlinOptions {
        jvmTarget = "1.8"
    }

    defaultConfig {
        minSdk 23
        targetSdk 33

        testInstrumentationRunner "androidx.test.runner.AndroidJUnitRunner"
    }

    buildTypes {
        // This benchmark buildType is used for benchmarking, and should function like your
        // release build (for example, with minification on). It's signed with a debug key
        // for easy local/CI testing.
        benchmark {
            debuggable = true
            signingConfig = debug.signingConfig
            matchingFallbacks = ["release"]
        }
    }

    targetProjectPath = ":app"
    experimentalProperties["android.experimental.self-instrumenting"] = true
}

dependencies {
    implementation 'androidx.test.ext:junit:1.1.4'
    implementation 'androidx.test.espresso:espresso-core:3.5.0'
    implementation 'androidx.test.uiautomator:uiautomator:2.2.0'
    implementation 'androidx.benchmark:benchmark-macro-junit4:1.1.1'
}

androidComponents {
    beforeVariants(selector().all()) {
        enabled = buildType == "benchmark"
    }
}

内容的提问来源于stack exchange,提问作者Artur Schaefer

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.07 15:05:25