无法同步gradle项目:无法找到方法DefaultSourceDirectorySet

时间:2016-11-10 17:37:17

标签: android android-studio gradle

我正在使用Android Studio 2.2.2并尝试从https://android.googlesource.com/导入存储库。

尝试与给定的gradle文件同步时出现以下错误:

Gradle sync failed: Unable to find method 'org.gradle.api.internal.file.DefaultSourceDirectorySet

通过将protobuf版本更新为0.8.0,我尝试了here给出的解决方案,但我收到了更多错误:Execution failed for task ':generateDebugProto'

这是gradle文件:

buildscript {
    repositories {
        mavenCentral()
    }
    dependencies {
        classpath 'com.android.tools.build:gradle:2.1.0'
        classpath 'com.google.protobuf:protobuf-gradle-plugin:0.7.0'
    }
}

apply plugin: 'com.android.application'
apply plugin: 'com.google.protobuf'

android {
    compileSdkVersion 23
    buildToolsVersion "22.0.1"

    defaultConfig {
        applicationId "com.android.launcher3"
        minSdkVersion 16
        targetSdkVersion 23
        versionCode 1
        versionName "1.0"

        testApplicationId "com.android.launcher3.tests"
        testInstrumentationRunner "android.support.test.runner.AndroidJUnitRunner"
    }
    buildTypes {
        debug {
            minifyEnabled false
        }
    }
    sourceSets {
        main {
            res.srcDirs = ['res', 'WallpaperPicker/res']
            java.srcDirs = ['src', 'WallpaperPicker/src']
            manifest.srcFile 'AndroidManifest.xml'
            proto.srcDirs 'protos/'
        }

        androidTest {
            java.srcDirs = ['tests/src']
            res.srcDirs = ['tests/res']
            manifest.srcFile "tests/AndroidManifest.xml"
        }
    }
}

repositories {
    mavenCentral()
}

dependencies {
    compile 'com.android.support:support-v4:23.1.1'
    compile 'com.android.support:recyclerview-v7:23.1.1'
    compile 'com.google.protobuf.nano:protobuf-javanano:3.0.0-alpha-2'

    testCompile 'junit:junit:4.12'
    androidTestCompile 'com.android.support.test:runner:0.5'
    androidTestCompile 'com.android.support.test.uiautomator:uiautomator-v18:2.1.2'
}

protobuf {
    // Configure the protoc executable
    protoc {
        artifact = 'com.google.protobuf:protoc:3.0.0-alpha-3'
    }
}

1 个答案:

答案 0 :(得分:0)

尝试使用以下内容替换gradle文件的protobuf部分:

protobuf {
    // Configure the protoc executable
    protoc {
        artifact = 'com.google.protobuf:protoc:3.0.0'
    }
    plugins {
        lite {
            artifact = "com.google.protobuf:protoc-gen-javalite:3.0.0"
        }
    }
    generateProtoTasks {
        all().each { task ->
            task.builtins {
                remove java
            }
            task.plugins {
                lite { }
            }
        }
    }
}