Nathaniel D. Waggoner
Nathaniel D. Waggoner

Reputation: 2886

Could not find property 'plugin' on project:

I have an SDK for which I've developed a number of small test applications. These are all stand alone android apps which have the following in common:

1) All dependencies are the same (i.e. same version of my sdk/android sdk/etc..)

2) They all share a common top level build.gradle file (which is currently empty):

3) They're build,test etc.. phases are all identical.

I want the projects to all exist as modules in Android studio, and I want them to share as much configuration as possible in the top level build.gradle so that I can update the one file and have everything working correctly.

When I add the following to my top level build.gradle:

subprojects {
    apply plugin: "android"
    repositories {
        mavenCentral()
        maven {
            url "my.repo.com"
            credentials {

                username "user"
                password "pass"
            }
        }
        dependencies {

            compile 'com.my.library:my-library:0.0.1'
            // compile 'com.google.android.gms:play-services:+'
        }
    }
}

I get

'could not find property 'plugin' on ':App1' where ':App1' is the first app in settings.gradle, and the build fails.

My goals would be to get the above block and as many other applicable elements in this top level file.

Edit: I've fixed the syntax error (i was missing the :), but I've that leads to a "plugin with id 'android' not found. Generally this would be resolved by adding:

buildscript {
        repositories {
            mavenCentral()
        }
        dependencies {
            classpath 'com.android.tools.build:gradle:0.14.4'
        }
    }

    allprojects {
        repositories {
            mavenCentral()
        }
    }

But that doesn't resolve it in this case.

Edit 2:

final form:

buildscript {
    repositories {
        mavenCentral()
    }
    dependencies {
        classpath 'com.android.tools.build:gradle:0.14.4'
    }
}

allprojects {
    repositories {
        mavenCentral()
    }
}
subprojects {
    apply plugin: "android"

    repositories {
            mavenCentral()
            maven {
                url "my.repo.com"
                credentials {

                    username "user"
                    password "pass"
                }
            }
            dependencies {

                compile 'com.my.library:my-library:0.0.1'
                // compile 'com.google.android.gms:play-services:+'
            }
        }
    android {
        compileSdkVersion 19
        buildToolsVersion '19.1.0'
        lintOptions {
            abortOnError false
        }
        packagingOptions {
            exclude 'META-INF/LICENSE'
            exclude 'META-INF/NOTICE'
        }
        defaultConfig {
            minSdkVersion 16
            targetSdkVersion 19
        }
        buildTypes {
            release {
                minifyEnabled false
                proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.txt'
            }
        }
        productFlavors {
        }
    }
}

That seems to be working correctly.

Upvotes: 3

Views: 7456

Answers (1)

Mark Vieira
Mark Vieira

Reputation: 13466

This is a simple syntactical error. The apply() method takes a Map as argument. Don't forget the colon (:).

apply plugin: 'android'

Upvotes: 11

Related Questions