繁体   English   中英

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

[英]Error:Execution failed for task ':app:transformClassesWithDexForDebug'

错误

错误:任务“: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 implementation Google sign in for Android ,但只有一个答案,不幸的是,实现它并没有解决问题。

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

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

只需更正 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'

整个列表可以在这里找到

尝试

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 | 是否预 dex 库。 这可以改进增量构建,但干净的构建可能会更慢。

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

  defaultConfig {
    multiDexEnabled true
}

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

multiDexEnabled truedefault config filebuild.gradle这样

    defaultConfig {
        multiDexEnabled true
       }

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

build.gradle

defaultConfig {
        multiDexEnabled true
    }

 dexOptions {
        javaMaxHeapSize "4g"
    }

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

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

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

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

例如有:

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

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

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

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

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

可能的帮助

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

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

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

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

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

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

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

我解决了! 它是配置和更新的集合。 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。 没有其他东西会失败。

通过改变

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

只需要需要的文件,问题就可以解决这个问题是由于build.gradle文件中的文件过多而产生的。

显然,我通过将所有解决方案添加到 android manifest 来解决这个问题:

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

以下是 build.gradle 应用模块

android {
...

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

        multiDexEnabled true

   }

}

进入 Build -> Clean 并再次运行您的应用程序

进入构建->

清洁项目->

运行项目:完成

为我在 android 5.1 上工作

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

并使用react-native run-android再次构建

使用离子,我能够使用以下命令修复此错误:“cordova clean”

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

我发现在增加虚拟机的运行时资源后,这个问题得到了解决。

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

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

单击 Build 菜单 -> 选择 Build Variant -> 恢复到“调试”

在模块中对 debuggable 的评论:app /* debug { debuggable true }*/

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

移动文件底部的应用插件声明:

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

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

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

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

ionic cordova platform remove android
ionic cordova platform add android

就我而言:-

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

回答:-

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

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

这个包导致了这个问题。

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

目标兼容性 = '1.7' 源兼容性 = '1.7'

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM