com.android.build.transform.api.TransformException

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

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

也join到项目构buildgradle中:

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

也添加插件到应用程序构buildgradle:

 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 

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

  defaultConfig { multiDexEnabled true } 

编辑:

先试试史蒂夫的回答 。 如果它频繁发生或者第一步没有帮助multiDexEnabled可能会有所帮助。 对于那些喜欢深入挖掘的人来说,这里有几个相似的问题(有更多的答案):

:app:dexDebug ExecException用非零的退出值2结束

错误:任务':app:dexDebug'的执行失败。 com.android.ide.common.process.ProcessException

另一件要注意的是,你不使用

 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' 

我只需要清理我的项目,然后成功build立之后。

当我在项目中添加一些新的方法时,这个错误开始出现。 我知道我远没有接近65k的方法限制,并且不想为我的项目启用multiDex支持,只要我能帮上忙。

我通过增加可用于:app:transformClassesForDexForDebug任务的内存来解决这个问题。 我通过在gradle.build指定javaMaxHeapSize来做到这gradle.build

gradle.build

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

在对这个问题的其他常见解决scheme没有成功之后,我尝试了这个方法:

  • 运行一个项目clean
  • 手动从我的项目中删除/app/build/build目录
  • 使Gradlecaching无效并重新启动Android Studio

错误

错误:任务>':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任务的内存可能会导致内存链接较低的系统出现性能问题。

在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,使得在构build过程中发现其他实际问题

你可以看到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> 

我正在使用AS 1.5.1,遇到同样的问题。 但是只是清理这个项目就不行,所以我试了一下。

  • 清洁的项目
  • 重新启动AS
  • 同步项目

这与我工作,所以我希望这有助于。

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

我有同样的问题,当我通过git回滚到旧版本,并且该版本有一个第三方api的以前的.jar库,由于某种原因,原来这两个相同的SDK的jar,只是不同的版本在/ libs文件夹。

首先删除中间文件您的应用程序文件夹\应用程序\build设\中间体或清理您的项目,然后重build。

Thent补充

 multiDexEnabled true 

 defaultConfig { multiDexEnabled true } 

这对我有用

在我的情况下,发生exception,因为所有谷歌播放服务扩展不具有相同的版本如下

  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' 

我解决了下一个:

我configuration了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千兆字节。

如果您使用的是最新的gradle版本,即classpath 'com.android.tools.build:gradle:1.5.0' and classpath 'com.google.gms:google-services:1.4.0-beta3' ,则尝试更新最新从SDKpipe理器中支持respository并重build整个项目。

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

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

如果不同的依赖关系具有相同的jar也会导致此构build错误。

例如:

 compile('com.ab:library1'); compile('com.cd:library2'); 

如果“library1”和“library2”有一个名字为xxx.jar jar xxx.jar ,会出现这样的错误。

它发生在我身上,因为Eclipse内存泄漏。 我不得不重新启动我的电脑。

我改变了几个PNG和build中的编号,现在我明白了。 没有任何清洁和重新启动的帮助。 禁用即时运行为我修复。 因人而异

我有相同的select,一旦我closures即时运行,它在我的API16设备上工作得很好,但在API24设备,它运行正常与即时运行。

希望这可以帮助有同样问题的人

只需转到生成 – 编辑生成types – 属性选项卡 – 生成types版本并将其降级到版本23.0.1。 点击确定。 这适用于android studio 1.5。 它为我工作。

这个代码解决了问题

 defaultConfig { multiDexEnabled true } 

为了实现谷歌login最简单的方式访问: 谷歌loginAndroid

也试试

 dexOptions { javaMaxHeapSize "4g" } 

也为不同的服务保持相同的版本号。

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

 defaultConfig { multiDexEnabled true } 

local.properties

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

提及依赖:

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

清洁和重build。

写的答案是在gradle把defaultConfig {multiDexEnabled true}然后在清单中的应用程序名称 android:name =“android.support.multidex.MultiDexApplication”希望这个答案是一个人的hellpful