找不到Gradle DSL方法:" classpath()"

时间:2014-11-09 07:17:59

标签: android build gradle android-studio

我正在开发一个Android项目,使用Gradle,如下所述。

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

allprojects {
    repositories {
        mavenCentral()
    }
}

dependencies {
    classpath 'com.android.tools.build:gradle:0.12.+'
    compile fileTree(dir: 'libs', include: '*.jar')
    compile project(':workspace:darkmoon:darul-android:vitamio:vitamio')
    compile project(':Dev:adt-bundle-mac-x86_64:sdk:extras:google:google_play_services:libproject:google-play-services_lib')
}

android {
    compileSdkVersion 19
    buildToolsVersion "20.0.0"

    sourceSets {
        main {
            manifest.srcFile 'AndroidManifest.xml'
            java.srcDirs = ['src']
            resources.srcDirs = ['src']
            aidl.srcDirs = ['src']
            renderscript.srcDirs = ['src']
            res.srcDirs = ['res']
            assets.srcDirs = ['assets']
        }

        // Move the tests to tests/java, tests/res, etc...
        instrumentTest.setRoot('tests')

        // Move the build types to build-types/<type>
        // For instance, build-types/debug/java, build-types/debug/AndroidManifest.xml, ...
        // This moves them out of them default location under src/<type>/... which would
        // conflict with src/ being used by the main source set.
        // Adding new build types or product flavors should be accompanied
        // by a similar customization.
        debug.setRoot('build-types/debug')
        release.setRoot('build-types/release')
    }
}

但是当我构建它时,不断收到此错误:&#34;未找到Gradle DSL方法&#34;,它指向 以下一行:

dependencies {
    classpath 'com.android.tools.build:gradle:0.12.+'
    compile fileTree(dir: 'libs', include: '*.jar')
    compile project(':workspace:epsilonmobile:darul-android:vitamio:vitamio')
    compile project(':Dev:adt-bundle-mac-x86_64:sdk:extras:google:google_play_services:libproject:google-play-services_lib')
}

道歉,如果这个问题有点像菜鸟,我对Gradle和Android Studio都不熟悉

2 个答案:

答案 0 :(得分:14)

classpath配置仅适用于buildscript个依赖项。您需要删除顶级classpath 'com.android.tools.build:gradle:0.12.+'块中的行dependencies。 (Gradle插件需要在buildscript { dependencies { ... } }下声明。)

答案 1 :(得分:4)

在gradle脚本中,buildscript是一个特殊的部分,您可以在其中声明构建脚本本身的依赖关系(即构建过程所需的二进制文件)。

gradle构建过程只不过是一个java进程,因此它支持正常的类路径依赖。

com.android.tools.build:gradle:0.12.+标识构建过程所需的二进制文件(它包含能够理解/执行构建脚本的android 部分的代码)。

将通过此脚本构建的android apk不需要在您的Android设备上运行二进制com.android.tools.build:gradle:0.12.+(即,当它在设备上运行时,apk当然已经构建):那里没有理由在顶级依赖项中再次声明它 (这些是您的应用程序所需的依赖项)