2017-11-16 9 views
0

をコンパイルしません:いるProtobufのGradleプラグインは、私はGradleのプラグインを使用しているProtobufファイルをコンパイルしようとしているが、私は次のエラーを取得

java.io.IOException: Can't write [/Users/elavi/dev/sdk3/android/showcaseapp/build/intermediates/multi-dex/debug/componentClasses.jar] 
(Can't read [/Users/elavi/.gradle/caches/modules-2/files-2.1/com.google.protobuf/protobuf-java/3.0.0/6d325aa7c921661d84577c0a93d82da4df9fa4c8/protobuf-java-3.0.0.jar(;;;;;;**.class)] 
(Duplicate zip entry [protobuf-java-3.0.0.jar:com/google/protobuf/ExperimentalApi.class])) 

ない、これがなぜ起こるかわからを... いるProtobufファイルが生成されます正しく、期待どおりに、しかし、最後のステップは、この奇妙なエラーで失敗します。

これは私のGradleファイルです:私は単に任意の派手なものを行っていない、いるProtobufのreadme(https://github.com/google/protobuf-gradle-plugin)で書かれているものを追加

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

group = GROUP 
version = VERSION_NAME 

apply from: 'versioning.gradle' 

buildscript { 
    repositories { 
    mavenCentral() 
    } 
} 

android { 
    compileSdkVersion 26 
    buildToolsVersion '26.0.2' 
    flavorDimensions "default" 

    defaultConfig { 
    minSdkVersion 15 
    targetSdkVersion 26 
    versionCode buildVersionCode() 
    versionName VERSION_NAME 
    consumerProguardFiles 'tangram-proguard-rules.txt' 
    } 

    // Add proto files location to be used with the protobuf plugin 
    sourceSets { 
    main { 
     proto { 
     srcDir '../../common/vendored/proto' 
     } 
    } 
    } 
} 

dependencies { 
    compile 'com.google.protobuf:protobuf-lite:3.0.0' 
    compile 'io.grpc:grpc-stub:1.6.1' 
    compile 'io.grpc:grpc-protobuf:1.0.0-pre2' 
    compile 'javax.annotation:javax.annotation-api:1.2' 

    compile 'com.squareup.okhttp3:okhttp:3.9.0' 
    compile 'com.android.support:support-annotations:27.0.0' 

    implementation project(':core') 
} 

// Protobuf configuration. Taken from the documentation: https://github.com/google/protobuf-gradle-plugin 
protobuf { 

    protoc { 
    artifact = 'com.google.protobuf:protoc:3.0.0' } plugins { 
    javalite { 
     artifact = 'com.google.protobuf:protoc-gen-javalite:3.0.0' 
    } 
    grpc { 
     artifact = 'io.grpc:protoc-gen-grpc-java:1.0.0-pre2' 
    } } generateProtoTasks { 
    all().each { task -> 
     task.builtins { 
     remove java 
     } 
     task.plugins { 
     javalite { } 
     grpc { 
      option 'lite' 
     } 
     } 
    } } generatedFilesBaseDir = "$projectDir/build/gen" } 

clean { delete protobuf.generatedFilesBaseDir } 

idea { module { 
    sourceDirs += file("${protobuf.generatedFilesBaseDir}/main/java"); 
    sourceDirs += file("${protobuf.generatedFilesBaseDir}/main/grpc"); } } 

//apply from: file('gradle-mvn-push.gradle') 

...

答えて

2

多分あなたはcompile 'com.google.protobuf:protobuf-lite:3.0.0'エントリを削除する必要があります依存関係のセクションでは、エントリが重複していて、最後のバージョンの設定が欠落しています。他の側では、おそらくprotoソースのパスに問題があります。私のprotosはsrc/main/protoですが、私はprotoだけを宣言しました。私の簡単な設定は次です:

アプリbuild.gradle

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

android { 
    ... 
    sourceSets { 
     main { 
      proto { 
      } 
     } 
    } 
    ... 
    configurations.all { 
     resolutionStrategy.force 'com.google.code.findbugs:jsr305:1.3.9' 
    } 
} 

dependencies { 
    compile fileTree(include: ['*.jar'], dir: 'libs') 

    compile 'com.android.support:appcompat-v7:27.0.0' 
    ... 
    compile 'io.grpc:grpc-okhttp:1.1.2' 
    compile 'io.grpc:grpc-protobuf-lite:1.1.2' 
    compile 'io.grpc:grpc-stub:1.1.2' 
    compile 'javax.annotation:javax.annotation-api:1.2' 
    ... 
    testImplementation 'junit:junit:4.12' 
    androidTestImplementation 'com.android.support.test:runner:1.0.1' 
    androidTestImplementation 'com.android.support.test.espresso:espresso-core:3.0.1' 
} 

protobuf { 
    protoc { 
     artifact = "com.google.protobuf:protoc:3.0.2" 
    } 
    plugins { 
     grpc { 
      artifact = 'io.grpc:protoc-gen-grpc-java:1.1.2' 
     } 
     javalite { 
      artifact = "com.google.protobuf:protoc-gen-javalite:3.0.0" 
     } 
    } 
    generateProtoTasks { 
     all().each { task -> 
      task.plugins { 
       javalite {} 
       grpc { 
        // Options added to --grpc_out 
        option 'lite' 
       } 
      } 
     } 
    } 
    generatedFilesBaseDir = "$projectDir/build/generated" 
} 

メインプロジェクトbuild.gradle

buildscript { 
    repositories { 
     google() 
     jcenter() 
    } 
    dependencies { 
     classpath 'com.android.tools.build:gradle:3.0.0' 
     classpath "com.google.protobuf:protobuf-gradle-plugin:0.8.2" 
     ... 
    } 
} 
関連する問題