119

I've been trying to import a project to Android Studio and this is where I am stuck, there is a similar question on Stack Overflow but it did not provide a solution to my particular error.

This is my error log:

C:\<some location>\build.gradle

Error:(24, 1) A problem occurred evaluating root project '<project name>'.
> Could not find method android() for arguments [build_4fli1jm76ubcnxesnhqnhie47$_run_closure3@6e71db85] on root project '<project name>'.
Information:BUILD FAILED

The Gradle sync messages are:

Error:(24, 0) Gradle DSL method not found: 'android()' Possible causes:

  • The project 'PoojaPeople' may be using a version of Gradle that does not contain the method. Gradle settings
  • The build file may be missing a Gradle plugin. Apply Gradle plugin
  • I'm not too sure where exactly this method android() is located. If it is the one located in Application's build.gradle file, I still don't exactly know where to go from here. Any help is appreciated.

    My build.gradle is

    buildscript {
        repositories {
            maven { url "http://dl.bintray.com/populov/maven" }
            mavenCentral()
        }
         dependencies {
            classpath 'com.android.tools.build:gradle:2.1.0'
            // NOTE: Do not place your application dependencies here; they belong
            // in the individual module build.gradle files
        }
    }
    allprojects {
        repositories {
            maven { url "http://dl.bintray.com/populov/maven" }
            mavenCentral()
    
        }
    }
    task clean(type: Delete) {
        delete rootProject.buildDir
    }
    
    android {
        compileSdkVersion 17
        buildToolsVersion '23.0.0'
    }
    dependencies {
        compile files('app/libs/junit-4.12-JavaDoc.jar')
    }
    apply plugin: 'maven'
    
    3
    • 1
      where is your build.gradle ? post it Commented May 16, 2016 at 9:20
    • Does this answer your question? Could not find method compile() for arguments Gradle Commented Dec 2, 2019 at 16:45
    • try it classpath "com.android.tools.build:gradle:4.0.1" Commented Aug 12, 2020 at 3:29

    5 Answers 5

    219

    You are using the wrong build.gradle file.

    In your top-level file you can't define an android block.

    Just move this part inside the module/build.gradle file.

    android {
        compileSdkVersion 17
        buildToolsVersion '23.0.0'
    }
    dependencies {
        compile files('app/libs/junit-4.12-JavaDoc.jar')
    }
    apply plugin: 'maven'
    
    Sign up to request clarification or add additional context in comments.

    8 Comments

    I had the same problem, and your answer fixed it for me. I had installed a fresh version of Android Studio on a new machine, and was trying to install a sample from this repo: github.com/googlesamples/android-vision I am not sure why, but at some point in the import process Android Studio itself added the android() block in the top level build.gradle file which was not in the original source.
    I have an old Eclipse project automatically imported into AS 2.2.2. It's reporting that same error but in the build.graddle file inside the app folder, where Gabriele suggests moving that android { } section. So, it's something else.
    I really wish there were more meaningful messages in studio. I hate that Eclipse has been stopped; Studio is such a pain in the neck. Takes more time to actually compile the code than to actually write it. 10x more time!
    Happened the same with me, Android Studio added this block after I changed the project settings using the Project Structure / Modules / Properties form.
    Most of the error messages produced by the Android Studio / Gradle are like this; incomprehensible and misguiding. Sorry, but its a laugh.
    |
    19

    My issue was inside of my app.gradle. I ran into this issue when I moved

    apply plugin: "com.android.application"
    

    from the top line to below a line with

    apply from:
    

    I switched the plugin back to the top and violá

    My exact error was

    Could not find method android() for arguments [dotenv_wke4apph61tdae6bfodqe7sj$_run_closure1@5d9d91a5] on project ':app' of type org.gradle.api.Project.
    

    The top of my app.gradle now looks like this

    project.ext.envConfigFiles = [
            debug: ".env",
            release: ".env",
            anothercustombuild: ".env",
    ]
    
    
    apply from: project(':react-native-config').projectDir.getPath() + "/dotenv.gradle"
    apply plugin: "com.android.application"
    

    1 Comment

    apply from: project(':react-native-config').projectDir.getPath() + "/dotenv.gradle" all the way to the bottom of the file did the trick for me.
    3

    guys. I had the same problem before when I'm trying import a .aar package into my project, and unfortunately before make the .aar package as a module-dependence of my project, I had two modules (one about ROS-ANDROID-CV-BRIDGE, one is OPENCV-FOR-ANDROID) already. So, I got this error as you guys meet:

    Error:Could not find method android() for arguments [org.ros.gradle_plugins.RosAndroidPlugin$_apply_closure2_closure4@7e550e0e] on project ‘:xxx’ of type org.gradle.api.Project.
    

    So, it's the painful gradle-structure caused this problem when you have several modules in your project, and worse, they're imported in different way or have different types (.jar/.aar packages or just a project of Java library). And it's really a headache matter to make the configuration like compile-version, library dependencies etc. in each subproject compatible with the main-project.

    I solved my problem just follow this steps:

    ① Copy .aar package in app/libs.

    ② Add this in app/build.gradle file:

    repositories {
        flatDir {
            dirs 'libs' //this way we can find the .aar file in libs folder
        }
    }
    

    ③ Add this in your add build.gradle file of the module which you want to apply the .aar dependence (in my situation, just add this in my app/build.gradle file):

    dependencies {
        compile(name:'package_name', ext:'aar')
    }
    

    So, if it's possible, just try export your module-dependence as a .aar package, and then follow this way import it to your main-project. Anyway, I hope this can be a good suggestion and would solve your problem if you have the same situation with me.

    Comments

    2

    In my case, I generate the project by create-react-native and react-native run-android, and there are two build.gradle files, which in ./android/build.gradle and ./android/app/build.gradle.

    You need to set android to ./android/app/build.gradle, which has the line apply plugin: "com.android.application"

    Comments

    1

    This error appear because the compiler could not found "my-upload-key.keystore" file in your project

    After you have generated the file you need to paste it into project's andorid/app folder

    this worked for me!

    Comments

    Start asking to get answers

    Find the answer to your question by asking.

    Ask question

    Explore related questions

    See similar questions with these tags.