Android-在模块protobuf-java-3.8.0.jar和protobuf-lite-3.0.1.jar

时间:2019-06-25 03:05:51

标签: java android google-cloud-platform

我正在使用Google Speech github android项目。升级完所有文件版本后,现在它终于解决了一个问题,我无法解决。 在此错误消息:

Duplicate class com.google.protobuf.AbstractMessageLite found in modules protobuf-java-3.8.0.jar (com.google.protobuf:protobuf-java:3.8.0) and protobuf-lite-3.0.1.jar (com.google.protobuf:protobuf-lite:3.0.1)

还有几百行带有类似警告的行。

为解决此问题,我尝试了其他许多版本的“ io.grpc:grpc-protobuf-lite:1.21.0”和“ com.google.protobuf:protobuf-java:3.8.0”,但没有更改这些方法,我不断收到错误消息。

一个奇怪的事实是:升级3.0.1的“ io.grpc:grpc-protobuf-lite:--”会出现此错误:ERROR: Failed to resolve: io.grpc:grpc-protobuf-lite:3.0.1 Show in Project Structure dialog Affected Modules: app ,但将其保持在1.21.0版本不会给出任何错误,但会显示重复的错误消息,该消息显然具有应该不存在的3.0.1版本。

这里是我的gradle中的依赖项列表:

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

// Support libraries
implementation "com.android.support:design:$supportLibraryVersion"
implementation "com.android.support:cardview-v7:$supportLibraryVersion"
implementation "com.android.support:recyclerview-v7:$supportLibraryVersion"

// gRPC
implementation "io.grpc:grpc-okhttp:$grpcVersion"
implementation "io.grpc:grpc-stub:$grpcVersion"
implementation "io.grpc:grpc-protobuf-lite:3.0.1"

implementation 'javax.annotation:javax.annotation-api:1.2'
implementation 'com.google.protobuf:protobuf-java:3.8.0'

// OAuth2 for Google API
implementation('com.google.auth:google-auth-library-oauth2-http:0.16.0') {
    exclude module: 'httpclient'
}

// Tests
testImplementation 'junit:junit:4.12'
androidTestImplementation 'com.android.support.test:runner:1.0.2'
androidTestImplementation 'com.android.support.test.espresso:espresso-core:3.0.2'}

如何解决此重复错误消息?

1 个答案:

答案 0 :(得分:-1)

有时删除重复的R.java和BuildConfig文件可能会解决该问题,但是如果它对我没有帮助,因为它总是在重新创建它并显示上述错误。

我遇到了同样的问题,帮助我理解了为什么文件最初重复的原因。但是我意识到这是因为我错误地在项目中的模块之间建立了循环依赖关系。 通过这样做,编译器开始为已经编译为依赖项的模块之一创建类时,就会显示错误。 因此,删除不需要的依赖项并重新编译项目即可解决此问题。