Android - в модулях protobuf-java-3.8.0.jar и protobuf-lite-3.0.1.jar обнаружен повторяющийся класс - PullRequest
0 голосов
/ 25 июня 2019

Я использую 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)

Theres еще сотни строк с похожим предупреждением.

Чтобы решить эту проблему, я попробовал много других версий "io.grpc: grpc-protobuf-lite: 1.21.0 "и" com.google.protobuf: protobuf-java: 3.8.0 ", изменив их номера, но ничто не соответствует этим методам, и я продолжаю получать это сообщение об ошибке.

Странный факт: обновление" io.grpc: grpc-protobuf-lite: --- "из 3.0.1 выдает эту ошибку: 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 голосов
/ 25 июня 2019

Иногда удаление дублированных файлов R.java и BuildConfig может решить проблему, но если это не помогает, потому что он всегда воссоздает его и показывает вышеуказанную ошибку.

У меня была та же проблема. Что помогло мне, так это понимание, почему файлы были продублированы с самого начала. Но я понимаю, что это потому, что я ошибочно сделал петлевую зависимость между моими модулями в проекте. Сделав это, когда компилятор начал создавать класс для одного из модулей, которые он уже скомпилировал как зависимость, он показал ошибку. Таким образом, устранение ненужной зависимости и перекомпиляция проекта устранили проблему.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...