Разрешить повторяющиеся классы с помощью Firebase и диалогового потока - PullRequest
0 голосов
/ 07 июля 2019

Я работаю над мобильным приложением, в котором мне нужен диалог, чтобы получить некоторую информацию из сообщения пользователя.Проблема в том, что, когда я внедряю диалоговый поток в gradle приложения, я получаю ошибку при сборке, говоря, что у меня есть несколько повторяющихся классов (конфликтующих с классами firebase).

Я попробовал методы, предложенные здесь:https://stackoverflow.com/a/51695425/11023871

и даже выполнял поиск в github-хранилище диалогового потока: https://github.com/googleapis/google-cloud-java/issues/5608#issue-462434090

Я пытался исключить «google-protobuf», но это не помогло (Я получил ошибку компиляции для компонентов диалогового потока).

Я прикрепил свои зависимости ниже.

dependencies {
    implementation 'com.hbb20:ccp:2.2.4'
    implementation 'com.android.support:recyclerview-v7:28.0.0'
    implementation 'com.facebook.android:facebook-android-sdk:[5,6)'
    implementation 'com.google.firebase:firebase-auth:17.0.0'
    implementation 'com.google.firebase:firebase-core:16.0.9'
    implementation 'com.google.android.gms:play-services-auth:16.0.1'
    implementation 'androidx.cardview:cardview:1.0.0'
    implementation fileTree(dir: 'libs', include: ['*.jar'])
    implementation 'androidx.appcompat:appcompat:1.0.2'
    implementation 'androidx.constraintlayout:constraintlayout:1.1.3'
    testImplementation 'junit:junit:4.12'
    androidTestImplementation 'androidx.test:runner:1.1.1'
    androidTestImplementation 'androidx.test.espresso:espresso-core:3.1.1'
    implementation 'com.google.android.material:material:1.0.0'
    implementation 'com.google.firebase:firebase-database:17.0.0'
    implementation 'com.google.firebase:firebase-firestore:19.0.2'
    implementation 'com.google.cloud:google-cloud-dialogflow:0.99.0-alpha'
}

EDIT Вот некоторые из дубликатов, указанных в gradle: DuplicateКласс com.google.api.Advice находится в модулях classes.jar (com.google.firebase: protolite-well-known-types: 16.0.1) и proto-google-common-protos-1.16.0.jar (com.google.api.grpc: proto-google-common-protos: 1.16.0)

Дубликат класса com.google.api.Advice $ 1 найден в модулях classes.jar (com.google.firebase: protolite-well-known-types: 16.0.1) и proto-google-common-protos-1.16.0.jar (com.google.api.grpc: proto-google-common-protos: 1.16.0)

Дубликат класса com.google.api.Advice $ Builder найден в модулях classes.jar (com.google.firebase: protolite-well-known-types: 16.0.1) и proto-google-common-protos-1.16.0.jar (com.google.api.grpc: proto-google-common-protos: 1.16.0)

Повторяющийся класс com.google.api.AdviceOrBuilder находится в модулях classes.jar (com.google.firebase: protolite-well-known-types: 16.0.1) и proto-google-common-protos-1.16.0.jar (com.google.api.grpc).: proto-google-common-protos: 1.16.0)

Дубликат класса com.google.api.AnnotationsProto находится в модулях classes.jar (com.google.firebase: protolite-хорошо-известных-типов: 16,0.1) и proto-google-common-protos-1.16.0.jar (com.google.api.grpc: proto-google-common-protos: 1.16.0)

Повторяющийся класс com.google.api.AuthProto находится в модулях classes.jar (com.google.firebase: protolite-всем известные-типы: 16.0.1) и proto-google-common-protos-1.16.0.jar (com.google.api.grpc: прото-Google-синфазного протос: 1.16.0)

Ответы [ 2 ]

0 голосов
/ 08 июля 2019

У меня есть повторяющиеся классы, и это банки, но я никогда не исключал что-то из gradle. Не могли бы вы помочь мне? Например, у меня есть это: «Дубликат класса com.google.api.Advice найден в модулях classes.jar (com.google.firebase: protolite-well-known-types: 16.0.1) и proto-google-common-protos -1.16.0.jar (com.google.api.grpc: proto-google-common-protos: 1.16.0) "

Я не уверен, почему эти банки дублируют одни и те же классы или какой класс вы хотите сохранить. Но вы можете сделать что-то вроде

dependencies {
    implementation 'com.hbb20:ccp:2.2.4'
    implementation 'com.android.support:recyclerview-v7:28.0.0'
    implementation 'com.facebook.android:facebook-android-sdk:[5,6)'
    ... 

} 
configurations.implementation.exclude(group: 'com.google.firebase', module: 'protolite-well-known-types') 
0 голосов
/ 07 июля 2019

Добавьте следующий фрагмент к вашему build.gradle и затем запустите gradle findDuplicates.Это перечислит все дублирующиеся классы и в каких банках они находятся. После этого вы сможете увидеть, какие из них вы хотите исключить.

task findDuplicates {
   doLast {
      Map<String, List<File>> pathMap = [:] 
      configurations.runtime.each { file ->
         FileTree tree = file.directory ? fileTree(file) : zipTree(file) 
         tree.visit { FileVisitDetails fvd ->
            if (!fvd.directory) {
               String path = fvd.path
               List<File> fileList = pathMap[path]?:[] 
               fileList << fvd.file
               pathMap[path] = fileList
            } 
         } 
      } 
      pathMap.each { path, fileList ->
         if (fileList.size() > 1) {
            println "Found duplicate $path in $fileList" 
         } 
      } 
   } 
} 
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...