如何解决Android中的重复类错误 [英] How to resolve Duplicate Class error in Android

查看:296
本文介绍了如何解决Android中的重复类错误的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

  1. 我在模块jetified-protobuf-javalite-3.11.0.jar(com.google.protobuf:protobuf-javalite:3.11.0)的模块中找到了重复类com.google.protobuf.AbstractMessageLite, protobuf-lite-3.0.1.jar(com.google.protobuf:protobuf-lite:3.0.1).

  1. 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"
     }
 }
 ...

推荐答案

您需要在其中一个导入项上添加排除项,以便仅将包添加一次.

You need to add an exclusion on one of the imports so it only adds the package once.

示例:

// 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'
}

这篇关于如何解决Android中的重复类错误的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆