2016-09-02 109 views
2

我想在Android Studio中使用grpc,但在gradle設置中失敗。Android Studio和protobuf錯誤:(7,0)未找到id爲'com.google.protobuf'的插件

我的gradle插件版本是2.1.2。我已經安裝了gradle 2.14。

在我的應用程序\的build.gradle文件:

apply plugin: 'com.android.application' 

android { 
    compileSdkVersion 23 
    buildToolsVersion "23.0.3" 

    apply plugin: "com.google.protobuf" 

    defaultConfig { 
     applicationId "com.example.test.test_20" 
     minSdkVersion 15 
     targetSdkVersion 23 
     versionCode 1 
     versionName "1.0" 

    } 

    buildTypes { 
     release { 
      minifyEnabled false 
      proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro' 
     } 
     debug { 
      debuggable true 
      jniDebuggable true 
     } 
    } 

    buildscript { 
     repositories { 
      maven { 
       mavenCentral() 
      } 
     } 
     dependencies { 
      classpath "com.google.protobuf:protobuf-gradle-plugin:0.8.0" 
     } 
    } 


    protobuf { 
     protoc { 
      // The version of protoc must match protobuf-java. If you don't depend on 
      // protobuf-java directly, you will be transitively depending on the 
      // protobuf-java version that grpc depends on. 
      artifact = "com.google.protobuf:protoc:3.0.0" 
     } 
     plugins { 
      grpc { 
       artifact = 'io.grpc:protoc-gen-grpc-java:1.0.0' 
      } 
     } 
     generateProtoTasks { 
      all()*.plugins { 
       grpc {} 
      } 
     } 
    } 
} 

dependencies { 
    compile fileTree(dir: 'libs', include: ['*.jar']) 
    compile 'com.android.support:appcompat-v7:23.1.1' 
    compile 'com.android.support:design:23.1.1' 
    compile 'io.grpc:grpc-okhttp:1.0.0' 
    compile 'io.grpc:grpc-protobuf-lite:1.0.0' 
    compile 'io.grpc:grpc-stub:1.0.0' 
} 

搖籃同步消息輸出是 錯誤:(7,0)插件ID爲'com.google.protobuf找不到。

我的設置有什麼問題?

我創建一個新的空項目,和應用程序/文件的build.gradle:

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

buildscript { 
    repositories { 
     maven { 
      //mavenCentral() 
      url 'https://repo1.maven.org/maven2' 
     } 
    } 
    dependencies { 
     classpath "com.google.protobuf:protobuf-gradle-plugin:0.8.0" 
    } 
} 

android { 
    compileSdkVersion 23 
    buildToolsVersion "23.0.3" 

    defaultConfig { 
     applicationId "com.example.test.testprotobuf" 
     minSdkVersion 15 
     targetSdkVersion 23 
     versionCode 1 
     versionName "1.0" 
    } 
    buildTypes { 
     release { 
      minifyEnabled false 
      proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro' 
     } 
    } 
} 

dependencies { 
    compile fileTree(dir: 'libs', include: ['*.jar']) 
    testCompile 'junit:junit:4.12' 
    compile 'com.android.support:appcompat-v7:23.4.0' 
    compile 'com.android.support:design:23.4.0' 
} 

而且gradle-wrapper.properties文件:

distributionBase=GRADLE_USER_HOME 
distributionPath=wrapper/dists 
zipStoreBase=GRADLE_USER_HOME 
zipStorePath=wrapper/dists 
distributionUrl=https\://services.gradle.org/distributions/gradle-2.12-all.zip 

我EXCUTE 「gradlew打造」 命令成功。 和同步gradle這個,它提示說:「錯誤:(2,0)原因:組織/ gradle產出/ API /內部/文件/收藏/ DefaultDirectoryFileTreeFactory 」。

回答

1

什麼不對您的build.gradle。你必須移動某些部分:

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

    buildscript { 
     repositories { 
      maven { 
       mavenCentral() 
      } 
     } 
     dependencies { 
      classpath "com.google.protobuf:protobuf-gradle-plugin:0.8.0" 
     } 
    } 

    android { 

    } 
+0

非常感謝您的回覆。我創建了一個新項目,但它再次失敗......它提示「錯誤:(2,0)原因:org/gradle/api/internal/file/collections/DefaultDirectoryFileTreeFactory」。 – Something

1

必須添加的的build.gradle下面的代碼(該項目的build.gradle,而不是應用程序的):

buildscript { 
repositories { 
    jcenter() 
    mavenCentral() 
} 
dependencies { 
    classpath 'com.android.tools.build:gradle:2.2.3' 
    // for gRPC 
    classpath "com.google.protobuf:protobuf-gradle-plugin:0.8.0" 
}} 
相關問題