错误:任务“:app:transformClassesWithDexForDebug”执行失败

Posted

技术标签:

【中文标题】错误:任务“:app:transformClassesWithDexForDebug”执行失败【英文标题】:Error:Execution failed for task ':app:transformClassesWithDexForDebug' 【发布时间】:2016-02-16 12:27:06 【问题描述】:

错误

错误:任务 ':app:transformClassesWithDexForDebug' 执行失败。 com.android.build.transform.api.TransformException:com.android.ide.common.process.ProcessException:org.gradle.process.internal.ExecException:进程'命令'/usr/lib/jvm/java-8-oracle /bin/java'' 以非零退出值 1 结束

我的应用 gradle 文件:

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

android 
    compileSdkVersion 23
    buildToolsVersion "23.0.1"
    defaultConfig 
        applicationId 'Hidden application ID'
        minSdkVersion 15
        targetSdkVersion 23
        versionCode 1
        versionName "1.0"
        multiDexEnabled true
    
    buildTypes 
        debug 
            minifyEnabled false
            proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
        
        release 
            minifyEnabled true
            proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
        
    
    lintOptions 
        disable 'InvalidPackage'
    
    packagingOptions 
        exclude 'META-INF/services/javax.annotation.processing.Processor'
    
    productFlavors 
    


repositories 
    mavenCentral()


dependencies 
    compile fileTree(include: ['*.jar'], dir: 'libs')
    compile 'com.android.support:multidex:1.0.1'
    compile 'com.android.support:appcompat-v7:23.1.1'
    compile 'com.android.support:design:23.1.1'
    compile 'com.android.support:cardview-v7:23.1.1'
    compile 'com.jakewharton:butterknife:7.0.1'
    compile 'com.mcxiaoke.volley:library-aar:1.0.0'
    compile 'com.google.android.gms:play-services:8.1.0'
    compile 'com.facebook.android:facebook-android-sdk:4.7.0'
    compile 'com.googlecode.libphonenumber:libphonenumber:7.2.1'
    compile 'com.getbase:floatingactionbutton:1.10.1'
    compile 'com.android.support:preference-v7:23.1.1'

在调试时,如果我将 minifyEnabled 设置为 true,那么它会编译。但是,我无法调试我的应用程序。

我检查了另一个问题:Execution failed for task ':app:transformClassesWithDexForDebug' while implementing Google sign in for Android,但只有一个答案,不幸的是,实施它并不能解决问题。

AFAIK,错误是由于添加了太多 Gradle 依赖项引起的,但我可能错了(我真的希望是错的,因为所有这些包都非常重要!)。

请帮我解决这个错误。非常感谢!

【问题讨论】:

您可以发布错误的完整堆栈跟踪吗?为此,请运行 ./gradlew clean build --full-stacktrace @Alex 我尝试了你的命令,但它同时失败了,它给了我同样的错误 org.gradle.api.tasks.TaskExecutionException: Execution failed for task ':app:transformClassesWithDexForDebug'。跨度> 请仔细阅读我的答案以及这个*** Link接受的答案 【参考方案1】:

只需更正 Google Play 服务依赖项:

您的项目中包含所有播放服务。只添加你想要的。

例如,如果您只使用地图和 g+ 登录,则更改

 compile 'com.google.android.gms:play-services:8.1.0'

compile 'com.google.android.gms:play-services-maps:8.1.0'
compile 'com.google.android.gms:play-services-plus:8.1.0'

来自文档:

在 6.5 之前的 Google Play 服务版本中,您必须编译 整个 API 包到您的应用程序中。在某些情况下,这样做会使 在您的应用程序中保持方法的数量变得更加困难(包括 65,536 下的框架 API、库方法和您自己的代码) 限制。

从 6.5 版开始,您可以选择性地编译 Google Play 服务 API 到您的应用程序中。例如,仅包含 Google Fit 和 Android Wear API,在您的 build.gradle 文件: 编译 'com.google.android.gms:play-services:8.3.0' 使用这些行:

编译“com.google.android.gms:play-services-fitness:8.3.0” 编译'com.google.android.gms:play-services-wearable:8.3.0'

Whole list can be found here.

【讨论】:

【参考方案2】:

试试

dexOptions 
    javaMaxHeapSize "4g"
    preDexLibraries = false

我不知道原因。 关于preDexLibraries 的一些事情: https://sites.google.com/a/android.com/tools/tech-docs/new-build-system/tips

根据@lgdroid57:

以下资源应该有助于解释这段代码的作用:link(http://google.github.io/android-gradle-dsl/current/com.android.build.gradle.internal.dsl.DexOptions.html) 属性 |说明 javaMaxHeapSize |调用 dx 时设置 -JXmx* 值。格式应遵循 1024M 模式。 preDex 库 |是否预先 dex 库。这可以改进增量构建,但干净的构建可能会更慢。

【讨论】:

你能解释一下这是做什么的吗? 我不知道。我只是在 multiDexEnabled 中看到。或者你可以清理你的项目并删除构建文件夹。 好的,能提供你的出处吗? 以下资源应该有助于解释这段代码的作用:link Property |说明 javaMaxHeapSize |调用 dx 时设置 -JXmx* 值。格式应遵循 1024M 模式。 preDex 库 |是否预先 dex 库。这可以改进增量构建,但干净的构建可能会更慢。 最后这个答案是唯一对我有用的!谢谢【参考方案3】:

尝试将multiDexEnabled true 添加到您的应用build.gradle 文件中。

  defaultConfig 
    multiDexEnabled true

【讨论】:

这个答案足以解决我的问题。【参考方案4】:

这是 Multidex 的问题。您可以尝试删除一些罐子,或者您可以尝试这样: http://developer.android.com/tools/building/multidex.html#mdex-gradle 在应用程序 build.gradle 中:

    defaultConfig 
        ...
        minSdkVersion 14
        targetSdkVersion 21
        ...

        // Enabling multidex support.
        multiDexEnabled true
    
dependencies 
  compile 'com.android.support:multidex:1.0.0'

在您的清单中:

<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
    package="com.example.android.multidex.myapplication">
    <application
        ...
        android:name="android.support.multidex.MultiDexApplication">
        ...
    </application>
</manifest>

【讨论】:

【参考方案5】:

像这样在default config filebuild.gradle 中添加multiDexEnabled true

    defaultConfig 
        multiDexEnabled true
       

【讨论】:

这对我有用。有人可以解释为什么这是有效的吗?【参考方案6】:

对我个人有用的解决方案是:

build.gradle

defaultConfig 
        multiDexEnabled true
    

 dexOptions 
        javaMaxHeapSize "4g"
    

【讨论】:

【参考方案7】:

我的回复有点旧,但我唯一的解决方案是在 defaultConfig 中添加 multiDexEnabled 选项,如下所示:

    android
        ...
        defaultConfig
            ...
            multiDexEnabled true
        
    

如果这对您不起作用,请尝试添加这段代码:

    configurations.all 
    resolutionStrategy.eachDependency  DependencyResolveDetails details ->
        def requested = details.requested
        if (requested.group == 'com.android.support') 
            if (!requested.name.startsWith("multidex")) 
                details.useVersion '26.1.0'
            
        
    

我的错误与不同库版本的问题有关,这就是诀窍。

我希望这可以帮助某人:)

【讨论】:

【参考方案8】:

确保您没有使用两个版本的 google 服务。

例如有:

compile 'com.google.firebase:firebase-messaging:9.8.0'

compile 'com.google.firebase:firebase-ads:10.0.0'

【讨论】:

就我而言,我必须将其他 com.google 库的版本更新到最新版本才能解决问题。【参考方案9】:

当我按照 Android Studio 的建议将 Gradle 插件从版本 1.2.3 更新到 1.5.0 时,我遇到了这个问题。在其web page 中,1.5.0 似乎是测试版。

老实说,我不知道1.5.0版本有什么优势,但我宁愿等到有稳定版本。

当然,回到 1.2.3 解决了这个问题。

【讨论】:

我正面临 Gradle 1.2.2 的问题,所以不确定它是否依赖于 gradle? @SaketJain 你试过其他版本吗?您是否在 64 位机器上运行 64 位 Java?有许多变量可能会影响。 顺便说一句,我尝试了其他答案中提出的解决方法(更改堆大小并尽可能减少依赖关系),但没有一个对我有用。 我尝试了其他答案,但不,它们对我不起作用。这就是为什么我没有接受任何答案。【参考方案10】:

可能的帮助

在用尽所有其他选项后作为绝对的最后手段尝试

我移除了所有记忆棒 (RAM),但只有一个。我现在的内存较少,但它又可以工作了。我不能假装知道为什么构建过程总是发现损坏的内存,或者这是否是 100% 的根本原因——在其他方面系统运行良好。也许这是要尝试的东西,祝你好运。

【讨论】:

【参考方案11】:

对我来说,关闭所有其他 Android Studio 解决了这个问题。

收到错误时我打开了 3 个 android studio,关闭 2 个后我没有收到任何错误。

不需要添加任何与multiDex相关的代码!

【讨论】:

【参考方案12】:

不需要多线程。对于在 Android Studio 2.1 中打开的“旧”项目,它将 gradle 插件版本从 1.5.0 更改为 2.1.0,这为我解决了问题。

buildscript 
    dependencies 
        classpath 'com.android.tools.build:gradle:2.1.0'
    

【讨论】:

【参考方案13】:

我解决了!它是配置和更新的集合。 在 build.gradle

中适合的位置添加这些变量
android 
packagingOptions 
    exclude 'META-INF/ASL2.0'
    exclude 'META-INF/LICENSE'
    exclude 'META-INF/NOTICE'

dexOptions 
    javaMaxHeapSize "4g"

defaultConfig 
    multiDexEnabled true

compileOptions 
    sourceCompatibility JavaVersion.VERSION_1_7
    targetCompatibility JavaVersion.VERSION_1_7


然后更新到 Java 8 http://tecadmin.net/install-oracle-java-8-jdk-8-ubuntu-via-ppa/,一切都会解决! 这是因为 buildTools 更新和新的 Android 工作室。 没有其他事情会失败。

【讨论】:

【参考方案14】:

通过改变

编译'com.google.android.gms:play-services:8.1.0'

只需要文件即可解决问题 此问题是由于超出 build.gradle 文件中的文件而产生的。

【讨论】:

【参考方案15】:

显然我通过结合所有解决方案解决了这个问题 将以下内容添加到 android manifest:

<application
...
        android:name="android.support.multidex.MultiDexApplication" >
...
</application>

以下是 build.gradle 应用模块

android 
...

    dexOptions 
        javaMaxHeapSize "4g"
        preDexLibraries = false
    
...
    defaultConfig 

        multiDexEnabled true

   


【讨论】:

【参考方案16】:

进入构建 -> 清理并再次运行您的应用

【讨论】:

【参考方案17】:

进入构建 ->

清理项目 ->

运行项目:完成

为我开发 android 5.1

【讨论】:

【参考方案18】:

只需删除/android/android/app 中的build 文件夹

然后使用react-native run-android再次构建

【讨论】:

你能查一下this的问题吗?【参考方案19】:

使用 ionic,我能够使用以下命令修复此错误: “科尔多瓦清洁”

【讨论】:

【参考方案20】:

当我通过 SSH 将编译任务委托给 Google Compute Engine 时遇到了这个问题。如崩溃日志所示,此问题的性质是内存错误;具体来说,当 Java 在构建期间用完可使用的虚拟内存时会抛出此错误。

重要: 当 gradle 由于这个内存错误而崩溃时,在你的编译任务失败后,gradle 守护进程仍然运行很长时间。任何重新尝试再次使用 gradle 构建都将分配一个新的 gradle 守护进程。您必须确保使用gradlew --stop正确处理任何崩溃的实例。

hs_error_pid 崩溃日志指出以下解决方法:

# There is insufficient memory for the Java Runtime Environment to continue.
# Possible reasons:
#   The system is out of physical RAM or swap space
#   In 32 bit mode, the process size limit was hit
# Possible solutions:
#   Reduce memory load on the system
#   Increase physical memory or swap space
#   Check if swap backing store is full
#   Use 64 bit Java on a 64 bit OS
#   Decrease Java heap size (-Xmx/-Xms)
#   Decrease number of Java threads
#   Decrease Java thread stack sizes (-Xss)
#   Set larger code cache with -XX:ReservedCodeCacheSize=

发现increasing the runtime resources of the virtual machine之后,这个问题就解决了。

【讨论】:

【参考方案21】:

我遇到了类似的错误。我只是通过切换目录来修复它。从我的 git 存储库中再次克隆我的项目,将其导入 android studio 并构建它。似乎 Android Studio 在构建项目时生成的目录/文件之一可能已损坏。删除项目中所有 Android Studio 生成的文件或做我所做的可以解决问题。希望这会有所帮助。

【讨论】:

【参考方案22】:

致所有遇到此问题/将在未来面对它的人:

点击 Build menu -> Select Build Variant -> restore to 'debug'

关于模块中可调试的结果:app /* 调试 可调试真 */

转到构建菜单 -> 生成签名的 apk -> .... -> 构建它

【讨论】:

【参考方案23】:

将应用插件声明移到文件底部:

应用插件:'com.google.gms.google-services'

【讨论】:

【参考方案24】:
    执行:cordova plugin rm cordova-plugin-compat --force 执行:cordova plugin add cordova-plugin-compat@1.2 更改:项目文件夹中的 config.xml 使用“6.2.3”而不是“^6.2.3”, 然后删除platforms/android文件夹,重新运行cordova prepare android,然后cordova build android

【讨论】:

【参考方案25】:

别发疯 我只是清理,然后重建项目并且错误消失了

【讨论】:

【参考方案26】:

我在 Android 设备上运行 Ionic 项目时遇到此错误,我通过删除和添加 android 平台解决了它:

ionic cordova platform remove android
ionic cordova platform add android

【讨论】:

【参考方案27】:

就我而言:-

出了什么问题: 任务“:app:multiDexListDebug”执行失败。

答案:-

我刚刚删除了react-native-firebase文件夹中的node_modules文件夹,这样我就可以成功运行应用程序了。

还有一件事不要忘记在 package.json 文件中删除 react-native-firebase 而不是 @react-native-firebase。这样下次你运行npm Iyarn 时。这不会安装在您的应用中。

这个包导致了这个问题。

【讨论】:

【参考方案28】:

如果使用 java 8 或更高版本,则问题是我们使用的库与 java 8 不兼容。因此,要解决此问题,请将这两行添加到您的应用程序的 build.gradle 和所有子模块(如果有)中。 (Android Studio 在错误信息中清楚地展示了如何做到这一点)

targetCompatibility = '1.7' sourceCompatibility = '1.7'

【讨论】:

【参考方案29】:

只需从android平台删除.gradle文件夹,然后重新构建项目,Android Studio会再次生成。

【讨论】:

以上是关于错误:任务“:app:transformClassesWithDexForDebug”执行失败的主要内容,如果未能解决你的问题,请参考以下文章

任务发送至错误打印机

当我使用发送邮件任务时,SSIS 包显示错误

Visual Studio 错误:“无法激活后台任务。后台任务激活失败。”

我收到以下错误:[GraphQL 错误]:消息:任务

Android错误:错误:任务':app:transformClassesWithDexForDebug'的执行失败

错误:打字稿任务检测没有为以下配置贡献任务