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


74

错误

错误:任务':app:transformClassesWithDexForDebug'的执行失败。com.android.build.transform.api.TransformException:com.android.ide.common.process.ProcessException:org.gradle.process.internal.ExecException:处理'command'/ 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,则它将编译。但是,然后我无法调试我的应用程序。

我检查了另一个问题:在为Android实施Google登录时,任务':app:transformClassesWithDexForDebug'的执行失败,但是只有一个答案,但不幸的是,实现它并不能解决问题。

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

请帮助我解决此错误。非常感谢!


1
您可以发布错误的完整堆栈跟踪信息吗?为此,请运行./gradlew clean build --full-stacktrace
Alex Lipov

2
@Alex我尝试了ur命令,但同时失败,并且给了我相同的错误org.gradle.api.tasks.TaskExecutionException:任务':app:transformClassesWithDexForDebug'的执行失败。
Antwan

Answers:


50

只需更正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包编译到您的应用中。在某些情况下,这样做会使将应用程序中的方法(包括框架API,库方法和您自己的代码)的数量保持在65,536个限制以下变得更加困难。

从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'

整个列表可以在这里找到


25

尝试

dexOptions {
    javaMaxHeapSize "4g"
    preDexLibraries = false
}

我不知道原因 关于某事preDexLibrarieshttps : //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模式。preDexLibraries | 是否预索引库。这可以改善增量构建,但是干净的构建可能会更慢。


您能解释一下这是什么吗?
Saket Jain

我不知道,我只是在multiDexEnabled中看到它,或者您可以清理您的项目并删除构建文件夹。
微小的阳光

好吧,请您提供您的消息来源?
Saket Jain 2015年

1
以下资源应有助于解释此代码的作用:link 属性| 说明javaMaxHeapSize | 调用dx时设置-JXmx *值。格式应遵循1024M模式。preDexLibraries | 是否预索引库。这可以改善增量构建,但是干净的构建可能会更慢。
lgdroid57

最终,这个答案是唯一对我有用的答案!thnx
Amr Mohammed


15

这是有关Multidex的问题。您可以尝试删除一些jar,也可以这样尝试: 在应用程序build.gradle中http://developer.android.com/tools/building/multidex.html#mdex-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>

14

multiDexEnabled truedefault config filebuild.gradle这样

    defaultConfig {
        multiDexEnabled true
       }

2
这对我有用。有人可以解释为什么这样做有效。
Prakash


5

我的响应有点老,但是对我来说,唯一的解决方案是在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'
            }
        }
    }
}

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

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


2

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

例如具有:

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

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

就我而言,我必须将其他com.google库的版本更新为最新版本以解决此问题。
曼努埃尔

1

当我按照Android Studio的建议将Gradle插件从1.2.3版本更新到1.5.0时遇到了这个问题。在其网页上,1.5.0似乎是beta版。

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

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


我遇到了Gradle 1.2.2的问题,所以不确定它是否依赖于gradle?
Saket Jain

@SaketJain您是否尝试过其他版本?您是否在64位计算机上运行64位Java?有很多可能会影响的变量。
米格尔·帕拉西奥

顺便说一句,我尝试了其他答案(改变堆大小并尽可能减少依赖性)中提出的解决方法,但是它们都不对我有用。
Miguel Palacio

我尝试了其他答案,但是不,它们对我没有用。这就是为什么我没有接受任何答案的原因。
Saket Jain

1

可能的帮助

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

我删除了所有的记忆棒(RAM),只有一个。我现在的内存较少,但是又可以正常工作了。我无法假装不知道为什么构建过程总是会发现损坏的内存,或者这是否是100%的根本原因-从其他方面来说,系统运行良好。也许这是可以尝试的方法,祝您好运。


1

对我来说,关闭所有其他Android Studio即可解决问题。

遇到错误时,我已经开设了3个android工作室,而关闭2个工作室后,我没有收到任何错误。

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


1

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

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

1

我解决了!它是配置和更新的集合。将这些变量添加到适合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 Studio。没有别的会失败。


1

通过改变

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

仅需要的文件,就可以解决该问题。由于超出了build.gradle文件中的文件,所以产生了此问题。


1

显然,我通过组合所有解决方案来解决此问题,这些解决方案在android manifest中添加了以下内容:

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

以下build.gradle应用模块

android {
...

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

        multiDexEnabled true

   }

}





0

当我通过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=

我发现增加虚拟机的运行时资源后,此问题已解决。


0

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


0

对于所有遇到此问题的人/将来都会面对它:

点击构建菜单->选择构建变体->恢复为“调试”

关于模块中可调试的结果:app / * debug {debuggable true} * /

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



0
  1. 执行:cordova插件rm cordova-plugin-compat --force
  2. 执行:cordova插件添加cordova-plugin-compat@1.2
  3. 更改:项目文件夹中的config.xml使用“ 6.2.3”而不是“ ^ 6.2.3”,然后删除platform / android文件夹,重新运行cordova准备android,然后cordova编译android

0

不要发疯我只是清理,然后重建项目,错误消失了


0

在Android设备上运行Ionic项目时出现此错误,我通过删除和添加android平台解决了该问题:

ionic cordova platform remove android
ionic cordova platform add android

0

就我而言:

  • 出了什么问题:任务':app:multiDexListDebug'的执行失败。

回答:-

我只是删除了react-native-firebase将位于node_modules文件夹,就是这样我可以成功运行该应用程序。

还有一件别忘了删除,react-native-firebase但不要删除@react-native-firebasepackage.json文件。所以下次您运行npm I或时yarn。这不会在您的应用中安装。

该程序包引起了问题。


-1

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

targetCompatibility ='1.7'sourceCompatibility ='1.7'

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.