无法在项目中找到属性“插件”:

时间:2014-12-08 17:32:29

标签: gradle android-studio build.gradle

我有一个SDK,我已经开发了许多小型测试应用程序。这些都是独立的Android应用程序,它们有以下共同点:

1)所有依赖项都是相同的(即我的sdk / android sdk / etc的相同版本。)

2)它们共享一个共同的顶级build.gradle文件(当前为空):

3)他们是构建,测试等。阶段都是相同的。

我希望所有项目都作为Android Studio中的模块存在,我希望它们在顶级build.gradle中尽可能多地共享配置,以便我可以更新一个文件并使一切正常工作。

当我将以下内容添加到我的顶级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:+'
        }
    }
}

我得到了

'could not find property 'plugin' on ':App1'其中':App1'是settings.gradle中的第一个应用,并且构建失败。

我的目标是在此顶级文件中获取上述块和许多其他适用元素。

编辑:我已经修复了语法错误(我错过了:),但是这导致了“找不到id'android'的插件。通常这可以通过添加来解决:

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

    allprojects {
        repositories {
            mavenCentral()
        }
    }

但在这种情况下,这并没有解决它。

编辑2:

最终形式:

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 {
        }
    }
}

这似乎工作正常。

1 个答案:

答案 0 :(得分:4)

这是一个简单的语法错误。 apply()方法以Map为参数。不要忘记冒号(:)。

apply plugin: 'android'