构建 APK 时出现错误

Posted

技术标签:

【中文标题】构建 APK 时出现错误【英文标题】:I'm getting an error when building my APK 【发布时间】:2018-08-13 16:17:10 【问题描述】:

我在尝试构建我的 APK 时遇到此错误。我目前正在从另一个开发人员那里维护和修复这个应用程序。在 gradle 中,他在每次编译中都使用了 .+ 。我该如何解决?

错误: 错误:任务 ':app:transformClassesWithJarMergingForDebug' 执行失败。

com.android.build.api.transform.TransformException:java.util.zip.ZipException:重复条目:android/support/design/widget/CoordinatorLayout.class

毕业典礼:

buildscript 
    repositories 
        maven  url 'https://maven.fabric.io/public' 
    

    dependencies 
        classpath 'io.fabric.tools:gradle:1.+'
    

apply plugin: 'com.android.application'
apply plugin: 'io.fabric'
apply plugin: 'realm-android'

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


android 
    compileSdkVersion 26
    buildToolsVersion '26.0.2'
    defaultConfig 
        applicationId "com.easyfixapp.easyfix"
        minSdkVersion 15
        targetSdkVersion 26
        multiDexEnabled true
        versionCode 1
        versionName "1.0"
        testInstrumentationRunner "android.support.test.runner.AndroidJUnitRunner"
    
    buildTypes 
        release 
            minifyEnabled false
            proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
        
    
    configurations.all 
        resolutionStrategy 
            force 'com.google.code.findbugs:jsr305:3.0.1'
        
    


realm 
    syncEnabled = true;

repositories 
    mavenCentral()

dependencies 
    compile('com.facebook.android:facebook-android-sdk:[4,5)') 
        exclude group: 'com.android.support', module: 'multidex'
    
    compile fileTree(include: ['*.jar'], dir: 'libs')
    androidTestCompile('com.android.support.test.espresso:espresso-core:2.2.2', 
        exclude group: 'com.android.support', module: 'support-annotations'
    )
    compile 'com.theartofdev.edmodo:android-image-cropper:2.6.+'
    compile 'com.android.support:multidex:1.0.1'
    compile 'com.android.support:appcompat-v7:26.+'
    compile 'com.android.support:support-v4:26.+'
    compile 'com.android.support:design:26.+'
    compile 'com.android.support:support-vector-drawable:26.+'
    compile 'com.android.support:cardview-v7:26.+'
    compile 'com.android.support:recyclerview-v7:26.+'
    compile 'com.android.support.constraint:constraint-layout:1.0.2'
    compile 'com.android.support:mediarouter-v7:26.+'
    compile 'com.google.android.gms:play-services:11.6.0'
    compile 'com.google.firebase:firebase-messaging:11.6.0'
    compile 'com.prolificinteractive:material-calendarview:1.4.3'
    compile 'com.hbb20:ccp:2.0.5'
    compile 'com.squareup.retrofit2:retrofit:2.3.0'
    compile 'com.squareup.retrofit2:converter-gson:2.3.0'
    compile 'de.hdodenhof:circleimageview:2.2.0'
    compile 'uk.co.chrisjenx:calligraphy:2.3.0'
    compile 'com.github.bumptech.glide:glide:4.2.0'
    compile 'com.nineoldandroids:library:2.4.0'
    compile 'com.github.chrisbanes:PhotoView:2.0.0'
    compile('com.crashlytics.sdk.android:crashlytics:2.8.0@aar') 
        transitive = true;
    
    annotationProcessor 'com.github.bumptech.glide:compiler:4.2.0'
    testCompile 'junit:junit:4.12'


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

【问题讨论】:

尝试将它们设置为每个已编译库的最新版本。我自己发现“+”似乎从来都不好用。 【参考方案1】:
    删除库依赖项中的所有“+” 版本

    在您的应用级 gradle 文件中试试这个

    implementation('com.github.bumptech.glide:glide:4.6.1') 
    exclude group: 'com.android.support'
    `
    

    如果不能解决,请尝试记录依赖项运行此命令

    ./gradlew -q dependencies app:dependencies --configuration compile
    

    在您的 android studio 的终端选项卡中,它将记录您项目的所有依赖关系树

然后找出哪些库正在使用重复依赖项

例如

implementation 'com.github.bumptech.glide:glide:4.6.1' 

正在使用重复的依赖项,所以更改

 implementation 'com.github.bumptech.glide:glide:4.6.1'

implementation('com.github.bumptech.glide:glide:4.6.1') 
exclude group: 'com.android.support'

【讨论】:

以上是关于构建 APK 时出现错误的主要内容,如果未能解决你的问题,请参考以下文章

构建发布 apk 时出现 Glide 错误

尝试生成签名 Apk 时出现 Gradle 构建错误

使用 Jenkins 构建 APK 时出现 kotlin.KotlinNullPointerException(无错误消息)

添加 firebase 后构建 Flutter apk 时出现 Gradle 错误

在 android studio 中构建 APK 时出现“多个 dex 文件定义”错误

尝试为 arm64 构建 apk 时出现链接器错误