问题
I am getting Duplicate class com.google.protobuf.AbstractMessageLite found in modules jetified-protobuf-javalite-3.11.0.jar (com.google.protobuf:protobuf-javalite:3.11.0) and jetified-protobuf-lite-3.0.1.jar (com.google.protobuf:protobuf-lite:3.0.1).
I have not seen an answer that clears up my issue. I appreciate any assistance.
apply plugin: 'com.android.application' apply plugin: 'idea' apply plugin: 'io.fabric' apply plugin: 'kotlin-android' apply plugin: 'kotlin-kapt' apply plugin: 'kotlin-android-extensions' apply plugin: "io.spring.dependency-management" apply plugin: 'androidx.navigation.safeargs.kotlin' android { compileSdkVersion target_sdk_version buildToolsVersion "29.0.2" android.buildFeatures.dataBinding defaultConfig { applicationId "com.example.app" minSdkVersion 29 targetSdkVersion target_sdk_version multiDexEnabled true versionCode 1 versionName "1.0" multiDexEnabled true testInstrumentationRunner "androidx.test.runner.AndroidJUnitRunner" vectorDrawables.useSupportLibrary = true } packagingOptions { exclude 'META-INF/main.kotlin_module' } buildTypes { release { minifyEnabled false proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro' debuggable = true } debug { minifyEnabled false testCoverageEnabled false } } dataBinding { enabled = true } productFlavors { } lintOptions { abortOnError false } kotlinOptions { jvmTarget = JavaVersion.VERSION_1_8 } sourceSets { main { main.java.srcDirs += 'src/main/kotlin' } } compileOptions { sourceCompatibility '1.8' targetCompatibility '1.8' kotlinOptions { jvmTarget = JavaVersion.VERSION_1_8.toString() } } lintOptions { abortOnError false disable 'GradleDependency', 'GoogleAppIndexingWarning' } configurations.all { resolutionStrategy.eachDependency { DependencyResolveDetails details -> def requested = details.requested if (requested.group == 'org.jetbrains.kotlin' && requested.name == 'kotlin-reflect') { details.useVersion kotlin_version } } } } buildscript { ext { gson_version = "2.8.2" dagger_version = '2.25.2' rx_version = '2.2.15' glide_version = "4.7.1" rx_firebase_version = "1.1.3" support_version = '28.0.0' rx_android_version = '2.1.1' glide_version = '4.11.0' target_sdk_version = 29 } } dependencies { implementation fileTree(dir: 'libs', include: ['*.jar']) def nav_version = "2.3.0" def lifecycle_version = "2.2.0" def arch_version = "2.1.0" def firebase_config = '19.2.0' implementation ("com.google.firebase:firebase-config:$firebase_config",{ // protobuf-lite that firebase-config and Tink depends on. exclude group: 'com.google.protobuf',module: 'protobuf-javalite' exclude group: 'com.google.protobuf',module: 'protobuf-lite' }) //Base SDK implementation 'com.amazonaws:aws-android-sdk-appsync:3.0.2' implementation 'com.amazonaws:aws-android-sdk-core:2.16.13' //Dagger implementation 'com.google.dagger:dagger-android:2.28.1' kapt 'com.google.dagger:dagger-compiler:2.28.1' kapt 'com.google.dagger:dagger-android-processor:2.28.1' implementation 'com.google.dagger:dagger-android-support:2.28.1' //Firebase/Amazon implementation 'com.amazonaws:aws-android-sdk-iot:2.16.13' implementation 'com.amazonaws:aws-android-sdk-mobile-client:2.16.13' implementation "com.firebase:firebase-jobdispatcher:0.8.6" implementation 'com.firebaseui:firebase-ui-auth:5.0.0' implementation 'com.google.firebase:firebase-analytics:17.4.4' implementation 'com.google.firebase:firebase-auth:19.3.2' implementation 'com.google.firebase:firebase-core:17.4.4' implementation 'com.google.firebase:firebase-database:19.3.1' implementation 'com.google.firebase:firebase-firestore:21.5.0' implementation 'com.google.firebase:firebase-storage:19.1.1' ///Glide implementation "com.github.bumptech.glide:glide:$glide_version" kapt "com.github.bumptech.glide:compiler:$glide_version" //JETBRAINS implementation 'org.jetbrains.kotlin:kotlin-stdlib-jdk8:1.3.72' //Kotlin implementation 'org.jetbrains.kotlin:kotlin-reflect:1.3.72' implementation 'org.jetbrains.kotlinx:kotlinx-coroutines-android:1.3.7' implementation 'org.jetbrains.kotlinx:kotlinx-coroutines-core:1.3.7' implementation 'com.fasterxml.jackson.module:jackson-module-kotlin:2.11.1' //Lifecycle // https://mvnrepository.com/artifact/android.arch.lifecycle/common-java8 implementation(group: 'androidx.lifecycle', name: 'lifecycle-common-java8', version: '2.2.0') // Annotation processor // alternately - if using Java8, use the following instead of lifecycle-compiler implementation 'androidx.lifecycle:lifecycle-common-java8:2.2.0' implementation 'androidx.lifecycle:lifecycle-extensions:2.2.0' implementation "androidx.lifecycle:lifecycle-service:$lifecycle_version" implementation 'androidx.lifecycle:lifecycle-livedata-ktx:2.3.0-alpha05' implementation 'androidx.lifecycle:lifecycle-viewmodel-ktx:2.3.0-alpha05' implementation "androidx.navigation:navigation-dynamic-features-fragment:2.3.0" implementation 'androidx.navigation:navigation-fragment-ktx:2.3.0' implementation 'androidx.navigation:navigation-ui-ktx:2.3.0' // optional - ReactiveStreams support for LiveData implementation "androidx.lifecycle:lifecycle-reactivestreams-ktx:$lifecycle_version" // optional - ProcessLifecycleOwner provides a lifecycle for the whole application process implementation "androidx.lifecycle:lifecycle-process:$lifecycle_version" // optional - Test helpers for LiveData testImplementation "androidx.arch.core:core-testing:$arch_version" kapt 'androidx.databinding:databinding-compiler:4.0.0' implementation 'com.squareup.retrofit2:retrofit:2.9.0' implementation 'com.squareup.okhttp3:logging-interceptor:4.8.0' implementation 'com.squareup.retrofit2:converter-gson:2.9.0' implementation 'com.squareup.okhttp3:okhttp:4.8.0' //Mini implementation 'com.github.pabloogc:Mini:1.0.5' kapt 'com.github.pabloogc.Mini:mini-processor:1.0.5' annotationProcessor 'com.github.pabloogc.Mini:mini-processor:1.0.5' // Required for Cognito implementation('com.amazonaws:aws-android-sdk-cognitoauth:2.16.13@aar') { transitive = true } //Rx implementation 'io.reactivex.rxjava2:rxjava:2.2.19' implementation "io.reactivex.rxjava2:rxandroid:$rx_android_version" implementation 'com.tbruyelle.rxpermissions2:rxpermissions:0.9.5@aar' //Support implementation 'androidx.activity:activity-ktx:1.2.0-alpha06' implementation 'androidx.annotation:annotation:1.1.0' implementation 'androidx.appcompat:appcompat:1.1.0' implementation 'androidx.browser:browser:1.2.0' implementation 'androidx.cardview:cardview:1.0.0' implementation 'androidx.constraintlayout:constraintlayout:2.0.0-beta8' implementation 'androidx.core:core-ktx:1.3.0' implementation 'androidx.core:core:1.5.0-alpha01' implementation 'androidx.fragment:fragment:1.3.0-alpha06' implementation 'androidx.fragment:fragment-ktx:1.3.0-alpha06' implementation 'androidx.gridlayout:gridlayout:1.0.0' implementation 'androidx.legacy:legacy-support-v4:1.0.0' implementation 'androidx.legacy:legacy-support-core-utils:1.0.0' implementation 'androidx.preference:preference:1.1.1' implementation 'androidx.preference:preference-ktx:1.1.1' implementation 'androidx.recyclerview:recyclerview:1.1.0' implementation 'androidx.vectordrawable:vectordrawable:1.1.0' implementation 'androidx.vectordrawable:vectordrawable-animated:1.1.0' implementation 'androidx.viewpager2:viewpager2:1.0.0' implementation 'com.google.android.material:material:1.3.0-alpha01' implementation 'com.google.android.gms:play-services-auth:18.0.0' implementation 'com.google.android.gms:play-services-maps:17.0.0' implementation 'com.google.android.gms:play-services-location:17.0.0' implementation 'com.google.android.gms:play-services-places:17.0.0' implementation 'com.google.code.gson:gson:2.8.6' implementation 'com.google.android.libraries.places:places:2.3.0' implementation 'com.google.guava:guava:29.0-jre' implementation 'com.crashlytics.sdk.android:crashlytics:2.10.1' implementation 'com.karumi:dexter:6.2.1' implementation 'com.pavelsikun:material-seekbar-preference:2.3.0' implementation 'info.guardianproject.panic:panic:1.0' implementation 'me.zhanghai.android.materialprogressbar:library:1.6.1' implementation 'org.eclipse.paho:org.eclipse.paho.client.mqttv3:1.2.5' implementation 'org.eclipse.paho:org.eclipse.paho.android.service:1.1.1' //Test testImplementation 'junit:junit:4.13' testImplementation 'com.natpryce:hamkrest:1.7.0.0' testImplementation "org.jetbrains.kotlin:kotlin-test:$kotlin_version" testImplementation 'org.junit.platform:junit-platform-runner:1.6.2' androidTestImplementation "androidx.navigation:navigation-testing:$nav_version" androidTestImplementation 'androidx.test:runner:1.3.0-rc01' androidTestImplementation 'androidx.test.espresso:espresso-core:3.3.0-rc01' } repositories { google() mavenCentral() maven { url "http://dl.bintray.com/jetbrains/spek" } apply plugin: 'com.google.gms.google-services' //kotlin annotation processor apply plugin: 'kotlin-kapt' apply plugin: "androidx.navigation.safeargs.kotlin" } kotlin { experimental { coroutines "enable" } } ...
回答1:
You need to add an exclusion on one of the imports so it only adds the package once.
Example:
// Now junit will not include hamcrest library. Therefore there will be no
//dependency conflict.
compile ('junit:junit:4.12'){
exclude group: 'org.hamcrest', module:'hamcrest-core'
}
来源:https://stackoverflow.com/questions/62917077/how-to-resolve-duplicate-class-error-in-android