如何在添加支持库时解决错误

时间:2016-03-18 04:36:39

标签: android android-gradle android-support-library

我是第一次尝试为通知项目添加支持库。但是出现了一些错误

> Error:Execution failed for task
> ':app:transformClassesWithDexForDebug'.
>     com.android.build.api.transform.TransformException:com.android.ide.common.process.ProcessException:
> org.gradle.process.internal.ExecException: Process 'command
> 'C:\Program Files\Java\jdk1.8.0_40\bin\java.exe'' finished with
> non-zero exit value 2

不知道如何解决,希望有人给出一个提示。 我的构建Gradel

   apply plugin: 'com.android.application'

android {
compileSdkVersion 23
buildToolsVersion "23.0.1"

defaultConfig {
    applicationId "com.union.noti"
    minSdkVersion 16
    targetSdkVersion 23
    versionCode 1
    versionName "1.0"
    multiDexEnabled true
}
buildTypes {
    release {
        minifyEnabled false
        proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
    }
}
}

dependencies {
compile fileTree(include: ['*.jar'], dir: 'libs')
testCompile 'junit:junit:4.12'
compile 'com.android.support:appcompat-v7:23.0.1'
compile 'com.android.support:design:23.0.1'
compile files('libs/android-support-v4.jar')
compile 'com.android.support:multidex:1.0.1'
}

添加multidex时出错我现在正在

Error:Execution failed for task ':app:transformClassesWithJarMergingForDebug'.
> com.android.build.api.transform.TransformException: java.util.zip.ZipException: duplicate entry: android/support/annotation/LayoutRes.class

5 个答案:

答案 0 :(得分:0)

尝试将其放入android部分

中的Build.gradle(Module:app)
defaultConfig {
        multiDexEnabled true
    }

如果它不起作用,只需尝试重启android studio。

希望它会对你有所帮助。

答案 1 :(得分:0)

在根Gradle文件中执行此操作

defaultConfig {
    applicationId "com.xxxxx"
    minSdkVersion 15
    targetSdkVersion 23
    versionCode 1
    versionName "1.0"
    // Enabling multidex support.
    multiDexEnabled true
}

答案 2 :(得分:0)

您需要在 Gradle文件中添加多重索引,例如在图片中查看..请更新 gardle并突出显示部分

enter image description here

检查突出显示的部分会像这样粘贴 enter image description here

答案 3 :(得分:0)

与其他答案相反,您不需要启用multidex。

您正在编译v4库两次...删除compile files行,因为它已由compile fileTree处理,它表示编译lib目录中的所有jar文件。因此,除非jar文件在lib目录之外,否则不需要添加其他行。

compile fileTree(include: ['*.jar'], dir: 'libs')
//... 
compile files('libs/android-support-v4.jar')

无论如何,为什么不用Gradle编译v4库?

compile "com.android.support:support-v4:23.0.1"

答案 4 :(得分:0)

为什么要将android-support-v4.jar放在libs文件夹中?如果你想像这样使用android-support-v4.jar库:

dependencies {
compile fileTree(include: ['*.jar'], dir: 'libs')
testCompile 'junit:junit:4.12'
compile 'com.android.support:appcompat-v7:23.0.1'
compile 'com.android.support:design:23.0.1'
compile 'com.android.support:support-v4:23.1.1'
compile 'com.android.support:multidex:1.0.1'
}

在项目支持库和设计库或appcompat库中的某些地方存在冲突。因为支持库中还有appcompat库。这样使用可能对你有帮助。如果不成功,请告诉我。