com.android.build.transform.api.TransformException

com.android.build.transform.api.TransformException

我正在尝试集成 Google 登录,在我的应用程序中,我添加了这些库:

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'

还将插件添加到应用程序构建中 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

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

 defaultConfig {
    multiDexEnabled true
}

编辑:

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

我只需要清理我的项目,然后它就成功构建了。

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

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

这将导入所有播放服务,只需要一个 hello world 就可以超过单个 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'

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

我在 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 控制台中提供了很多注释,使得在构建过程中很难找到其他真正的问题

我正在使用 AS 1.5.1 并且遇到了同样的问题。但是只是清理项目是行不通的,所以我尝试了一些。

  • 清理项目
  • 重启AS
  • 同步项目

这对我有用,希望对您有所帮助。

当我向我的项目添加一些新方法时,我开始出现此错误。我知道我离 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 缓存失效并重新启动 Android Studio

错误

Error:Execution failed for task > ':app:transformClassesWithDexForDebug'. com.android.build.api.transform.TransformException: com.android.ide.common.process.ProcessException: org.gradle.process.internal.ExecException: Process 'command '/Library/Java/JavaVirtualMachines/jdk1.8.0_45.jdk/Contents/Home/bin/java'' finished with non-zero exit value 1

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

可以查看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>

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

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

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

如果不同的依赖有相同的 jar 也会导致这个构建错误。

例如:

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

如果"library1"和"library2"有一个相同的jar名为xxx.jar,这会产生这样的错误。

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

我在 gradle 中更改了几个 png 和内部版本号,现在我明白了。没有多少清洁和重新启动帮助。禁用 Instant 运行 为我修复了它。 YMMV

在我的案例中,将 buildToolsVersion 从“24”更改为“23.0.2”,解决问题。

我有相同的选项,一旦我关闭 Instant 运行,它在我的 API16 设备上运行良好,但在 API24 设备上它与 Instant 运行 一起运行良好。

希望这对遇到同样问题的人有所帮助

首先删除中间文件 您的应用 FOLDER\app\build\intermediates 要么 清理您的项目,然后重建。

然后添加

multiDexEnabled true

defaultConfig {
        multiDexEnabled true
}

对我有用

只需转到构建 - 编辑构建类型 - 属性选项卡 - 构建类型版本并将其降级到版本 23.0.1。单击确定。 这适用于 android studio 1.5。 它对我有用。

写答案在gradle中 默认配置{ multiDexEnabled 真 } 然后 清单中的应用程序名称 android:name="android.support.multidex.MultiDexApplication" 希望这个答案对某些人有帮助

在我的例子中,异常发生是因为所有 google 播放服务扩展的版本都不相同

 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'

我用下一个解决了它:

我配置了 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

之后进入应用程序 class 您还需要添加 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 GB。

这段代码解决了问题

defaultConfig {
        multiDexEnabled true
}

要实现 google 登录的最简单方法,请访问:google sign in android

也试试

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'

清理并重建。

我通过更改为使用最新 buildToolsVersion

解决了这个问题
android {
    //...
    buildToolsVersion '26.0.2' // change from '23.0.2'
    //...
}

如果'Instant Run'是启用的,那么就禁用它。

如果上述所有方法都不适合您,这是一个有用的答案。

转到您的应用 gradle 文件,

检查所有的依赖版本都提到了正确的版本代码而不是像 (com.example.demo:+ 这样的任何相对值)

上一个 - 实施 'com.google.api-client:google-api-client-android:+'

实施后 'com.google.api-client:google-api-client-android:1.30.0'