Something
Something

Reputation: 41

Android Studio and protobuf Error:(7, 0) Plugin with id 'com.google.protobuf' not found

I want to use grpc in Android Studio, but failed in gradle setting.

my gradle plugin version is 2.1.2. I have installed gradle 2.14.

In my app\build.gradle file:

    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'
}

Gradle sync message output is Error:(7, 0) Plugin with id 'com.google.protobuf' not found.

What is wrong in my setting?

I create a new empty project, and app/build.gradle file:

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'
}

And gradle-wrapper.properties file:

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

I excute "gradlew build" command successfully. And sync gradle, it prompt that “Error:(2, 0) Cause: org/gradle/api/internal/file/collections/DefaultDirectoryFileTreeFactory ” 。

Upvotes: 4

Views: 7045

Answers (2)

AnswerZhao
AnswerZhao

Reputation: 376

you must add the following code in the build.gradle(the project's build.gradle, not the app's):

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" 
}}

Upvotes: 1

Gabriele Mariotti
Gabriele Mariotti

Reputation: 363439

Something wrong in your build.gradle. You have to move some parts:

   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 {

   }

Upvotes: 2

Related Questions