在 Android Studio 中构建时重复的类

Posted

技术标签:

【中文标题】在 Android Studio 中构建时重复的类【英文标题】:Duplicate classes when building in Android Studio 【发布时间】:2019-04-17 07:07:20 【问题描述】:

我在构建 android Studio 项目时遇到错误。

程序类型已存在:com.google.android.gms.internal.measurement.zzdz

这是我的 build.gradle

apply plugin: 'com.android.application'
apply plugin: 'com.github.ben-manes.versions'
apply plugin: 'com.jakewharton.hugo'
apply plugin: 'io.fabric'
apply plugin: 'com.getkeepsafe.dexcount'

buildscript 
repositories 
    google()
    jcenter()
    maven  url 'https://maven.fabric.io/public' 


dependencies 
    classpath 'com.github.ben-manes:gradle-versions-plugin:0.11.3'
    classpath 'com.jakewharton.hugo:hugo-plugin:1.2.1'
    classpath 'io.fabric.tools:gradle:1.+'
    classpath 'com.getkeepsafe.dexcount:dexcount-gradle-plugin:0.6.2'
    classpath 'com.google.gms:google-services:3.2.1'


android 
compileSdkVersion 28
buildToolsVersion '28.0.3'
useLibrary 'org.apache.http.legacy'
defaultConfig 
    minSdkVersion 16
    targetSdkVersion 28
    versionCode 202
    versionName "2.0.0"
    buildConfigField "boolean", "CRASHLYTICS_ENABLED", "false"


buildTypes 
    release 
        minifyEnabled false
        proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
    


compileOptions 
    sourceCompatibility JavaVersion.VERSION_1_7
    targetCompatibility JavaVersion.VERSION_1_7


flavorDimensions "type", "name"

productFlavors 
    magazines 
        dimension "type"
    
    magazine 
        dimension "name"
        // Remove next line to enable Crashlytics and change false to true in second line
        ext.enableCrashlytics = false
        buildConfigField "boolean", "CRASHLYTICS_ENABLED", "false"
    
    wind 
        dimension "name"
        // Remove next line to enable Crashlytics and change false to true in second line
        ext.enableCrashlytics = false
        buildConfigField "boolean", "CRASHLYTICS_ENABLED", "false"
    
    script 
        //// Use custom gradle file if it exists in script product flavor folder
        if (new File("./main/src/script/custom.gradle").exists()) 
            println 'custom.gradle script exists'
            apply from: "../main/src/script/custom.gradle";
         else 
            throw new GradleException('No custom.gradle script exists')
        
        //applicationId scriptApplicationId
        dimension "name"
        buildConfigField "boolean", "CRASHLYTICS_ENABLED", "true"
    


lintOptions 
    abortOnError false


packagingOptions 
    exclude 'META-INF/LICENSE.txt'
    exclude 'META-INF/NOTICE.txt'



repositories 
maven  url 'https://maven.fabric.io/public' 
maven  url "https://jitpack.io" 


dependencies 
implementation fileTree(include: '*.jar', dir: 'libs')
//added here
implementation fileTree(include: '*.java', dir: 'libs')
implementation fileTree(include: '*.so', dir: 'libs')
//til here
implementation project(':appiraterAndroid')
implementation 'de.greenrobot:eventbus:2.4.0'
implementation 'com.squareup.okhttp:okhttp:2.7.5'
implementation 'com.squareup.okhttp:okhttp-urlconnection:2.4.0'
implementation 'com.squareup.picasso:picasso:2.5.2'
implementation 'commons-io:commons-io:2.4'
implementation 'io.reactivex:rxandroid:0.24.0'
implementation 'uk.co.chrisjenx:calligraphy:2.1.0'
implementation 'com.github.castorflex.smoothprogressbar:library:1.1.0'
implementation 'com.github.castorflex.smoothprogressbar:library-circular:1.1.0'
implementation 'com.anjlab.android.iab.v3:library:1.0.26@aar'
implementation 'com.rengwuxian.materialedittext:library:2.1.4'
implementation 'net.danlew:android.joda:2.8.1'
implementation('com.crashlytics.sdk.android:crashlytics:2.4.0@aar') 
    transitive = true;

implementation 'com.android.support:support-annotations:28.0.0'
implementation 'com.android.support:design:28.0.0'
implementation 'com.android.support:appcompat-v7:28.0.0'
implementation 'com.android.support:recyclerview-v7:28.0.0'
implementation 'com.android.support:support-core-utils:28.0.0'
implementation 'com.android.support:customtabs:28.0.0'
implementation('com.github.afollestad.material-dialogs:core:0.8.5.5@aar') 
    transitive = true

implementation 'com.android.support:support-v4:28.0.0'
implementation 'com.google.android.gms:play-services-analytics:16.0.5'
implementation 'com.google.android.gms:play-services-gcm:16.0.0'
implementation 'com.google.android.gms:play-services-ads:17.1.0'
implementation "com.google.android.gms:play-services-base:16.0.1"


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

我确定与依赖项和版本有关,但我找不到。

我尝试清理 gradle 缓存并重新启动 Android Studio,但我仍然收到上述错误。

【问题讨论】:

【参考方案1】:

将项目迁移到 androidx 支持

点击 -> 重构 -> 迁移到 AndroidX

并更新库

【讨论】:

遇到了同样的问题“程序类型已经存在:com.google.android.gms.internal.measurement.zzdz”并在更新时解决了同样的问题。 更新你的库还不够吗?我看不出迁移到 AndroidX 会有什么帮助。如果这真的是解决方案,那么实际上每个应用程序都会被破坏,这是没有意义的。 他可能会尝试更新库而不更新到 androidx。请尝试一下

以上是关于在 Android Studio 中构建时重复的类的主要内容,如果未能解决你的问题,请参考以下文章

Android Studio Instrumentation 测试构建变体

Flutter 构建 apk:在模块 guava-26.0-android.jar 和 listenablefuture-1.0.jar 中发现了重复的类

在启用 R8 的模块中发现重复的类

部署apk时Android Studio ..Application崩溃[重复]

复制的文件重复(Android Studio 0.4.0)[重复]

将 Google Cloud 语言库添加到 Android 应用时出现重复的类