任务':app:transformClassesWithDexForDebug'

时间:2017-12-11 09:26:59

标签: java android

这个问题已被问过几次,但我已经尝试了所有的答案,但我仍然有同样的错误。

以下是我的所有依赖项:

dependencies {
    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 files('libs/itextpdf-5.3.2.jar')
    compile 'com.androidadvance:topsnackbar:1.1.1'
    compile 'com.android.support:appcompat-v7:25.3.1'
    compile 'com.android.support:design:25.3.1'
    compile 'com.android.support:cardview-v7:25.3.1'
    compile 'com.android.support:recyclerview-v7:25.3.1'
    compile 'com.android.support:support-v4:25.3.1'
    compile 'com.android.support:palette-v7:25.3.1'
    compile 'com.google.android.gms:play-services-ads:11.6.0'
    compile 'com.google.android.gms:play-services-location:11.6.0'
    compile 'com.android.support.constraint:constraint-layout:1.0.2'
    compile 'org.apache.commons:commons-io:1.3.2'
    compile 'com.squareup.picasso:picasso:2.5.2'       
    compile 'com.anjlab.android.iab.v3:library:1.0.44'
    compile project(':adcolony-sdk-3.1.2')

    testCompile 'junit:junit:4.12'
}

根据其他问题,它与我的依赖关系有关。 This问题有完全相同的问题。该问题的第一个答案是:

  

您在项目中包含所有游戏服务。只添加你想要的那些。

如上所述,情况并非如此。

我也尝试添加:

defaultConfig {
    multiDexEnabled true
}

dexOptions {
    javaMaxHeapSize "4g"
    preDexLibraries = false
}

以上导致新错误:

Error:Execution failed for task ':app:transformClassesWithJarMergingForDebug'

还有一个关于this的问题,根据我应该的答案

  

建造/清洁项目

我已经尝试了所有的答案,我仍然无法将此错误消失,是否有一些我可以忽略的东西?任何帮助都将受到极大的欢迎。

我解决了这个问题

问题是我达到了64k方法限制 - More info.

  

Android应用(APK)文件包含Dalvik可执行文件(DEX)文件形式的可执行字节码文件,其中包含用于运行应用的已编译代码。 Dalvik可执行规范将单个DEX文件中可引用的方法总数限制为65,536,包括您自己的代码中的Android框架方法,库方法和方法。在计算机科学的背景下,术语Kilo,K表示1024(或2 ^ 10)。由于65,536等于64 X 1024,因此该限制称为“64K参考限制”。

如果你的minSdkVersion设置为21或更高,你需要做的就是在你的模块级build.gradle文件中将multiDexEnabled设置为true,如下所示:

android {
    defaultConfig {
        ...
        minSdkVersion 21 
        targetSdkVersion 26
        multiDexEnabled true
    }
    ...
}

但是,如果您的minSdkVersion设置为20或更低,则必须使用multidex支持库,如下所示:

android {
    defaultConfig {
        ...
        minSdkVersion 15 
        targetSdkVersion 26
        multiDexEnabled true
    }
    ...
}

dependencies {
  compile 'com.android.support:multidex:1.0.1'
}

主要问题是我试图将jar个文件添加到我的libs文件夹中,这样做达到了最大方法限制。添加compile 'com.android.support:multidex:1.0.1'multiDexEnabled true后,我的问题就解决了。

感谢您的回答和评论。

1 个答案:

答案 0 :(得分:0)

在gradle文件下方添加此行。

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

如果这没有解决问题,那么尝试使用相同版本的所有支持库v4或v7

希望这会有所帮助:)