【问题标题】:Error:Execution failed for task ':app:transformClassesWithDexForDebug' in android studio错误:任务':app:transformClassesWithDexForDebug'在android studio中执行失败
【发布时间】:2016-09-26 15:26:46
【问题描述】:

我正在将我的项目从 eclipse 转移到 Android Studio。在运行我的一个应用程序时,我收到以下错误。无法找到任何解决方案。我也启用了multidex。

错误:任务执行失败 ':app:transformClassesWithDexForDebug'。 com.android.build.api.transform.TransformException:java.lang.RuntimeException:com.android.ide.common.process.ProcessException:java.util.concurrent.ExecutionException:com.android.ide.common.process.ProcessException: org.gradle.process.internal.ExecException: Process 'command 'C:\Program Files\Java\jdk1.7.0_79\bin\java.exe'' 以非零退出值 1 结束

我的 gradle 文件也在下面

apply plugin: 'com.android.application'
android {
compileSdkVersion 23
buildToolsVersion "23.0.3"
defaultConfig {
    applicationId "com.myapp"
    minSdkVersion 9
    targetSdkVersion 21
    multiDexEnabled true
}buildTypes {
    release {
        minifyEnabled true
        proguardFiles getDefaultProguardFile('proguard- android.txt'), 'proguard-project.txt', 'proguard-google-api-client.txt'
     }
   }
 }
 dependencies {
 compile 'com.android.support:support-v4:23.4.0'
 compile 'com.google.android.gms:play-services:+'
 compile 'com.google.http-client:google-http-client-gson:1.20.0'
compile 'com.google.code.gson:gson:2.1'
compile 'com.android.support:appcompat-v7:23.4.0'
compile files('libs/activation.jar')
compile files('libs/additionnal.jar')
compile files('libs/android-support-v7-cardview.jar')
compile files('libs/android-support-v7-recyclerview.jar')
compile files('libs/commons-logging-1.1.1.jar')
compile 'com.google.api-client:google-api-client:1.18.0-rc'
compile 'com.google.api-client:google-api-client-android:1.18.0-rc'
compile 'com.google.api-client:google-api-client-appengine:1.18.0-rc'
compile 'com.google.http-client:google-http-client:1.18.0-rc'
compile 'com.google.http-client:google-http-client-android:1.18.0-rc'
compile 'com.google.http-client:google-http-client-appengine:1.18.0-rc'
compile 'com.google.oauth-client:google-oauth-client:1.18.0-rc'
compile 'com.google.oauth-client:google-oauth-client-appengine:1.18.0-rc'
compile files('libs/google-api-client-gson-1.18.0-rc.jar')
compile files('libs/google-api-client-jackson2-1.18.0-rc.jar')
compile files('libs/google-api-client-java6-1.18.0-rc.jar')
compile files('libs/google-api-client-servlet-1.18.0-rc.jar')
compile files('libs/google-http-client-jackson2-1.18.0-rc.jar')
compile files('libs/google-http-client-jdo-1.18.0-rc.jar')
compile files('libs/google-oauth-client-java6-1.18.0-rc.jar')
compile files('libs/google-oauth-client-jetty-1.18.0-rc.jar')
compile files('libs/google-oauth-client-servlet-1.18.0-rc.jar')
compile files('libs/GraphView-4.0.1.jar')
compile files('libs/httpclient-4.0.1.jar')
compile files('libs/httpcore-4.0.1.jar')
compile files('libs/jackson-core-2.1.3.jar')
compile files('libs/jetty-6.1.26.jar')
compile files('libs/jetty-util-6.1.26.jar')
compile files('libs/jsr305-1.3.9.jar')
compile files('libs/jxl.jar')
compile files('libs/mail.jar')
compile files('libs/transaction-api-1.1.jar')
 }

【问题讨论】:

  • 在AS最新3.2版本中,缺少资源文件也可能会导致这个问题。不知道你有没有这个问题。只是提示:aapt"finished with non-zero exit value 1 "并且不像其他版本那样明确。

标签: android android-studio runtimeexception


【解决方案1】:

错误:任务执行失败 ':app:transformClassesWithDexForDebug'。 com.android.build.api.transform.TransformException: java.lang.RuntimeException: com.android.ide.common.process.ProcessException: java.util.concurrent.ExecutionException: com.android.ide.common.process.ProcessException: org.gradle.process.internal.ExecException:进程'命令 'C:\Program Files\Java\jdk1.7.0_79\bin\java.exe'' 完成 非零退出值 1

上面的错误是由于很多原因而发生的。所以我可以说明为什么会出现这个错误以及如何解决它。

原因 1: 类文件名重复

解决方案:

当您将某些类文件重构为库项目时。那个时候你写了类文件的名字所以,仔细检查你没有任何重复的名字

原因2:当你有很多缓存内存时

解决方案:

如果你有很多缓存内存,那么这个错误就会发生,所以解决它。 转到File/Invalidate caches / Restart 然后选择Invalidate and Restart 它会清理你的缓存。

原因 3:当有内部错误或使用 beta 版本切换回稳定版本时。

解决方案:

解决方法很简单,进入构建菜单并点击Clean Project,清理后点击Rebuild Project

原因4:当你的系统配置内存不足时。

解决方案:

打开任务管理器并停止当时不常用的其他应用程序,以便释放空间并解决OutOfMemory

原因 5: 问题是您的方法计数已超过 65K。

解决方案:

打开你的项目build.gradle文件添加

defaultConfig {
        ...
        multiDexEnabled true
    }

并在依赖项中添加以下行。

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

【讨论】:

  • 如果你已经添加了 multiDexEnabled true 那么 REASON-2 可以帮助你。谢谢@Ironman,它对我有帮助。
  • @Nils 很高兴知道这一点。
  • 如何找到方法计数?
  • 感谢@Ironman 指出这些解决方案。有时即使我启用了 multiDexEnabled,我也会收到此错误,解决方案 2 对这种情况有帮助。否则我需要重新启动机器来解决此问题。
  • 使缓存无效并重新启动对我有用...伙计们第一次尝试这个选项...谢谢
【解决方案2】:

**在我的情况下,问题解决了 Instant Run DISABLE **

【讨论】:

    【解决方案3】:

    在你的 build.gradle(app level) 下检查 multidex 是否启用。如果没有像下面这样的地方

    dependecies{
    multidexEnabled true
    }
    

    检查你的 gradle.properties(app level)。如果你看到下面的代码

    #org.gradle.jvmargs=-Xmx2048m -XX:MaxPermSize=512m XX:+HeapDumpOnOutOfMemoryError -Dfile.encoding=UTF-8
    

    去掉行前的#,应该是这样的

    org.gradle.jvmargs=-Xmx2048m -XX:MaxPermSize=512m XX:+HeapDumpOnOutOfMemoryError -Dfile.encoding=UTF-8
    

    【讨论】:

      【解决方案4】:

      这可能是由于以下原因:

      1. 项目中的一个 jar 文件使用的是旧版本的 google play 服务。

      2. defaultconfig中使用multiDexEnabled true

      3. 具体说明您在依赖项中添加的类。喜欢

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

      不像编译'com.google.android.gms:play-services:+'

      【讨论】:

        【解决方案5】:

        请 将此添加到您的 gradle 文件中

        android {
        ...
        defaultConfig {
            ...
            multiDexEnabled true
            }
        }
        

        并且还在你的 gradle 中添加以下依赖项

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

        或者另一种选择是:在您的清单文件中,在应用程序标签中添加来自 multidex 支持库的 MultiDexApplication 包。

        <?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>
        

        【讨论】:

          【解决方案6】:

          我尝试了所有方法,但直到我更改了我的 JDK 版本,这个错误仍然不会消失。

          我的JDK版本是7,改到8后,错误消失了,如果没有其他问题,你可以试试。

          【讨论】:

            【解决方案7】:

            我试过这个,它对我有用。 希望它也适用于其他人。

            1. 打开 build.gradle 模块文件
            2. 将 sdkversion 从 25 降级到 24 或 23
            3. 添加“multiDexEnabled true”
            4. 评论这一行:compile 'com.android.support:appcompat-v7:25.1.0'(如果它在'dependencies'中)
            5. 同步您的项目 准备出发了。

            这里我附上了截图来解释事情。 Go through this steps

            乐于助人。

            谢谢。

            【讨论】:

            • 降级 sdkversion 是个坏主意。 Google Play 商店甚至会要求您在未来升级您的 sdkversion。
            【解决方案8】:

            或者你可以试试这个 -

            Extend your Application class with MultiDexApplication instead of Application !
            

            【讨论】:

              【解决方案9】:

              类名重复

              喜欢

              class BackGroundTask extends AsyncTask<String, Void, Void> {
              

              class BackgroundTask extends AsyncTask<String, Void, Void> {
              

              【讨论】:

                【解决方案10】:

                我已经为更多项目尝试过这个,它对我有用。请注意,该解决方案可以为您的应用配置 multidex:

                android {
                     compileSdkVersion 25
                     buildToolsVersion "25.0.1"
                
                     defaultConfig {
                           ...
                           minSdkVersion 9
                           targetSdkVersion 25
                     }
                
                     buildTypes {
                          release {
                              shrinkResources true
                              minifyEnabled true
                              proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.txt'
                          }
                     }}
                
                 dependencies {
                       compile 'com.android.support:support-v4:25.1.0'
                       compile 'com.google.android.gms:play-services:8.3.0'
                       ...
                 }
                

                【讨论】:

                  【解决方案11】:

                  感谢@Ironman 的完整回答,但是我应该根据我遇到此问题的经验添加我的解决方案。

                  在 build.gradle(模块:app)中:

                  compile 'com.android.support:multidex:1.0.1'
                  
                      ...
                  
                      dexOptions {
                              javaMaxHeapSize "4g"
                          }
                  
                      ...
                  
                      defaultConfig {
                              multiDexEnabled true
                      }
                  

                  另外,将以下内容放入 gradle.properties 文件中:

                  org.gradle.jvmargs=-Xmx4096m -XX\:MaxPermSize\=512m -XX\:+HeapDumpOnOutOfMemoryError -Dfile.encoding\=UTF-8
                  

                  我应该提一下,这些数字适用于我的笔记本电脑配置(配备 16 GB RAM 的 MacBook Pro),因此请将它们作为您的配置进行编辑。

                  【讨论】:

                    【解决方案12】:

                    临时解决办法是将下面的代码放在模块build.gradle中:

                    android { 
                        aaptOptions.cruncherEnabled = false
                        aaptOptions.useNewCruncher = false
                    }
                    

                    并同步项目。

                    【讨论】:

                      【解决方案13】:

                      我的设置截图:

                      感谢this post

                      只需在您的设置中关闭即时运行即可。您可以像我展示的那样轻松搜索关键字“即时”,它会切换到您想要的窗口。

                      【讨论】:

                        【解决方案14】:

                        就我而言,我有 2 个项目 AB。我升级到gradle 4.5

                        A 依赖于 B,但两者都引用了我的 3rd party jar

                        我遇到了这个错误

                        com.android.tools.r8.errors.CompilationError: 程序类型已经 现在:com.mnox.webservice.globals.WebServiceLightErrorHashCode

                        程序类型已经存在:com.mnox.webservice.globals.WebServiceLightErrorHashCode

                        修复它

                        1. 我删除了重复的 jar 的
                        2. 我在B build.gradle 文件中使用了api,以便在A 中引用它。

                        另一个根本原因可能是您已升级到 gradle 4.5 并在您的公共空间中使用 implementation 而不是 api build.gradle

                        【讨论】:

                          【解决方案15】:

                          值得一提的是,虽然其他人建议使用文件进行调整,但我能够通过安装缺少的插件(离子框架)来解决此问题

                          希望它对某人有所帮助。

                          cordova 插件添加 cordova-support-google-services --save

                          【讨论】:

                            【解决方案16】:

                            对我来说,解决方案是删除主目录中的 gradle 缓存文件夹 (.gradle/caches) 并重新构建。可能是由于重复的类加载问题。

                            【讨论】:

                              【解决方案17】:

                              仅适用于 Ionic 4

                              $ cordova clean
                              

                              帮我跑

                              $ ionic cordova run android --device
                              

                              【讨论】:

                                猜你喜欢
                                • 2016-12-18
                                • 2016-02-28
                                • 2017-09-01
                                • 2016-02-16
                                • 1970-01-01
                                • 2023-03-22
                                • 1970-01-01
                                相关资源
                                最近更新 更多