2016-08-18 102 views
7

從2.1.2更新的Android工作室 - > 2.1.3今天上午收到以下gradle這個同步錯誤:的Android 2.1.3工作室 - DefaultSourceDirectorySet問題

Error:Unable to find method 'org.gradle.api.internal.file.DefaultSourceDirectorySet.(Ljava/lang/String;Ljava/lang/String;Lorg/gradle/api/internal/file/FileResolver;)V'.

我敢肯定,它涉及到以下庫項目:

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

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

android { 
    compileSdkVersion 23 
    buildToolsVersion "22.0.1" 
    defaultConfig { 
     minSdkVersion 16 
     targetSdkVersion 23 
     versionCode 1 
     versionName "1.0" 
    } 
    buildTypes { 
     debug { 
      minifyEnabled false 
     } 
    } 
    sourceSets { 
     main { 
      proto { 
       srcDir 'src/main/protos' 
      } 
      java { 
       srcDir 'src/main/java' 
      } 
      manifest { 
       srcFile 'src/main/AndroidManifest.xml' 
      } 
     } 
    } 
} 


repositories { 
    mavenCentral() 
} 
dependencies { 
    compile 'com.android.support:support-v4:+' 
    compile 'com.android.support:recyclerview-v7:+' 
    compile 'com.google.protobuf.nano:protobuf-javanano:3.0.0-alpha-2' 
    compile project(':wallpaperpicker-resources') 
} 
protobuf { 
    // Configure the protoc executable 
    protoc { 
     // Download from repositories 
     artifact = 'com.google.protobuf:protoc:3.0.0-alpha-3' 
    } 
} 

Screenshot

看起來像我以前的gradle這個插件的版本是1.3.0 - 我錯過發生與源的某些變化設置塊?

+0

您是否嘗試清理項目,清理gradle緩存? –

+1

我rm -rf'ed /.gradle,清理項目和無效的緩存。 –

回答

3

土木工程署的回答使我的解決方案。看來更新版本的Gradle,Android Studio gradle插件和google protoc插件不會表現出色。我必須升級谷歌protoc插件,因爲注意到了 - 但這與0.7.0相差甚遠。 javanano protoc編譯器不再推薦(我根本無法使它工作)。這是我最終使用的Javalite解決方案。

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

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

android { 
    compileSdkVersion 23 
    buildToolsVersion "23.0.2" 
    defaultConfig { 
     minSdkVersion 16 
     targetSdkVersion 23 
     versionCode 1 
     versionName "1.0" 
    } 
    buildTypes { 
     debug { 
      minifyEnabled false 
     } 
    } 
    sourceSets { 
     main { 
      proto { 
       srcDir 'src/main/proto' 
      } 
      java { 
       srcDirs = ['src/main/java','$buildDir/generated-sources/release/javalite'] 
      } 
      manifest { 
       srcFile 'src/main/AndroidManifest.xml' 
      } 
     } 
    } 
} 


repositories { 
    mavenCentral() 
} 
dependencies { 
    compile 'com.android.support:support-v4:23.2.0' 
    compile 'com.android.support:recyclerview-v7:23.2.0' 
    compile 'com.google.protobuf.nano:protobuf-javanano:3.0.0-alpha-2' 
    compile 'com.google.protobuf:protoc-gen-javalite:3.0.0' 
    compile 'com.google.protobuf:protobuf-lite:3.0.0' 
    compile project(':wallpaperpicker-resources') 
} 

protobuf { 
    generatedFilesBaseDir = "$projectDir/build/generated-sources" 
    protoc { 
     // Download from repositories 
     artifact = 'com.google.protobuf:protoc:3.0.0' 
    } 
    plugins { 
     javalite { 
      // The codegen for lite comes as a separate artifact 
      artifact = 'com.google.protobuf:protoc-gen-javalite:3.0.0' 
     } 
    } 
    generateProtoTasks { 
     all().each { task -> 
      task.plugins { 
       javalite { 
        //remove some of the javalite extra packaging 
        outputSubDir = '' 
       } 
      } 
     } 
    } 
} 

apply plugin: 'idea' 

idea { 
    module { 
     sourceDirs += file("$buildDir/generated-sources/release/javalite"); 
    } 
} 
6

嘗試更新的protobuf版本: classpath 'com.google.protobuf:protobuf-gradle-plugin:0.8.0'