Android Studio:未找到构建变体错误

48

我是 Android 开发的新手,我从零开始开发一个我在线购买的项目,按照文档进行开发时,遇到了一个错误,显示未找到应用程序的任何变体。检查构建文件以确保至少存在一个变体。

这是 build.gradle 代码:

apply plugin: 'com.android.application'

android {
compileSdkVersion 29
buildToolsVersion "29.0.1"
defaultConfig {
    applicationId "com.app-10.app"
    minSdkVersion 23
    targetSdkVersion 29
    versionCode 1
    versionName "1.0"
    testInstrumentationRunner "androidx.test.runner.AndroidJUnitRunner"
}
buildTypes {
    release {
        minifyEnabled false
        proguardFiles getDefaultProguardFile('proguard-android-optimize.txt'), 'proguard-rules.pro'
    }
}
}

dependencies {
implementation fileTree(include: ['*.jar'], dir: 'libs')
implementation 'androidx.appcompat:appcompat:1.0.2'
implementation 'com.google.android.material:material:1.0.0'
implementation 'androidx.constraintlayout:constraintlayout:1.1.3'
implementation 'androidx.vectordrawable:vectordrawable:1.0.1'
implementation 'androidx.legacy:legacy-support-v4:1.0.0'
testImplementation 'junit:junit:4.12'
androidTestImplementation 'androidx.test:runner:1.2.0'
androidTestImplementation 'androidx.test.espresso:espresso-core:3.2.0'
// Third Party Libraries
//Glide library for image fetching from the web
implementation 'com.github.bumptech.glide:glide:4.9.0'
annotationProcessor 'com.github.bumptech.glide:compiler:4.9.0'
//Material library for styling blocks
implementation 'com.google.android.material:material:1.0.0'
// Google Gson
implementation 'com.google.code.gson:gson:2.8.5'
// Retrofit
implementation 'com.squareup.retrofit2:retrofit:2.6.1'
implementation 'com.squareup.retrofit2:converter-gson:2.6.1'
// Android-SpinKit
implementation 'com.github.ybq:Android-SpinKit:1.4.0'

implementation files('libs/YouTubeAndroidPlayerApi.jar')

// gotev/android-upload-service
implementation "net.gotev:uploadservice:3.5.2"

//A fast circular ImageView perfect for profile images
implementation 'de.hdodenhof:circleimageview:3.0.1'

implementation 'org.apache.commons:commons-io:1.3.2'

}

首先进行清理重建。 - IntelliJ Amiya
15个回答

80

我刚刚解决了与此类似的问题:

工具 -> SDK 管理器

确认Android 10.0的SDK平台包(与您在gradle文件中定义的API级别29相同)是否已选中。 如果没有,请勾选该选项并应用更改。接受许可条款,安装该软件包,然后文件 -> 使用Gradle文件同步项目(或重新打开项目)。


安装API级别29使构建变体视图重新出现,不知道为什么它不是Android Studio的一部分。 - Tran Hoai Nam
由于某种原因,在Android Studio 2022.2.1 Patch 2上,即使它是正确的解决方案,它也无法正常工作。我有compileSdkVersion 29。在“工具”>“SDK管理器”中,我已经“安装”了它。直到我进入创建新模拟器时,模拟器才抱怨我没有安装SDK。一旦我通过设备管理器安装了SDK,我的项目就再次运行了。所以我缺少了SDK,只是“工具”>“SDK管理器”在欺骗我(或将其安装在错误的位置,我不知道)。 - Will Nasby
@WillNasby 我现在在我的Android Studio中发现了相同的问题 - 如果你进入已安装的SDK窗口,它会显示所有的SDK都已安装,但当我进入模拟器窗口时,它已经抱怨缺少API 30。在安装了API 30并检查其他SDK(从模拟器窗口)后,它显示有一堆SDK缺失。更令人烦恼的是,这个错误没有指明缺少哪一个SDK,以便你只安装那一个(至少我没有找到任何信息)。 - Robert Ruxandrescu

8

我的情况是因为我添加了 flavourDimensions 但没有将其添加到任何一个 productFlavors 中。

我在应用级别的build.gradle中有以下示例:

flavorDimensions "stage", "mode"

以及我的productFlavors

productFlavors {
    dev {
        dimension "stage"
        //noinspection DevModeObsolete
        minSdkVersion 21
        versionNameSuffix "-dev"
        applicationIdSuffix '.dev'
        resConfigs "en", "xxhdpi"
    }
    
    prod {
        dimension "stage"
        minSdkVersion 21
        versionNameSuffix "-prod"
        applicationIdSuffix '.prod'
    }
}

如您所见,我在任何一个productFlavorsdimension中都没有使用flavorDimensions "mode"。因此,当我尝试同步我的gradle时,会给我报错。

所以,我的解决方案是从flavorDimensions中删除"mode"


6

前往SDK管理器(按Ctrl+Shift+A,然后输入SDK管理器),安装当前项目的Android版本,在这种情况下,我安装了从5.0开始的所有可用选项。


4

I replaced from:

dependencies {
    classpath 'com.android.tools.build:gradle:3.2.1'
    // NOTE: Do not place your application dependencies here; they belong
    // in the individual module build.gradle files
}

在我的情况下,我需要将Android Studio升级到v3.0.1:

dependencies {
    classpath 'com.android.tools.build:gradle:3.0.1'
    // NOTE: Do not place your application dependencies here; they belong
    // in the individual module build.gradle files
}

但最终我解决了它,方法是

你需要检测正确的SDK版本

需要检测并设置正确的SDK版本

我的SDK版本是30.0.2,安装29.0.2后这个错误就消失了。


2
在一个包含多个模块的项目中,如果构建类型不匹配,则可能会出现“未找到变量”的错误。
在我的情况下,我尝试将宏基准测试添加到现有的Android项目中时发生了这种情况。按照此文档中的说明,我向项目添加了一个名为macrobenchmark的新模块。在某些时候,我误解了指令:我在app模块的build.gradle中添加了一个名为benchmark的新构建类型,但没有在macrobenchmark模块的build.gradle中添加相同的构建类型。从那时起,任何尝试使用gradle文件同步项目的操作都会失败,并显示以下错误信息:

未找到“macrobenchmark”的变量。检查构建文件以确保至少存在一个变量。

解决方案很简单(但不是琐碎的):将构建类型重新同步。在我的情况下,将缺失的构建类型benchmark添加到模块macrobenchmarkbuild.gradle中。

2

这可能会对某些人有所帮助,在我的情况下,我只需要更新Gradle。

Android Studio弹出了一个警告,所以我更新了它,然后一切正常 ‍♀️


2

对我来说,问题是我没有在项目的根文件夹下打开该项目,而是打开了“app”文件夹。两个文件夹都有gradle图标,因此在一段时间没有进行Android开发后,这是一个容易犯的错误。


1
Gradle同步总是出现错误找不到'app'的任何变体。请检查构建文件,确保至少存在一个变体。

当运行./gradlew build时,会出现新的错误安装的Build Tools版本31.0.0已损坏。缺少build-tool 31.0.0的dx

所以,如果SDK版本是31,那可能是错误的原因。

https://dev59.com/rVEG5IYBdhLWcg3wTZl7#68430992对我有用。解决方法是将d8重命名为dx。


在我的情况下,错误与Gradle Sync显示给我的完全不同。./gradlew build部分地拯救了我(另一部分用于找到这个解决方案)。谢谢(我讨厌我的工作) - Javad

1
在 build.gradle 文件的 dependencies 部分中,我进行了更改。
if (enableHermes) {
    def hermesPath = "../../node_modules/hermes-engine/android/";
    debugImplementation files(hermesPath + "hermes-debug.aar")
    releaseImplementation files(hermesPath + "hermes-release.aar")
} else {
    implementation jscFlavor
}

if (enableHermes) {
    implementation("com.facebook.react:hermes-engine:+") {
        exclude group: 'com.facebook.fbjni'
    }
} else {
    implementation jscFlavor
}

0
以下是您可以检查的几个事项:
  1. 检查应用程序所需的API版本和已安装的版本。如上述答案中其他人所述。
  2. 如果有任何settings.gradle文件或build.gradle文件,请检查是否需要任何环境变量。如果需要,请在您的系统上提供环境变量,或者在settings.gradle文件或build.gradle文件中硬编码环境变量以便运行代码。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接