构建脚本错误,发现不支持的Gradle DSL方法:'android()'!

时间:2014-02-19 12:53:58

标签: android gradle android-studio

我正在使用Android Studio 0.4.5并且无法同步gradle。

当我尝试这样做时,我收到此错误:

Gradle 'MyApp' project refresh failed: Build script error, unsupported Gradle DSL method found: 'android()'!

我的解决方案包含4个模块。这是我的根build.graddle

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

android {    
    packagingOptions {
        exclude 'META-INF/LICENSE.txt'
    }
}

allprojects {
    repositories {
        mavenCentral()
    }
}

其他人(为了简单起见,我删除了依赖项)

第1单元

apply plugin: 'android'

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

android {
    compileSdkVersion 19
    buildToolsVersion "19.0.1"

    defaultConfig {
        minSdkVersion 9
        targetSdkVersion 19
    }

    buildTypes {
        release {
            runProguard false
            proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.txt'
        }
    }
}

第2单元

apply plugin: 'android-library'

android {
    compileSdkVersion 18
    buildToolsVersion "19.0.1"

    defaultConfig {
        minSdkVersion 8
        targetSdkVersion 17
    }

    release {
        runProguard false
        proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.txt'
    }
}

第3单元 apply plugin:'android-library'

android {
    compileSdkVersion 18
    buildToolsVersion "19.0.1"

    defaultConfig {
        minSdkVersion 8
        targetSdkVersion 17
    }

    release {
        runProguard false
        proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.txt'
    }
}

第4单元

apply plugin: 'android-library'

android {
    compileSdkVersion 17
    buildToolsVersion "19.0.1"

    defaultConfig {
        minSdkVersion 9
        targetSdkVersion 17
    }

    release {
        runProguard false
        proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.txt'
    }
}

很抱歉让这么久,但我在这里绝望了:(

2 个答案:

答案 0 :(得分:8)

主要原因是:

android {    
    packagingOptions {
        exclude 'META-INF/LICENSE.txt'
    }
}
build build.gradle。

答案 1 :(得分:4)

Module1 build.gradle文件中删除以下代码行:

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

由于您在所有模块中使用相同的配置,因此只能将其置于根gradle文件中。

即使你想在模块的build.gradle文件中使用它,这个代码也应该在应用android插件之前。

最终 Module1 build.gralde文件:

apply plugin: 'android'

android {
    compileSdkVersion 19
    buildToolsVersion "19.0.1"

    defaultConfig {
        minSdkVersion 9
        targetSdkVersion 19
    }

    buildTypes {
        release {
            runProguard false
            proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.txt'
        }
    }
}

还要确保下面提到的配置在模块中应该相同

android {
    compileSdkVersion 19
    buildToolsVersion "19.0.1"

    defaultConfig {
        minSdkVersion 9
        targetSdkVersion 19
    }
 }

你可以使用你想要的任何东西,但应该是相同的。

相关问题