Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Duplicate classes error after adding dialogflow dependency to my android app

I get duplicate classes error after adding dialogflow dependency to my app which uses firebase.

tried downgrading both dialogflow and firebase dependencies, also tried

"implementation('com.google.cloud:google-cloud-dialogflow:0.98.0-alpha'){
     exclude group: 'com.google.api.grpc'
     exclude group: 'com.google.protobuf'
}"

to exclude the duplicated classes. None of which worked!

dependencies {
    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.2.0'
    androidTestImplementation 'androidx.test.espresso:espresso-core:3.2.0'
    implementation 'pl.droidsonroids.gif:android-gif-drawable:1.2.3'
    implementation 'com.android.support:multidex:1.0.3'
    implementation 'com.google.android.material:material:1.0.0'
    implementation 'com.jakewharton:butterknife:10.1.0'
    annotationProcessor 'com.jakewharton:butterknife-compiler:10.1.0'
    implementation 'com.google.firebase:firebase-core:17.0.0'
    implementation 'com.google.firebase:firebase-auth:18.0.0'
    implementation 'com.google.firebase:firebase-database:18.0.0'
    implementation 'com.google.firebase:firebase-firestore:20.1.0'
    implementation "com.github.VaibhavLakhera:Circular-Progress-View:0.1.2"
    implementation 'com.github.CardinalNow:Android-CircleProgressIndicator:v0.2'
    implementation 'ai.api:sdk:2.0.7@aar'
    implementation 'ai.api:libai:1.6.12'
    implementation 'com.google.cloud:google-cloud-dialogflow:0.98.0-alpha'
    implementation 'io.grpc:grpc-okhttp:1.21.0'
    implementation 'com.google.apis:google-api-services-oauth2:v1-rev145-1.25.0'
    implementation 'com.google.apis:google-api-services-dialogflow:v2-rev80-1.25.0'
    implementation "com.andkulikov:transitionseverywhere:2.0.0-beta01"
}

apply plugin: 'com.google.gms.google-services'
apply plugin: 'com.jakewharton.butterknife'

Error:

Duplicate class com.google.api.Advice found in modules classes.jar (com.google.firebase:protolite-well-known-types:17.0.0) and proto-google-common-protos-1.16.0.jar (com.google.api.grpc:proto-google-common-protos:1.16.0) Blockquote

I was able to exclude the duplicate classes with the following method:

android {
    ... 
    configurations { 
      implementation.exclude module:'proto-google-common-protos'
      implementation.exclude module:'protolite-well-known-types'
      implementation.exclude module:'guava' 
      implementation.exclude module:'protobuf-lite' 
    }
 }

But it caused the app to crash at launch producing this error:

java.lang.ClassNotFoundException: Didn't find class "com.google.common.base.Preconditions"

like image 953
Husam Gibreel Avatar asked Jun 28 '19 17:06

Husam Gibreel


1 Answers

To exclude the duplicate classes that's causing the problem, post the following code into your build.gradle (app module) file):

android {
    ... 

  configurations { 
      implementation.exclude module:'proto-google-common-protos'
      implementation.exclude module:'protolite-well-known-types'
      implementation.exclude module:'protobuf-lite' 
  }
}

In my previous implementation i excluded guava module which is what caused the app crash. luckily leaving it in didn't result in any duplicate classes

like image 138
Husam Gibreel Avatar answered Sep 30 '22 19:09

Husam Gibreel