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

时间:2015-11-15 08:45:40

标签: android android-studio android-gradle multidex android-multidex

错误

  

错误:任务':app:transformClassesWithDexForDebug'执行失败。   com.android.build.transform.api.TransformException:com.android.ide.common.process.ProcessException:org.gradle.process.internal.ExecException:Process' command' / usr / lib / jvm / JAVA -8-预言/ 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依赖项引起的,但我可能错了(我真的希望错了,因为所有这些包都非常重要!)。

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

29 个答案:

答案 0 :(得分:49)

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

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

例如,如果您仅使用地图和g + signin,则需要更改

 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'

来自doc:

  

在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

答案 1 :(得分:24)

尝试

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)Property |描述javaMaxHeapSize |调用dx时设置-JXmx *值。格式应遵循1024M模式。 preDexLibraries |是否预先dex库。这可以改善增量构建,但是干净的构建可能会更慢。

答案 2 :(得分:18)

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

  defaultConfig {
    multiDexEnabled true
}

答案 3 :(得分:15)

这是关于Multidex的问题。您可以尝试删除一些jar,或者您可以尝试这样: http://developer.android.com/tools/building/multidex.html#mdex-gradle 在app 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>

答案 4 :(得分:13)

在此{/ 1}} multiDexEnabled true的{​​{1}}中添加default config file

build.gradle

答案 5 :(得分:5)

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

build.gradle

中的

defaultConfig {
        multiDexEnabled true
    }

 dexOptions {
        javaMaxHeapSize "4g"
    }

答案 6 :(得分:3)

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

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

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

答案 7 :(得分:2)

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

例如:

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

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

答案 8 :(得分:1)

通过更改

  

compile&#39; com.google.android.gms:play-services:8.1.0&#39;

只需要文件,问题就可以解决了 由于build.gradle文件中的文件超出而生成此问题。

答案 9 :(得分:1)

进入构建 - &gt;

清洁项目 - &gt;

运行项目:完成

为我的Android 5.1工作

答案 10 :(得分:1)

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

答案 11 :(得分:1)

使用离子,我能够使用以下命令修复此错误: “科尔多瓦干净”

答案 12 :(得分: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工作室。 没有别的事情会失败。

答案 13 :(得分:1)

不需要multitex。对于&#34; old&#34;在Android Studio 2.1中打开的项目正在将gradle插件版本从1.5.0更改为2.1.0,这为我解决了问题。

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

答案 14 :(得分:1)

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

当我收到错误时,我已经打开了3个Android工作室,在我关闭2后我没有收到任何错误。

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

答案 15 :(得分:1)

可能的帮助

在用完所有其他选项后,作为绝对的最后手段

我删除了所有记忆棒(RAM)但只有一个。我现在的记忆力较少,但它再次起作用。我不能假装知道为什么构建过程总是发现损坏的内存,或者如果100%是根本原因 - 在其他方面系统运行正常。也许这是值得尝试的,祝你好运。

答案 16 :(得分:1)

我在Android Studio建议时将Gradle插件从版本1.2.3更新到1.5.0时出现此问题。在其web page中,1.5.0似乎是测试版。

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

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

答案 17 :(得分:0)

显然我通过结合所有解决方案解决了这个问题 在android清单中添加以下内容:

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

关注build.gradle应用模块

android {
...

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

        multiDexEnabled true

   }

}

答案 18 :(得分:0)

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

ionic cordova platform remove android
ionic cordova platform add android

答案 19 :(得分:0)

就我而言:-

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

答案:-

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

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

此软件包引起了问题。

答案 20 :(得分:0)

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

答案 21 :(得分:0)

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

并再次使用react-native run-android

进行构建

答案 22 :(得分:0)

  1. 执行:cordova插件rm cordova-plugin-compat --force
  2. 执行:cordova插件添加cordova-plugin-compat@1.2
  3. 更改:项目文件夹中的config.xml使用&#34; 6.2.3&#34;不是&#34; ^ 6.2.3&#34;, 然后删除platforms / android文件夹,重新运行cordova prepare android,以及cordova build android

答案 23 :(得分:0)

移动文件底部的apply plugin声明:

应用插件:&#39; com.google.gms.google-services&#39;

答案 24 :(得分:0)

对于所有面临这个问题的人/将来都会面对它:

点击构建菜单 - &gt;选择Build Variant - &gt;恢复为'debug'

模块中的debuggable退出:app     / * debug {                                                            debuggable true                                                         } * /

转到“构建”菜单 - &gt;生成签名的apk - &gt; .... - &gt;建立它

答案 25 :(得分:0)

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

答案 26 :(得分: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=

我发现在increasing the runtime resources of the virtual machine之后,此问题已得到解决。

答案 27 :(得分:-1)

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

  

targetCompatibility ='1.7'   sourceCompatibility ='1.7'

答案 28 :(得分:-1)

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