【问题标题】:Unable to merge dex gradle build fail无法合并 dex gradle 构建失败
【发布时间】:2018-12-19 09:38:16
【问题描述】:

无法构建旧版 Android 应用。每当我尝试在 Android Studio 3.0.1 中构建它时,它都会抛出以下错误。我已经尝试了堆栈中可用的各种解决方案,但无济于事。感谢任何帮助发现错误配置或解决此问题的提示。提前致谢。

错误代码

Execution failed for task ':app:transformDexArchiveWithExternalLibsDexMergerForDebug'.
> com.android.builder.dexing.DexArchiveMergerException: Unable to merge dex

这是项目的构建配置。

app/build.gradle
apply plugin: 'com.android.application'

android {
    compileSdkVersion 28
    buildToolsVersion "27.0.3"
    useLibrary 'org.apache.http.legacy'

    defaultConfig {
        applicationId "com.app.one"
        minSdkVersion 21
        targetSdkVersion 28
        multiDexEnabled true
    }

    buildTypes {
        release {
            minifyEnabled false
            proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.txt'
        }
    }
    dependencies {
        implementation 'org.apache.httpcomponents:httpclient-android:4.3.5.1'
        implementation 'com.google.zxing:core:3.2.0'
        implementation 'com.journeyapps:zxing-android-embedded:3.0.2@aar'
        implementation files('src/main/libs/apache-mime4j-0.6.jar')
        implementation files('src/main/libs/commons-ssl-0.3.11.jar')
        implementation files('src/main/libs/core-2.2.jar')
        implementation files('src/main/libs/httpmime-4.0.1.jar')
    }
    repositories {
        jcenter()
    }
}


ProjectOne/gradle.build
buildscript {
    repositories {
        jcenter()
        google()
    }
    dependencies {
        classpath 'com.android.tools.build:gradle:3.0.1'
    }
}

allprojects {
    repositories {
        jcenter()
        google()
    }
}

【问题讨论】:

  • 更改您的compileSdkVersion 28 buildToolsVersion "28"
  • 'com.android.support:multidex:1.0.3' 添加到您的依赖项中,看看它是否有效

标签: android gradle


【解决方案1】:

尝试注释掉这些行(我不确定这是否会导致依赖冲突或意外错误):

   // implementation files('src/main/libs/apache-mime4j-0.6.jar')
   // implementation files('src/main/libs/commons-ssl-0.3.11.jar')
   // implementation files('src/main/libs/core-2.2.jar')
   // implementation files('src/main/libs/httpmime-4.0.1.jar')

将此compileSdkVersion 28 编辑为compileSdkVersion 'android-P'

删除buildToolsVersion "27.0.3" 以避免版本冲突。 Gradle 会知道编译哪个合适的版本

还有一点,因为你的minSdk是>=21,所以不需要添加这个依赖

      implementation 'com.android.support:multidex:1.0.3'

【讨论】:

  • 如果我将 compileSdkVersion 的值设置为“android-P”,它会抛出错误找不到带有哈希字符串“android-P”的目标。此外,我无法应用您的建议来注释掉这些库,因为它们正在应用程序中使用。我确实尝试将它们注释掉,但它给了我一个缺少库的错误。
  • stackoverflow.com/questions/49183406/…。请检查这个。在这种情况下,“android-P”对我有用。再次尝试通过 gradle 清理和重建。
猜你喜欢
  • 1970-01-01
  • 2018-05-05
  • 1970-01-01
  • 2020-01-13
  • 1970-01-01
  • 2014-04-13
  • 1970-01-01
  • 2018-08-20
相关资源
最近更新 更多