Deepak Marpak
Deepak Marpak

Reputation: 501

Android Studio: No build variant found error

i am new to android development, i started developing from scratch on a project i bought online, following the documentation, i encountered a error saying No variants found for 'app'. Check build files to ensure at least one variant exists.

Here is the build.gradle code

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'

}

Upvotes: 50

Views: 114263

Answers (18)

brkeyal
brkeyal

Reputation: 1385

Upgrade Android Studio to a newer version

Upvotes: 0

gowtham sunder
gowtham sunder

Reputation: 41

In my case I have enabled kotlin-kover library for test coverage, After creating build variants I forgot to change the report variant name so I got this error. Once I changed it to the available variant it worked. Previous it was

androidReports("debug") { .. }

then I changed to

androidReports("QADebug") { ... }

and it worked. Hope it helps!

Upvotes: 0

cube Alegriabaile
cube Alegriabaile

Reputation: 1

tested:

  • gradle-7.3.3 + AGP-7.2.0: namespace "com.example.xxx" required for aar submodule in build.gradle.
  • gradle-6.7.1 + AGP-4.1.0: namespace "com.example.xxx" should be removed from aar submodule's build.gradle, while package "com.example.xxx" should be added to AndroidManifest.xml.

Upvotes: 0

Ali Ashraf
Ali Ashraf

Reputation: 1919

Here are few things you can check :

  1. Check API version required by app and the one that is installed. As stated by others in above answers.
  2. If there is any settings.gradle file or build.gradle, check if that needs any environment variables, if so feed the env variable on your system, or hardcode the env variable in settings.gradle file or build.gradle in order to run the code.

Upvotes: 1

Syed Zeeshan
Syed Zeeshan

Reputation: 570

For some reason, gradle throws such error when you are trying to import the jar file while there is no jar file or the "libs" folder itself.

Upvotes: 0

Sagar Devkota
Sagar Devkota

Reputation: 1315

The Gradle Sync always gives error No variants found for 'app'. Check build files to ensure at least one variant exists.

When running ./gradlew build It gives new error Installed Build Tools revision 31.0.0 is corrupted. and build-tool 31.0.0 is missing dx

So, if the SDK version is 31, that could be the error.

https://stackoverflow.com/a/68430992 fixed for me. The soln was to rename d8 to dx.

Upvotes: 2

John
John

Reputation: 99

The key reason is that the gradle didn't recognize the application module (opposite to library module ect.) due to some errors in the build.gradle.

The solution is to find out what errors happened in the project build.gradle file.

  1. right click the abnormal module at the Android view.

enter image description here

  1. select the option [open module settings].

  2. check whether the module configuration is correct, including compile SDK version \ Build Tools Version \ Source Compatibility \ Target Compatibility.

enter image description here

  1. correct the configuration and manually sync again.

  2. ensure the compile SDK version has been downloaded to local from SDK manager.

Upvotes: 0

Tom
Tom

Reputation: 413

I change gradle/wrapper/gradle-wrapper.properties

distributionUrl=https\://services.gradle.org/distributions/gradle-8.0-bin.zip

to

distributionUrl=https\://services.gradle.org/distributions/gradle-7.6.1-bin.zip

build & install success

Upvotes: 0

mahmood
mahmood

Reputation: 399

In build.gradle file in dependencies section I changed

if (enableHermes) {
    def hermesPath = "../../node_modules/hermes-engine/android/";
    debugImplementation files(hermesPath + "hermes-debug.aar")
    releaseImplementation files(hermesPath + "hermes-release.aar")
} else {
    implementation jscFlavor
}

to

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

Upvotes: 1

Christophe NOIRTIN
Christophe NOIRTIN

Reputation: 1

I had the same error, after an AGP upgrade, solded it by selecting arm64 in active ABI:build variant screenshot

No idea why that was on 'x86' after AGP upgrade.

Upvotes: 0

Fuad Reza
Fuad Reza

Reputation: 181

In my case, it is because I add flavourDimensions and not adding it to any productFlavors

example from my case I have in my build.gradle in app level:

flavorDimensions "stage", "mode"

and my 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'
    }
}

As you can see here, I don't use flavorDimensions "mode" in any of my productFlavors's dimension. So, when I try to sync my gradle. It gives me that error.

So my solution here is to remove "mode" from flavorDimensions

Upvotes: 9

Jerome Beckett
Jerome Beckett

Reputation: 73

For me the issue was that I hadn't opened the project at its root folder, I'd opened the "app" folder. Both folders had the gradle icon so it was an easy mistake to make after not having done any Android development for a while.

Upvotes: 2

Danny Ruiz
Danny Ruiz

Reputation: 11

Try with

npm i [email protected]

Upvotes: -2

Ruud Helderman
Ruud Helderman

Reputation: 11018

You may get the "No variants found" error in a project with multiple modules, when build types do not match between modules.

In my case, this happened when trying to add a macrobenchmark to an existing Android project. Following the instructions in this document, I added a new module macrobenchmark to the project. At some point, I misinterpreted the instructions: I added a new build type benchmark to the build.gradle of module app, but did not add the same build type to the build.gradle of module macrobenchmark. From then on, any attempt to sync the project with the gradle files would fail with the following error message:

No variants found for 'macrobenchmark'. Check build files to ensure at least one variant exists.

The solution was simple (but not trivial): bring the build types back in sync. In my case, add the missing build type benchmark to the build.gradle of module macrobenchmark.

Upvotes: 3

coloboxp
coloboxp

Reputation: 504

Might help someone, in my case, I just needed to update Gradle.

A warning popped up on Android Studio, so I updated it, and then worked properly 🤷🏻‍♀️

Upvotes: 2

Supriyo Das
Supriyo Das

Reputation: 121

go to the SDK manager (Ctrl+Shift+A then write SDK manager), install the android version of current project, in this case I installed all the available options starting from 5.0

Upvotes: 6

saber tabatabaee yazdi
saber tabatabaee yazdi

Reputation: 4959

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
}

to my Android Studio v3.0.1 in my case:

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
}

but at the end i resolve it by

you need to detect your proper sdk

you need to detect and set your proper sdk

my sdk is 30.0.2 after i install 29.0.2 this error gone

Upvotes: 4

Fabio Rosati
Fabio Rosati

Reputation: 838

I have just solved the same issue like this:

Tools -> SDK Manager

Verify that the SDK platform package for Android 10.0 (the one with API level 29, like you defined in your gradle file) is checked. If not, check it and apply changes. Accept the licence terms, install the package and then File -> Sync Project with Gradle Files (or open the project again)

Upvotes: 83

Related Questions