162

I am trying to integrate Google sign in, in my app, I added these libraries:

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

Also add this to project build gradle:

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

Also add plugin to app build gradle:

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

then add required permissions but when I try to run my app, received this error:

    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
M--
  • 25,431
  • 8
  • 61
  • 93
saeed shahini
  • 1,847
  • 2
  • 13
  • 15

25 Answers25

313

Try adding multiDexEnabled true to your app build.gradle file.

 defaultConfig {
    multiDexEnabled true
}

EDIT:

Try Steve's answer first. In case it happens frequently or first step didn't help multiDexEnabled might help. For those who love to dig deeper here is couple similar issues (with more answers):

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

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

Community
  • 1
  • 1
JuliusScript
  • 3,850
  • 1
  • 17
  • 17
146

Another thing to watch for, is that you don't use

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

That will import ALL the play services, and it'll only take little more than a hello world to exceed the 65535 method limit of a single dex APK.

Always specify only the services you need, for instance:

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'
A.Grandt
  • 2,242
  • 2
  • 20
  • 21
  • 10
    You are the best! This solved my problem. Rebuilding doesn't help in my case as mentioned in many of the solutions. As you mentioned the Google Play Services library has [a lot of subcomponents](https://developers.google.com/android/guides/setup) and they should be imported just as you've said - one by one. Many thanks, again! – Ivan Caravanio Nov 19 '15 at 11:02
  • 2
    I had this issue in the last couple of days. I thought I had only picked what I need. But, low and behold, after hours of looking I was importing all of play-services when all I wanted was play-services-ads. Definitely check your gradle dependencies people! – MCLLC Dec 20 '15 at 21:11
  • @A.Grandt could you add the [link](https://developers.google.com/android/guides/setup) Ivan has given into your answer? It contains a list of names of all subcomponents and it should be part of the answer, because it's the next step everyone has to take. – Murmel Oct 05 '16 at 13:12
136

I just had to Clean my project and then it built successfully afterwards.

Steve Ganem
  • 10,591
  • 2
  • 39
  • 32
23

This error began appearing for me when I added some new methods to my project. I knew that I was nowhere near the 65k method limit and did not want to enable multiDex support for my project if I could help it.

I resolved it by increasing the memory available to the :app:transformClassesForDexForDebug task. I did this by specifying javaMaxHeapSize in gradle.build.

gradle.build

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

I tried this after having had no success with other common solutions to this problem:

  • Running a project clean
  • Manually deleting the /app/build and /build directories from my project
  • Invalidating Gradle Cache and restarting Android Studio

Error

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

Note: increasing the memory available to the DEX task can cause performance problems on systems with lower memory - link.

Community
  • 1
  • 1
Maurice Gavin
  • 2,047
  • 1
  • 20
  • 26
8

I also faced similar issue in Android Studio 1.5.1 and gradle 1.5.0. I just have to remove unwanted libraries from dependencies which may be automatically added in my app's build.gradle file. One was : compile 'com.google.android.gms:play-services:8.4.0'. So for best practices try to only include specific play services library like for ads include only

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

Although

defaultConfig {
    multiDexEnabled true
}

this will also solve the issue, but provides with a lot of Notes in gradle console, making it confusing to find the other real issues during build

raul
  • 81
  • 1
  • 2
  • Narrowing my google api usage to just play-services-maps did the trick. Here is Google's official breakdown of the various components in the play-services API: https://developers.google.com/android/guides/setup#add_google_play_services_to_your_project – jperl Mar 27 '16 at 01:02
4

you can see the documentation of 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>
David Hackro
  • 3,652
  • 6
  • 41
  • 61
3

I'm using AS 1.5.1 and encountered the same problem. But just cleaning the project just wont do, so I tried something.

  • clean project
  • restart AS
  • Sync Project

This worked with me, so I hope this helps.

kcNeko
  • 587
  • 1
  • 7
  • 23
3

At my case change buildToolsVersion from "24" to "23.0.2", solve the problem.

Ayman Mahgoub
  • 4,152
  • 1
  • 30
  • 27
2

In my case the Exception occurred because all google play service extensions are not with same version as follows

 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'

It worked when I changed this to

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'
Uma Achanta
  • 3,669
  • 4
  • 22
  • 49
  • 1
    I didn't browse to all the answers and I didn't see yours, so ... I discovered that *this* was my case about an hour later :/ – denispyr Mar 27 '17 at 17:09
2

I resolved it with the next:

I configured multidex

In build.gradle you need to add the next one.

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'
...
}

Add the next one in local.properties

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

After that into Application class you need to add the Multidex too.

 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);
   }
}

Don't forget add the line code into Manifest.xml

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

That's it with this was enough for resolve the bug: Execution failed for task ':app:transformClassesWithDexForDebug. Check very well into build.gradle with javaMaxHeapSize "2g" and the local.properties org.gradle.jvmargs=-Xmx2048m are of 2 gigabyte.

Alex Zaraos
  • 6,443
  • 2
  • 26
  • 21
Leonardo Pineda
  • 990
  • 8
  • 10
  • 2
    Please post in English only. This looks like a good answer, it'd be a shame for it to be deleted because it's not in English. – Tunaki Feb 28 '17 at 22:30
1

I had same problem when i rolled back to old version via git, and that version had previous .jar library of one 3rd party api, and for some reason turned out that both jar of the same sdk, just different versions were in /libs folder.

lxknvlk
  • 2,744
  • 1
  • 27
  • 32
1

First Delete intermediates files YOUR APP FOLDER\app\build\intermediates OR Clean your project and then rebuild.

Thent add

multiDexEnabled true

i.e.

defaultConfig {
        multiDexEnabled true
}

It's work for me

1

I solved this issue by change to use latest buildToolsVersion

android {
    //...
    buildToolsVersion '26.0.2' // change from '23.0.2'
    //...
}
wscourge
  • 10,657
  • 14
  • 59
  • 80
Tung Duong
  • 1,156
  • 7
  • 19
1

A helpful answer if all above didn't work for you.

Go to your app gradle file,

Check all the dependency versions are mentioned with proper version code rather than any relative value like (com.example.demo:+)

Previous - implementation 'com.google.api-client:google-api-client-android:+'

After - implementation 'com.google.api-client:google-api-client-android:1.30.0'

Bishnu Das
  • 161
  • 2
  • 14
0

If you are using the latest gradle version ie classpath 'com.android.tools.build:gradle:1.5.0' and classpath 'com.google.gms:google-services:1.4.0-beta3', then try updating the latest support respository from the SDK manager and rebuild the entire project.

williamj949
  • 11,166
  • 8
  • 37
  • 51
0

If you need add this reference for cordova plugin add next line in your plugin.xml file.

<framework src="com.android.support:support-v4:+" />
Adexe Rivera
  • 414
  • 7
  • 12
0

If the different dependencies have a same jar also cause this build error.

For example:

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

If "library1" and "library2" has a same jar named xxx.jar, this will make such an error.

wqycsu
  • 290
  • 2
  • 16
0

It happened to me because of Eclipse memory leak. I had to restart my computer.

Ronen Festinger
  • 2,260
  • 1
  • 23
  • 32
0

I changed a couple of pngs and the build number in the gradle and now I get this. No amount of cleaning and restarting helped. Disabling Instant Run fixed it for me. YMMV

SteelBytes
  • 6,905
  • 1
  • 26
  • 28
0

I had the same option and as soon as I turned off Instant run, it worked fine on my API16 device, but on the API24 device it worked fine with Instant run.

Hope this helps someone having the same issue

Stillie
  • 2,647
  • 6
  • 28
  • 50
0

Simply go to Build - Edit Build Types - Properties Tab - Build Type Version and downgrade it to ver 23.0.1. Click ok. This works for android studio 1.5. It worked for me.

0

the write answer is in gradle put defaultConfig { multiDexEnabled true } then application name in manifest android:name="android.support.multidex.MultiDexApplication" wish this answer is hellpful to some one

Mosa
  • 353
  • 2
  • 16
0

this code solved problem

defaultConfig {
        multiDexEnabled true
}

For easiest way to implement google sign in visit: google sign in android

Also try

dexOptions {
        javaMaxHeapSize "4g" 
    }

Also keep same version number for different services.

user6435056
  • 717
  • 6
  • 5
0

I solved this issue by adding: In build.gradle:

defaultConfig {
    multiDexEnabled true
}

in local.properties ,

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

mention dependency:

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

Clean and Rebuild.

Crime_Master_GoGo
  • 1,641
  • 1
  • 20
  • 30
0

Incase 'Instant Run' is enable, then just disable it.