首页 文章

com.android.build.transform.api.TransformException

提问于
浏览
157

我正在尝试整合谷歌登录,在我的应用程序中,我添加了这些库:

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

还将此添加到项目构建gradle:

classpath 'com.google.gms:google-services:1.4.0-beta3'

还为app build gradle添加插件:

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

然后添加所需的权限,但当我尝试运行我的应用程序时,收到此错误:

Error:Execution failed for task ':app:transformClassesWithDexForDebug'.
    com.android.build.transform.api.TransformException: com.android.ide.common.process.ProcessException: 
    org.gradle.process.internal.ExecException: Process 'command 'C:\Program Files\Java\jdk1.8.0\bin\java.exe'' finished with non-zero exit value 2

23 回答

  • 0

    只需转到Build - Edit Build Types - Properties选项卡 - Build Type Version并将其降级到ver 23.0.1 . 点击确定 . 这适用于android studio 1.5 . 它对我有用 .

  • 1

    写的答案是 gradle put defaultConfig 然后 application name in manifest android:name = "android.support.multidex.MultiDexApplication"希望这个答案对于某个人来说太难了

  • 0

    这段代码解决了问题

    defaultConfig {
            multiDexEnabled true
    }
    

    要以最简单的方式实施Google登录,请访问: google sign in android

    也试试

    dexOptions {
            javaMaxHeapSize "4g" 
        }
    

    同时为不同的服务保留相同的版本号 .

  • 3

    我通过添加:在 build.gradle 中解决了这个问题:

    defaultConfig {
        multiDexEnabled true
    }
    

    local.properties

    org.gradle.jvmargs=-XX\:MaxHeapSize\=512m -Xmx512m
    

    提到依赖:

    compile 'com.android.support:multidex:1.0.1'
    

    清洁和重建 .

  • 312

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

    defaultConfig {
        multiDexEnabled true
    }
    

    EDIT:

    首先尝试Steve的answer . 万一它经常发生或第一步没有帮助 multiDexEnabled 可能会有所帮助 . 对于那些喜欢深入挖掘的人来说,有几个类似的问题(有更多的答案):

    :app:dexDebug ExecException finished with non-zero exit value 2

    Error:Execution failed for task ':app:dexDebug'. com.android.ide.common.process.ProcessException

  • 22

    另一件需要注意的事情是你不使用

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

    这将导入所有的游戏服务,并且它只需要比一个hello世界超过单个dex APK的65535方法限制 .

    始终只指定您需要的服务,例如:

    compile 'com.google.android.gms:play-services-identity:8.3.0'
    compile 'com.google.android.gms:play-services-plus:8.3.0'
    compile 'com.google.android.gms:play-services-gcm:8.3.0'
    
  • 145

    我只需要清理我的项目,然后它就成功 Build 了 .

  • 0

    当我向项目中添加一些新方法时,这个错误就开始出现了 . 我知道我没有接近65k方法限制,如果我能帮助它,我不想为我的项目启用multiDex支持 .

    我通过增加 :app:transformClassesForDexForDebug 任务可用的内存来解决它 . 我通过在 gradle.build 中指定 javaMaxHeapSize 来完成此操作 .

    gradle.build

    android {
        ...
        dexOptions {
            javaMaxHeapSize "4g" //specify the heap size for the dex process
        }
    }
    

    在尝试解决此问题的其他常见解决方案后,我尝试了这个问题:

    • 正在运行项目 clean

    • 从我的项目中手动删除 /app/build/build 目录

    • 使Gradle Cache无效并重新启动Android Studio

    Error

    错误:任务执行失败>':app:transformClassesWithDexForDebug' . com.android.build.api.transform.TransformException:com.android.ide.common.process.ProcessException:org.gradle.process.internal.ExecException:处理'命令'/Library/Java/JavaVirtualMachines/jdk1.8.0_45 . jdk / Contents / Home / bin / java''以非零退出值1结束

    注意:增加DEX任务可用的内存可能会导致内存较低的系统出现性能问题 - link .

  • 0

    我在Android Studio 1.5.1和gradle 1.5.0中也遇到过类似的问题 . 我只需要从依赖项中删除不需要的库,这些库可能会自动添加到我的应用程序的build.gradle文件中 . 一个是:编译'com.google.android.gms:play-services:8.4.0' . 因此,对于最佳实践,请尝试仅包含特定的播放服务库,例如仅适用于广告

    dependencies {
        compile 'com.google.android.gms:play-services-ads:8.4.0'
    }
    

    虽然

    defaultConfig {
        multiDexEnabled true
    }
    

    这也将解决问题,但在gradle控制台中提供了大量的Notes,这使得在构建期间找到其他实际问题变得困惑

  • 0

    你可以看到Android的文档

    android {
        compileSdkVersion 21
        buildToolsVersion "21.1.0"
    
        defaultConfig {
            ...
            minSdkVersion 14
            targetSdkVersion 21
            ...
    
            // Enabling multidex support.
            multiDexEnabled true
        }
        ...
    }
    
    dependencies {
      compile 'com.android.support:multidex:1.0.0'
    }
    

    的Manifest.xml

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

    我正在使用AS 1.5.1并遇到同样的问题 . 但只是清理项目就不会这样做,所以我尝试了一些东西 .

    • 清洁项目

    • 重启AS

    • 同步项目

    这对我有用,所以我希望这会有所帮助 .

  • 1

    在我的情况下,将buildToolsVersion从“24”更改为“23.0.2”,解决问题 .

  • 0

    在我的情况下,发生了异常,因为所有Google Play服务扩展程序的版本与以下版本不同

    compile 'com.google.android.gms:play-services-plus:9.8.0'
     compile 'com.google.android.gms:play-services-appinvite:9.8.0'
     compile 'com.google.android.gms:play-services-analytics:8.3.0'
    

    当我改变它时,它工作

    compile 'com.google.android.gms:play-services-plus:9.8.0'
     compile 'com.google.android.gms:play-services-appinvite:9.8.0'
     compile 'com.google.android.gms:play-services-analytics:9.8.0'
    
  • 4

    我用下一个解决了它:

    我配置multidex
    在build.gradle中,您需要添加下一个 .

    android {
    ...
       defaultConfig {
           ...
           // Enabling multidex support.
           multiDexEnabled true
           ...
       }
       dexOptions {
          incremental true
          maxProcessCount 4 // this is the default value
          javaMaxHeapSize "2g"
       }
    ...
    }
    dependencies {
    ...
       compile 'com.android.support:multidex:1.0.1'
    ...
    }
    

    在local.properties中添加下一个

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

    之后进入Application类,您还需要添加Multidex .

    public class MyApplication extends MultiDexApplication {
    
       @Override
       public void onCreate() {
           super.onCreate();
           //mas codigo
       }
    
       @Override
       protected void attachBaseContext(Context base) {
           super.attachBaseContext(base);
           MultiDex.install(this);
       }
    }
    

    不要忘记将行代码添加到Manifest.xml中

    <application
        ...
        android:name=".MyApplication"
        ...
    />
    

    这就是它足以解决这个问题:执行失败的任务':app:transformClassesWithDexForDebug . 使用javaMaxHeapSize“2g”检查build.gradle并且local.properties org.gradle.jvmargs = -Xmx2048m是2千兆字节 .

  • 0

    当我通过git回滚到旧版本时我遇到了同样的问题,那个版本有一个第三方api的以前的.jar库,并且由于某种原因结果发现两个jar的相同的sdk,只是不同的版本都在/ libs文件夹中 .

  • 0

    首先删除中间件文件您的APP FOLDER \ app \ build \ intermediates或清理您的项目,然后重建 .

    不要补充

    multiDexEnabled true
    

    defaultConfig {
            multiDexEnabled true
    }
    

    这对我有用

  • 2

    我通过更改使用最新 buildToolsVersion 解决了这个问题

    android {
        //...
        buildToolsVersion '26.0.2' // change from '23.0.2'
        //...
    }
    
  • 1

    如果您使用的是最新的gradle版本,即 classpath 'com.android.tools.build:gradle:1.5.0' and classpath 'com.google.gms:google-services:1.4.0-beta3' ,请尝试更新最新版本从SDK管理器支持存储库并重建整个项目 .

  • 137

    如果您需要为cordova插件添加此引用,请在plugin.xml文件中添加下一行 .

    <framework src="com.android.support:support-v4:+" />
    
  • 3

    如果不同的依赖项具有相同的jar也会导致此构建错误 .

    例如:

    compile('com.a.b:library1');
    compile('com.c.d:library2');
    

    如果"library1"和"library2"具有名为 xxx.jar 的相同jar,则会出现此错误 .

  • 8

    它发生在我身上,因为Eclipse内存泄漏 . 我不得不重新启动计算机 .

  • 0

    我在gradle中更改了几个png和内部版本号,现在我得到了这个 . 没有多少清洁和重新启动有帮助 . 禁用即时运行为我修复了它 . 因人而异

  • 2

    我有相同的选项,只要我关闭即时运行,它在我的API16设备上工作正常,但在API24设备上,它可以正常运行 .

    希望这有助于有同样问题的人

相关问题